mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-11 03:00:49 +00:00
Compare commits
1278
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79f14997b4 | ||
|
|
ad1bbaca04 | ||
|
|
778c635c40 | ||
|
|
21891aecc1 | ||
|
|
92f050786f | ||
|
|
f079ef83ab | ||
|
|
5b46c42641 | ||
|
|
4972b45520 | ||
|
|
de8d0920d4 | ||
|
|
58349878fc | ||
|
|
4d64a617c3 | ||
|
|
02f405ccb1 | ||
|
|
08feff327a | ||
|
|
96723680d0 | ||
|
|
6486069a3f | ||
|
|
0d0f3e290b | ||
|
|
8c56ee5cb6 | ||
|
|
c4790e3a9e | ||
|
|
6fcc365c75 | ||
|
|
5121b2a78a | ||
|
|
32dc6ee526 | ||
|
|
8340e30313 | ||
|
|
e9c813af61 | ||
|
|
8eb44c317e | ||
|
|
b185e09245 | ||
|
|
864a2897df | ||
|
|
fc4fb89cac | ||
|
|
30cb5e36b8 | ||
|
|
61e93ccfe8 | ||
|
|
0d4965407e | ||
|
|
88268c6bcc | ||
|
|
594139b1ea | ||
|
|
da692974ab | ||
|
|
47e6f644f7 | ||
|
|
f9bfdc921a | ||
|
|
43fdbe99cd | ||
|
|
0839cadef6 | ||
|
|
fb91408a17 | ||
|
|
22f4a05149 | ||
|
|
58576f71c3 | ||
|
|
bcc1654de3 | ||
|
|
a5e15f2e1c | ||
|
|
6d8c69e3cb | ||
|
|
d4dd29194b | ||
|
|
488500acfb | ||
|
|
64a7e46506 | ||
|
|
34f32d4dcd | ||
|
|
e99fac3d01 | ||
|
|
d6ee7d1d9a | ||
|
|
9b01900321 | ||
|
|
e5ab119ad3 | ||
|
|
e2dd2d7e7a | ||
|
|
3a75666285 | ||
|
|
d03aea048f | ||
|
|
62b9a736bf | ||
|
|
63e14480fc | ||
|
|
12894cc1b6 | ||
|
|
5bd93221a8 | ||
|
|
220490222a | ||
|
|
56567d31b3 | ||
|
|
e3fd31503b | ||
|
|
9846878450 | ||
|
|
8479546920 | ||
|
|
90c6bfd259 | ||
|
|
8d63360fc4 | ||
|
|
c7d2d2a689 | ||
|
|
c2c7bc6a10 | ||
|
|
2a140b8f40 | ||
|
|
dc7ecd41ef | ||
|
|
bb29557060 | ||
|
|
b905bddda8 | ||
|
|
ad5af84a3c | ||
|
|
c5b9552891 | ||
|
|
b0ccd89450 | ||
|
|
5c32e974aa | ||
|
|
25aeeb5e25 | ||
|
|
a5acdfc5f2 | ||
|
|
3795f9d8bb | ||
|
|
0e396980a1 | ||
|
|
b5aeda4e65 | ||
|
|
f046cdf3fa | ||
|
|
21e1f5da43 | ||
|
|
f34a85bc58 | ||
|
|
d7c1980a21 | ||
|
|
73ab144544 | ||
|
|
74d3631062 | ||
|
|
64363f71f2 | ||
|
|
537900c8e8 | ||
|
|
8b35266a35 | ||
|
|
22ee7f8e3e | ||
|
|
ec1a7e02d4 | ||
|
|
7669169bd5 | ||
|
|
56d78654a3 | ||
|
|
6bcb57fc2b | ||
|
|
41284d17b0 | ||
|
|
386581b3f8 | ||
|
|
7ebca7d3b7 | ||
|
|
d07b094461 | ||
|
|
077559d3e4 | ||
|
|
f5a7694305 | ||
|
|
cfda375620 | ||
|
|
ef0c0cc62b | ||
|
|
2e50763315 | ||
|
|
319dff73fb | ||
|
|
6c2ebc6d76 | ||
|
|
11105b1eed | ||
|
|
caac5ef86d | ||
|
|
eea08af619 | ||
|
|
1a36aaf874 | ||
|
|
9a6a266b16 | ||
|
|
ad61a18a2e | ||
|
|
42f8bef053 | ||
|
|
b1cb83f3c9 | ||
|
|
7f75b5fbf4 | ||
|
|
d411d72053 | ||
|
|
f7c77f0f33 | ||
|
|
fc6d0f3264 | ||
|
|
4628a41c00 | ||
|
|
983263ce5d | ||
|
|
e18a1d7c08 | ||
|
|
248be6fcfc | ||
|
|
cf90abfc24 | ||
|
|
35343ffaec | ||
|
|
a151e632d5 | ||
|
|
3515689363 | ||
|
|
8c4d236546 | ||
|
|
a0872d6bed | ||
|
|
1c0971f3ce | ||
|
|
9c2ea13abc | ||
|
|
a034972797 | ||
|
|
7c17499079 | ||
|
|
ad90780930 | ||
|
|
c5b4115fd6 | ||
|
|
7f6018aa3a | ||
|
|
53e37ac843 | ||
|
|
c01d79b2df | ||
|
|
0986f33d1e | ||
|
|
34ff54e4c7 | ||
|
|
a7d2ac4189 | ||
|
|
970298401b | ||
|
|
fc0fe6472e | ||
|
|
59aecb1d88 | ||
|
|
fe3f66e188 | ||
|
|
8710b8c5f5 | ||
|
|
d09ad216a0 | ||
|
|
604990d6a5 | ||
|
|
b7d5d7047b | ||
|
|
c92ae847c7 | ||
|
|
97200944d2 | ||
|
|
fb607b0327 | ||
|
|
81a2bacdc4 | ||
|
|
f90214347e | ||
|
|
d831a501f7 | ||
|
|
ab056b02a1 | ||
|
|
8e43f0085b | ||
|
|
eb99c74567 | ||
|
|
af264f6f0d | ||
|
|
81c25d8700 | ||
|
|
48336bcd71 | ||
|
|
f0a0f89a2c | ||
|
|
3782a4acf2 | ||
|
|
670b075f87 | ||
|
|
97ec0f3db5 | ||
|
|
3450841dbe | ||
|
|
61c9b22536 | ||
|
|
5961160f95 | ||
|
|
cd82349b9e | ||
|
|
5df2f5df42 | ||
|
|
efff8a45e2 | ||
|
|
9255733c4f | ||
|
|
84326a9b72 | ||
|
|
aec3b4e73c | ||
|
|
4e09db1dbf | ||
|
|
78244d64af | ||
|
|
fc4ebee3e3 | ||
|
|
2a130b19fc | ||
|
|
e8a7e6a8cf | ||
|
|
7b581f6d19 | ||
|
|
32220d2e7e | ||
|
|
e989e9f70f | ||
|
|
ae5204a02a | ||
|
|
9e8a1bfcbe | ||
|
|
8aedeb8513 | ||
|
|
0d38bc9f80 | ||
|
|
5500dea5f1 | ||
|
|
93d339bede | ||
|
|
2a29db4b2b | ||
|
|
20b97141d4 | ||
|
|
5238fb0bee | ||
|
|
86ecf121e5 | ||
|
|
b1264f7172 | ||
|
|
99cd9ed713 | ||
|
|
59dc41f761 | ||
|
|
2b413f7af2 | ||
|
|
6654b31e26 | ||
|
|
b6f856fbec | ||
|
|
2f3678eb44 | ||
|
|
8d4080a6e1 | ||
|
|
29f5ce9af3 | ||
|
|
46f922bdf7 | ||
|
|
6370ae56ed | ||
|
|
a9ffac3eda | ||
|
|
5da39c99c6 | ||
|
|
58bd1ac860 | ||
|
|
ab55ed15d5 | ||
|
|
b83a0eb10c | ||
|
|
8370e1aca4 | ||
|
|
f7276af1c6 | ||
|
|
c2ed71a879 | ||
|
|
94518ca8e4 | ||
|
|
1024844a41 | ||
|
|
87db368a75 | ||
|
|
bfb72e0c08 | ||
|
|
905007669d | ||
|
|
18a99796ad | ||
|
|
adc26d2bca | ||
|
|
8c991f6a49 | ||
|
|
849a614275 | ||
|
|
70a53e10c6 | ||
|
|
e6ae0e99c3 | ||
|
|
e4210e3851 | ||
|
|
579e00d489 | ||
|
|
dfcc155c76 | ||
|
|
69fdadf1a0 | ||
|
|
10f77a5d71 | ||
|
|
4bb39ad2a5 | ||
|
|
57492cc2d4 | ||
|
|
0cd997d79c | ||
|
|
418223e2f6 | ||
|
|
17907a50cd | ||
|
|
460a4fecef | ||
|
|
8fee6ac1e2 | ||
|
|
84cd3c125c | ||
|
|
33c87b395f | ||
|
|
bdf9c4d15c | ||
|
|
a91f9fb786 | ||
|
|
9417c070f6 | ||
|
|
cb3cca21b3 | ||
|
|
67313884c1 | ||
|
|
5c8027584f | ||
|
|
85a578e029 | ||
|
|
00b9392bf5 | ||
|
|
b041abbb4e | ||
|
|
1b7e3fe2a5 | ||
|
|
71c7cdb7d9 | ||
|
|
f7aec44aee | ||
|
|
6c65d6df59 | ||
|
|
3ce27140dc | ||
|
|
900d49a553 | ||
|
|
cdb699b497 | ||
|
|
bc22352c30 | ||
|
|
f94b3012bd | ||
|
|
882a9effe6 | ||
|
|
a8a4d7944d | ||
|
|
a939717011 | ||
|
|
ec4fd02760 | ||
|
|
d43833ecff | ||
|
|
379cd5a6df | ||
|
|
db312cf18e | ||
|
|
a74463e9bd | ||
|
|
ddcc5257ac | ||
|
|
f19c2e00ec | ||
|
|
64f82f9c00 | ||
|
|
f75efcb505 | ||
|
|
60db0632dd | ||
|
|
bac905b982 | ||
|
|
9bb52c750c | ||
|
|
85a261bb85 | ||
|
|
d05c2a40d8 | ||
|
|
af1d83d783 | ||
|
|
c19fa0bbde | ||
|
|
ba6c82eee9 | ||
|
|
b3fc86b5f4 | ||
|
|
933d1d174c | ||
|
|
5e9c6555ad | ||
|
|
cc96967132 | ||
|
|
ca42324497 | ||
|
|
7a6ac7ce16 | ||
|
|
599221036f | ||
|
|
ce90a27a48 | ||
|
|
5461b5a6b1 | ||
|
|
eef44c609b | ||
|
|
4ccdc86561 | ||
|
|
b8572a0c9c | ||
|
|
c98ef984d8 | ||
|
|
6b86285dd2 | ||
|
|
fbeb8ae0d4 | ||
|
|
a4d0a4c625 | ||
|
|
ccdeb10696 | ||
|
|
84051ba42b | ||
|
|
c287dec802 | ||
|
|
185f085735 | ||
|
|
0d1efb245b | ||
|
|
25de19a2fb | ||
|
|
484de9c3a4 | ||
|
|
25670c59d3 | ||
|
|
b30602b78b | ||
|
|
3d4c1d6886 | ||
|
|
644cf05505 | ||
|
|
90bdbfa921 | ||
|
|
24d824d4e8 | ||
|
|
2d234ec4ac | ||
|
|
d5bb2e38ef | ||
|
|
9e8bf1a20f | ||
|
|
bfa084ddba | ||
|
|
241659ff70 | ||
|
|
e5bd8e32f5 | ||
|
|
5b561a6df3 | ||
|
|
2796160d15 | ||
|
|
0e46f5113c | ||
|
|
24af85dfe9 | ||
|
|
8c8907458c | ||
|
|
481ec28566 | ||
|
|
5e223ad13b | ||
|
|
31c35e5cad | ||
|
|
2b059ae91f | ||
|
|
dfba12435d | ||
|
|
085ff7f19b | ||
|
|
5fd5bead8a | ||
|
|
f2415625d4 | ||
|
|
aa1b0709f2 | ||
|
|
684d68bb27 | ||
|
|
3e669bc950 | ||
|
|
347032c753 | ||
|
|
a4295629b8 | ||
|
|
06b36f7cea | ||
|
|
253392f64f | ||
|
|
635e2bb028 | ||
|
|
4e874820e9 | ||
|
|
b9af8f2719 | ||
|
|
d95275052b | ||
|
|
a3c0b190d1 | ||
|
|
9e1c5a32a3 | ||
|
|
4cbde95247 | ||
|
|
a3af52c11e | ||
|
|
d0a54af4c5 | ||
|
|
f20a62b164 | ||
|
|
f58f7f4e67 | ||
|
|
66832decc5 | ||
|
|
bbe1f9d280 | ||
|
|
7154c617bf | ||
|
|
6aba1816ee | ||
|
|
3eafc3d329 | ||
|
|
937e9f801d | ||
|
|
4ce11c2a63 | ||
|
|
012e5bf4cd | ||
|
|
ab34dafb69 | ||
|
|
9ee0707cfa | ||
|
|
6abf54a489 | ||
|
|
55a299075b | ||
|
|
17683295e4 | ||
|
|
bd0aaa0198 | ||
|
|
66fbae9d75 | ||
|
|
2994c23670 | ||
|
|
eb83ca1cd3 | ||
|
|
15afc78f85 | ||
|
|
b01f5b35f5 | ||
|
|
58c05c04f4 | ||
|
|
d1ce095f84 | ||
|
|
b09703e921 | ||
|
|
ca0d712c3c | ||
|
|
d72347f7bc | ||
|
|
6190512876 | ||
|
|
3f666e1dfe | ||
|
|
bb6aa3ebd3 | ||
|
|
7cf9dfe237 | ||
|
|
d66e492c3d | ||
|
|
72e366657b | ||
|
|
c7c71b8530 | ||
|
|
3cfdbdbd12 | ||
|
|
c6fb5f38c0 | ||
|
|
7d8d573f0d | ||
|
|
f5fae65194 | ||
|
|
bde40a73db | ||
|
|
ee372651d0 | ||
|
|
860c3a5a32 | ||
|
|
6c3e2b32bf | ||
|
|
ef7cb6880f | ||
|
|
4bfba57f96 | ||
|
|
40ad5745a7 | ||
|
|
e9f5066faa | ||
|
|
2e3ae884fb | ||
|
|
2196bda958 | ||
|
|
ab6a987f86 | ||
|
|
ee72c31788 | ||
|
|
2fae8d37c0 | ||
|
|
bcd9356df5 | ||
|
|
950de07889 | ||
|
|
20c3b72bf0 | ||
|
|
039c69da18 | ||
|
|
06c57b7d55 | ||
|
|
b935f6f13a | ||
|
|
7901a6dbef | ||
|
|
b45292a819 | ||
|
|
59087fee52 | ||
|
|
fc8d9584b1 | ||
|
|
bd8df0b32a | ||
|
|
4e03ce9fc5 | ||
|
|
f4248e51a4 | ||
|
|
f74f26f487 | ||
|
|
c23052d6d2 | ||
|
|
7a652e397b | ||
|
|
f496bf9dda | ||
|
|
da6e561d2b | ||
|
|
3756201e04 | ||
|
|
916ad6c8f7 | ||
|
|
8768ab94b3 | ||
|
|
673dc5ee5f | ||
|
|
c1cb5e6885 | ||
|
|
8c7f03c8a4 | ||
|
|
0a1ba06e5d | ||
|
|
c83472edf1 | ||
|
|
d23ad35375 | ||
|
|
ae07423bcd | ||
|
|
9c2183f622 | ||
|
|
911355bee8 | ||
|
|
de8052aa41 | ||
|
|
279e4f7219 | ||
|
|
7cb0480d04 | ||
|
|
16177d63f2 | ||
|
|
c60079862b | ||
|
|
a8a55dc086 | ||
|
|
4ec16344a9 | ||
|
|
a8c0463961 | ||
|
|
5b6cc7d96c | ||
|
|
e20b4ab640 | ||
|
|
b6b6ec2a97 | ||
|
|
c230f7defb | ||
|
|
22efcfd530 | ||
|
|
6357acc086 | ||
|
|
0a5d10a5b9 | ||
|
|
02aad34c43 | ||
|
|
7eb04b7907 | ||
|
|
046bff25fb | ||
|
|
559c624806 | ||
|
|
30dc899c2e | ||
|
|
ea80259eb3 | ||
|
|
49f673979b | ||
|
|
128119b9ab | ||
|
|
6f5b9894a2 | ||
|
|
820b5aa9e4 | ||
|
|
28dfe0dfd9 | ||
|
|
1cbe552f4d | ||
|
|
d79e01e211 | ||
|
|
37661c8b39 | ||
|
|
efcd3e318b | ||
|
|
bc9fc0d6cf | ||
|
|
0242b892d2 | ||
|
|
d61e8d63fd | ||
|
|
5db70599d1 | ||
|
|
4250a26f5c | ||
|
|
40666b6708 | ||
|
|
5d1cf6a544 | ||
|
|
6dec77d25e | ||
|
|
4a400ce14f | ||
|
|
ac48d5d24f | ||
|
|
0626f6ca0a | ||
|
|
40a3cdd97b | ||
|
|
131033352d | ||
|
|
2ad81f4584 | ||
|
|
22f2b206b7 | ||
|
|
52e1590285 | ||
|
|
c2ec68ab62 | ||
|
|
26b8b65c18 | ||
|
|
14594953d2 | ||
|
|
da9abd8b73 | ||
|
|
d69ab24f69 | ||
|
|
13af4c9a09 | ||
|
|
b15e33f85a | ||
|
|
d0ea27b802 | ||
|
|
419a9c6cac | ||
|
|
5a606e0be3 | ||
|
|
b4dd85ff46 | ||
|
|
7a05927e44 | ||
|
|
63dae4ee74 | ||
|
|
6543134dea | ||
|
|
cdbe4a5cab | ||
|
|
3b3f8137c3 | ||
|
|
4320984303 | ||
|
|
8b443a1851 | ||
|
|
b81012c718 | ||
|
|
bd196f4bd0 | ||
|
|
93608bf8a5 | ||
|
|
fc34aa8489 | ||
|
|
e678e7a6af | ||
|
|
e8ec9a98dd | ||
|
|
51e3beb4cb | ||
|
|
934e19107d | ||
|
|
c37b13e0db | ||
|
|
9aebeaaf09 | ||
|
|
b3a48855ab | ||
|
|
331726338b | ||
|
|
497fae9d1f | ||
|
|
ef08c58664 | ||
|
|
339b4dbd6f | ||
|
|
ab6a675131 | ||
|
|
426fb96cc9 | ||
|
|
36d62a2f84 | ||
|
|
0b9f9de012 | ||
|
|
85ad81736c | ||
|
|
1ea0bae9c0 | ||
|
|
57f76446cf | ||
|
|
0f3d8acfd6 | ||
|
|
46ae03d872 | ||
|
|
7241dea7ef | ||
|
|
b6307d1014 | ||
|
|
4e3cd72df5 | ||
|
|
244c9a4ba0 | ||
|
|
c0c096b752 | ||
|
|
366832fbd2 | ||
|
|
4e4b98a66d | ||
|
|
dc0db7382c | ||
|
|
350aec954e | ||
|
|
7107105429 | ||
|
|
17f504a0ec | ||
|
|
70331c361e | ||
|
|
2256ec00ef | ||
|
|
2618322506 | ||
|
|
268ac81e39 | ||
|
|
1d3f0d8891 | ||
|
|
c2d53719c2 | ||
|
|
bb2f034eff | ||
|
|
363b0ce10b | ||
|
|
0a865c89c5 | ||
|
|
94ab6069b8 | ||
|
|
dfdd1e4caf | ||
|
|
2814b749ec | ||
|
|
7aa61c312d | ||
|
|
fb81446ec9 | ||
|
|
aae30f20fc | ||
|
|
8e49bacf95 | ||
|
|
a570981151 | ||
|
|
f5117c81b3 | ||
|
|
a420b562df | ||
|
|
c13c6e4f68 | ||
|
|
4dbac17f9c | ||
|
|
e0ded79c0f | ||
|
|
794c2e8e5d | ||
|
|
b9f0ff7aab | ||
|
|
f7beb9f30c | ||
|
|
1e93bb16e4 | ||
|
|
36d6ddc241 | ||
|
|
7e0dc09703 | ||
|
|
ad7732c0cc | ||
|
|
8c86ea4693 | ||
|
|
2f6cebb206 | ||
|
|
af34ed0d97 | ||
|
|
7f367c9d83 | ||
|
|
0d088689c0 | ||
|
|
80e04c2c35 | ||
|
|
13996df552 | ||
|
|
3db21d2f4c | ||
|
|
a6a9dc2eec | ||
|
|
7243d31ae0 | ||
|
|
19ea8abd09 | ||
|
|
e47c21e0bc | ||
|
|
2bb4d8282c | ||
|
|
4020933726 | ||
|
|
db77890bbd | ||
|
|
abe364335b | ||
|
|
cfeb12ccf5 | ||
|
|
d20fe303b3 | ||
|
|
493c9fcf93 | ||
|
|
60949ca571 | ||
|
|
6ed54ddc79 | ||
|
|
e1fac162a0 | ||
|
|
ae75d4350d | ||
|
|
da2d7e7229 | ||
|
|
110344d65c | ||
|
|
54a5c714ca | ||
|
|
7b073bbad8 | ||
|
|
8b4e1abdb0 | ||
|
|
25558ffdbb | ||
|
|
c21ced1ec9 | ||
|
|
aa749a1269 | ||
|
|
4ba37d04d4 | ||
|
|
4eb9e62209 | ||
|
|
eb0a6a666f | ||
|
|
8f514cd18c | ||
|
|
1340c04976 | ||
|
|
014729d00b | ||
|
|
95c6c6d2cd | ||
|
|
d734669230 | ||
|
|
1a78dc5fbf | ||
|
|
924ae32ddf | ||
|
|
18606377dd | ||
|
|
a0303c772a | ||
|
|
52747127f8 | ||
|
|
c127df868e | ||
|
|
b5c8fcb5fa | ||
|
|
158ebbd9b5 | ||
|
|
da0a76c561 | ||
|
|
f1a8fde76a | ||
|
|
cce5e8c9ea | ||
|
|
9aeb125f4a | ||
|
|
aab9009deb | ||
|
|
209169786a | ||
|
|
6b8bf38333 | ||
|
|
8bd18e174b | ||
|
|
0bd9518f8c | ||
|
|
c95360658f | ||
|
|
f8781c168e | ||
|
|
a7d31c8dac | ||
|
|
b58ed261d7 | ||
|
|
aa9ea59851 | ||
|
|
57e49322a5 | ||
|
|
c4da6009bb | ||
|
|
d3e0b57e1a | ||
|
|
3c19326480 | ||
|
|
23a3fdbf04 | ||
|
|
64931b62cc | ||
|
|
a8c6b992b8 | ||
|
|
5519008169 | ||
|
|
8c100e6451 | ||
|
|
fe306ed1a6 | ||
|
|
241aa9a59d | ||
|
|
cd9e244a68 | ||
|
|
927ea59de3 | ||
|
|
f3f057127b | ||
|
|
592e78ab87 | ||
|
|
71ac32bdb8 | ||
|
|
bd8fe7fcf0 | ||
|
|
f60da5cd5e | ||
|
|
68d1942a9a | ||
|
|
df2c11b731 | ||
|
|
611a05f857 | ||
|
|
64e8f63978 | ||
|
|
00a9f063f8 | ||
|
|
270640283e | ||
|
|
9c14ce94f3 | ||
|
|
134b2718d4 | ||
|
|
8e2de517bb | ||
|
|
bb293e15c3 | ||
|
|
ae1d56d098 | ||
|
|
9e1beb4f1c | ||
|
|
88edad9f08 | ||
|
|
6ec23a56d8 | ||
|
|
261eabbdd4 | ||
|
|
33c650020a | ||
|
|
71ad4dd19b | ||
|
|
15c1b8a3a2 | ||
|
|
c388f97ac9 | ||
|
|
d4a1506d52 | ||
|
|
b03351633a | ||
|
|
04a291d39a | ||
|
|
82814fc852 | ||
|
|
2556b354b3 | ||
|
|
00dfb7dc14 | ||
|
|
00df9b67ce | ||
|
|
bf9a25d0bb | ||
|
|
83bdbe5b53 | ||
|
|
2ca2153a06 | ||
|
|
e464f0f456 | ||
|
|
7ae7cc363a | ||
|
|
528e7869b6 | ||
|
|
72030596ba | ||
|
|
17d16cf2af | ||
|
|
edc87ef840 | ||
|
|
8098790208 | ||
|
|
50ba309495 | ||
|
|
a4bd0d6a25 | ||
|
|
703fc059bf | ||
|
|
496fd1c041 | ||
|
|
435b820f68 | ||
|
|
e02f8809f1 | ||
|
|
1d0b88d316 | ||
|
|
376d4554fb | ||
|
|
623a2021ab | ||
|
|
289402edc6 | ||
|
|
98691ba0c0 | ||
|
|
f803888510 | ||
|
|
fbc6470cb6 | ||
|
|
3d9af317e6 | ||
|
|
6f63c45639 | ||
|
|
e98a40f1fa | ||
|
|
02eb02d1ce | ||
|
|
38c5dd2929 | ||
|
|
dbc09d3325 | ||
|
|
b6fe60ab52 | ||
|
|
6070381f9d | ||
|
|
872661b91d | ||
|
|
b3b9ee1467 | ||
|
|
598f182c29 | ||
|
|
58a14f225d | ||
|
|
890bd3f002 | ||
|
|
0ba24fb65a | ||
|
|
9622ccface | ||
|
|
681405fc4a | ||
|
|
24a80c3ebf | ||
|
|
b74698f135 | ||
|
|
2baf1500e0 | ||
|
|
40c24a65c4 | ||
|
|
138ad7d252 | ||
|
|
e7494a7e9e | ||
|
|
2dc3862c7f | ||
|
|
57510065ce | ||
|
|
cea6a783af | ||
|
|
941a94ead4 | ||
|
|
d22d6910ad | ||
|
|
cc4b453611 | ||
|
|
0139cd0e53 | ||
|
|
7af8089096 | ||
|
|
588d88960c | ||
|
|
c28a9a4e5c | ||
|
|
e0924b7451 | ||
|
|
b2424b2e08 | ||
|
|
9bd48c2e15 | ||
|
|
fad0caaee9 | ||
|
|
579c9abfb3 | ||
|
|
721fec251b | ||
|
|
b05b949a47 | ||
|
|
e9de9f3aeb | ||
|
|
a3cb94abff | ||
|
|
fa406902d5 | ||
|
|
36a14076a8 | ||
|
|
3815b367d5 | ||
|
|
844cb82c45 | ||
|
|
2e8f773eee | ||
|
|
a9cac89541 | ||
|
|
8212034254 | ||
|
|
9ffefbc74e | ||
|
|
7c01510b95 | ||
|
|
3a9cdbfd41 | ||
|
|
bac9ab777e | ||
|
|
ced39e3168 | ||
|
|
dcd7879556 | ||
|
|
97ec02ce81 | ||
|
|
4c98758328 | ||
|
|
5b502880b6 | ||
|
|
51d8950b53 | ||
|
|
b122cd4b08 | ||
|
|
143d1c8011 | ||
|
|
f987de46b4 | ||
|
|
936b1e56c3 | ||
|
|
2486b846cc | ||
|
|
af888a4807 | ||
|
|
a329ecd8c4 | ||
|
|
2af3190a3d | ||
|
|
e13d51cea3 | ||
|
|
2c5c8c161c | ||
|
|
3bbd4b17a9 | ||
|
|
e415260868 | ||
|
|
4d3c8240d5 | ||
|
|
60efdff75f | ||
|
|
9490f1c847 | ||
|
|
a0c8d5d80a | ||
|
|
6b46a441cd | ||
|
|
dda1f722e2 | ||
|
|
57b520541b | ||
|
|
5460d2dad6 | ||
|
|
a0dd931d85 | ||
|
|
f9fb94ff00 | ||
|
|
0a7b720094 | ||
|
|
76ad7425ad | ||
|
|
ea544cf38f | ||
|
|
ecca329c14 | ||
|
|
890f7f46b4 | ||
|
|
23d3ddea25 | ||
|
|
75a548a7e9 | ||
|
|
b260064bbf | ||
|
|
187b6cc583 | ||
|
|
af0adbed39 | ||
|
|
7c3bdf444d | ||
|
|
863bf8a574 | ||
|
|
d4696abdb9 | ||
|
|
e7925c9767 | ||
|
|
159bae3d99 | ||
|
|
5fdeb391f3 | ||
|
|
b0c0b79136 | ||
|
|
ad1f706fda | ||
|
|
a8c338aa65 | ||
|
|
c326593c1a | ||
|
|
03cb8e959b | ||
|
|
d32c6512e1 | ||
|
|
c095e20ca8 | ||
|
|
9269f58477 | ||
|
|
3446a75a36 | ||
|
|
5bb29235dc | ||
|
|
719e78c78f | ||
|
|
382bc9d0e4 | ||
|
|
4d0439e487 | ||
|
|
5916b8dd04 | ||
|
|
5fd4035194 | ||
|
|
e264b8a4d3 | ||
|
|
5ec19bb68c | ||
|
|
4a6faadcce | ||
|
|
6aed41421e | ||
|
|
e5928942ac | ||
|
|
24046edbbb | ||
|
|
cbb928b8eb | ||
|
|
3e46adb183 | ||
|
|
fb57a8363e | ||
|
|
12ff2532c9 | ||
|
|
62ca4594f8 | ||
|
|
bddc4e6c1d | ||
|
|
d8e5ee075f | ||
|
|
e89500cdfb | ||
|
|
5a7596591f | ||
|
|
8b91c8f32e | ||
|
|
03418c1d36 | ||
|
|
5a29be9b7d | ||
|
|
d467331307 | ||
|
|
cdbf1938f2 | ||
|
|
f133b09907 | ||
|
|
fbda9ce9f4 | ||
|
|
197142b3e0 | ||
|
|
8f4112bfdd | ||
|
|
b0f1719ee5 | ||
|
|
cc50a96139 | ||
|
|
8d476ded8e | ||
|
|
e7bd6769df | ||
|
|
8ac5b549e0 | ||
|
|
0893e10ac3 | ||
|
|
33921efc44 | ||
|
|
b343aa9945 | ||
|
|
3c042299e6 | ||
|
|
eb28594aa5 | ||
|
|
a218299d6a | ||
|
|
e6566d9477 | ||
|
|
1017c44f4a | ||
|
|
a03039bade | ||
|
|
d18cdaf6dd | ||
|
|
709f73aea7 | ||
|
|
646500bfe9 | ||
|
|
1e0494a714 | ||
|
|
001f506533 | ||
|
|
4c8afd895a | ||
|
|
7e2bccf776 | ||
|
|
491674bea6 | ||
|
|
c47fb30b5b | ||
|
|
81b8096ea8 | ||
|
|
3fbee80f35 | ||
|
|
428006f54d | ||
|
|
d67821cd02 | ||
|
|
f4371b9cc6 | ||
|
|
4acffedc6b | ||
|
|
cd90395cb6 | ||
|
|
49678f0908 | ||
|
|
25a82d8a5c | ||
|
|
67f27b0aef | ||
|
|
305e946358 | ||
|
|
2580744813 | ||
|
|
2bc716c131 | ||
|
|
0615bf6cb4 | ||
|
|
855f7dfd95 | ||
|
|
28a0aef13e | ||
|
|
c0ec353655 | ||
|
|
ea4734926e | ||
|
|
cc034dcb38 | ||
|
|
ad73bdcbe0 | ||
|
|
bb8e5de181 | ||
|
|
631da59b50 | ||
|
|
062626d03e | ||
|
|
a5cea052e8 | ||
|
|
44205dc58a | ||
|
|
9d79a201f1 | ||
|
|
c61c3dd422 | ||
|
|
a5fe9808aa | ||
|
|
df71093dd8 | ||
|
|
58a0906bf9 | ||
|
|
8152c64c02 | ||
|
|
410e106aae | ||
|
|
3019a1c6a3 | ||
|
|
b94970a3bd | ||
|
|
eef799a6ec | ||
|
|
c797466259 | ||
|
|
ad28ef81c0 | ||
|
|
d41c6dc6d6 | ||
|
|
45794ee259 | ||
|
|
656f02fada | ||
|
|
036f28f115 | ||
|
|
60d70459f3 | ||
|
|
b551a55bca | ||
|
|
b1d0f9bb43 | ||
|
|
0fefec1a35 | ||
|
|
e403b15ebb | ||
|
|
412a28d124 | ||
|
|
24af08eb80 | ||
|
|
91682f88e4 | ||
|
|
a8c5828ce0 | ||
|
|
de03dd6387 | ||
|
|
bc81f55541 | ||
|
|
303a642a0d | ||
|
|
5dd9ad8f53 | ||
|
|
5ef3e0c57b | ||
|
|
94238838cf | ||
|
|
11f0ff9c1a | ||
|
|
7357ac0b96 | ||
|
|
e3c8bd51de | ||
|
|
470da4e960 | ||
|
|
5e46f636a5 | ||
|
|
faf80a4035 | ||
|
|
1f7c9e197c | ||
|
|
6df3e40977 | ||
|
|
2cbe63513c | ||
|
|
e011229598 | ||
|
|
969f05a709 | ||
|
|
595ee08653 | ||
|
|
6b0de601be | ||
|
|
d8bb2766a8 | ||
|
|
fa3394eccb | ||
|
|
dec65f584b | ||
|
|
abe0e61801 | ||
|
|
35c82a75eb | ||
|
|
e58513c4d0 | ||
|
|
71bd44ac02 | ||
|
|
d3dc0a39bc | ||
|
|
e1791bedd5 | ||
|
|
6eaf1671b5 | ||
|
|
f42742f796 | ||
|
|
cb83e27b02 | ||
|
|
93ffc14028 | ||
|
|
b33c2d9b17 | ||
|
|
8a929e054e | ||
|
|
b29b16af2e | ||
|
|
3ced246dfc | ||
|
|
3282497f82 | ||
|
|
bcf354a97a | ||
|
|
3abc925a8a | ||
|
|
e1661efced | ||
|
|
1f6debba12 | ||
|
|
33a91ad309 | ||
|
|
c3678550a3 | ||
|
|
6cbe6d7d52 | ||
|
|
f2ed06347b | ||
|
|
1b8ecbcf54 | ||
|
|
e0e9b5ac39 | ||
|
|
3d8dc4d3b1 | ||
|
|
0a50368580 | ||
|
|
4d631ec31b | ||
|
|
6df490d0ca | ||
|
|
262cbbe8d0 | ||
|
|
ffe605f2ed | ||
|
|
1c667a88e7 | ||
|
|
061ff97f69 | ||
|
|
308a64bc08 | ||
|
|
42728f947c | ||
|
|
0a2e6f723e | ||
|
|
8a5bd01a44 | ||
|
|
31f8d7dc20 | ||
|
|
48d9adc3f0 | ||
|
|
e117d540d1 | ||
|
|
afccca77dd | ||
|
|
d09fbaa495 | ||
|
|
184309c2e9 | ||
|
|
594fd87ca7 | ||
|
|
728acc3785 | ||
|
|
9a0bed9863 | ||
|
|
612dab64ee | ||
|
|
b76dcd68ee | ||
|
|
a750f195cd | ||
|
|
991a29cfd6 | ||
|
|
ca9dd7d826 | ||
|
|
0ea0e1615f | ||
|
|
224e1f50ae | ||
|
|
6333f71ea3 | ||
|
|
c19322869b | ||
|
|
ba3862b369 | ||
|
|
13dc73940d | ||
|
|
69722777a0 | ||
|
|
08b5c498ce | ||
|
|
932346c00f | ||
|
|
56f006a998 | ||
|
|
4c4b955dce | ||
|
|
655743c4e7 | ||
|
|
91e31d0243 | ||
|
|
dfc8044098 | ||
|
|
69f0675a35 | ||
|
|
b47525e508 | ||
|
|
941ac55d2f | ||
|
|
09540ee965 | ||
|
|
e2599c3dbf | ||
|
|
1a04335ec2 | ||
|
|
ba5f66777e | ||
|
|
386a3b9305 | ||
|
|
4329db25a1 | ||
|
|
72857b6dbb | ||
|
|
c0cb5a83bf | ||
|
|
006922ba18 | ||
|
|
ef04eea493 | ||
|
|
846b0826ab | ||
|
|
15c9f414a6 | ||
|
|
c508b5e66a | ||
|
|
9daaedc125 | ||
|
|
049882f29c | ||
|
|
f4a15e4fb8 | ||
|
|
d696f11814 | ||
|
|
57641c166f | ||
|
|
fdd42afa6c | ||
|
|
fab0baa274 | ||
|
|
06550ce8e0 | ||
|
|
2352850c52 | ||
|
|
1536082186 | ||
|
|
a349428685 | ||
|
|
4fb5b322ee | ||
|
|
3905ce46d9 | ||
|
|
4f7d14f8d9 | ||
|
|
6cc5e191d0 | ||
|
|
0d9bc3a679 | ||
|
|
ba8a8d9f25 | ||
|
|
4566f48777 | ||
|
|
c81c189198 | ||
|
|
a952406eb3 | ||
|
|
35b7ad00a6 | ||
|
|
6cf5be04d6 | ||
|
|
a3a2fe37af | ||
|
|
09f0161160 | ||
|
|
e3a1bf1e62 | ||
|
|
5ece2f6369 | ||
|
|
d38a901189 | ||
|
|
5337c02684 | ||
|
|
b5017bd725 | ||
|
|
d6c7d9630b | ||
|
|
0dce979bfc | ||
|
|
eef28dacec | ||
|
|
8524b33feb | ||
|
|
f8e8c5534b | ||
|
|
0823526afe | ||
|
|
f0c27e68b2 | ||
|
|
cd63787e9a | ||
|
|
8bba75f0f8 | ||
|
|
f3c44f6065 | ||
|
|
a72a517e2f | ||
|
|
0988162649 | ||
|
|
3d41ebf595 | ||
|
|
20c3266588 | ||
|
|
999a7acd71 | ||
|
|
967413c58c | ||
|
|
5e33a09f20 | ||
|
|
a51fc50b6e | ||
|
|
ddf3f9b068 | ||
|
|
529263d680 | ||
|
|
de6b4c0091 | ||
|
|
4dff36f6b4 | ||
|
|
bcb70109d2 | ||
|
|
462940cbb0 | ||
|
|
08a6122f54 | ||
|
|
fe9db9ab0a | ||
|
|
bfe844e41e | ||
|
|
9986219353 | ||
|
|
33d913d9da | ||
|
|
5eb6b78c90 | ||
|
|
e26ae04d5f | ||
|
|
9d3ac92729 | ||
|
|
0ce7487110 | ||
|
|
46488c8bb4 | ||
|
|
116584297a | ||
|
|
9a1c6c55b8 | ||
|
|
c3a79b5990 | ||
|
|
8acd34d6d8 | ||
|
|
d1ee4b407c | ||
|
|
7d918fae4c | ||
|
|
7e762989e7 | ||
|
|
87071cf1d6 | ||
|
|
3eb6167902 | ||
|
|
21e809b7be | ||
|
|
3fd2e85458 | ||
|
|
4b9b5505f0 | ||
|
|
f43767b249 | ||
|
|
27763b3666 | ||
|
|
e4a4ab60c7 | ||
|
|
8cf678c306 | ||
|
|
1bf64add7b | ||
|
|
595e93be27 | ||
|
|
69edc17192 | ||
|
|
ae281c372a | ||
|
|
7199bc5f86 | ||
|
|
c0ffebcee6 | ||
|
|
eb7e9b6bfc | ||
|
|
5ca5efcdda | ||
|
|
ca8596ab83 | ||
|
|
3fab7a3ed6 | ||
|
|
a29501195f | ||
|
|
b4dd030782 | ||
|
|
a5f0cbed44 | ||
|
|
650b76e542 | ||
|
|
d5809b85f9 | ||
|
|
dc929d011c | ||
|
|
766e4b3c15 | ||
|
|
bab59278d7 | ||
|
|
c221e148d7 | ||
|
|
d3f03cc468 | ||
|
|
bd7a277d48 | ||
|
|
196e54fc43 | ||
|
|
09f89c8cb0 | ||
|
|
2a7bd2b823 | ||
|
|
9d1f2f30d3 | ||
|
|
9a74c68a4c | ||
|
|
21698c12fe | ||
|
|
90236679e9 | ||
|
|
5682438549 | ||
|
|
8dc3e7b147 | ||
|
|
9e9f413aeb | ||
|
|
af01525d1e | ||
|
|
be945f9fe2 | ||
|
|
81151a5dbf | ||
|
|
497c7714e6 | ||
|
|
77d3a41f8a | ||
|
|
1e37cc7b82 | ||
|
|
a55c4799aa | ||
|
|
e53f6428ac | ||
|
|
f4007c8f6b | ||
|
|
edc39221c0 | ||
|
|
5f47b4178e | ||
|
|
e9c81e4983 | ||
|
|
9c252b4b07 | ||
|
|
2d16ed7706 | ||
|
|
efe24c0205 | ||
|
|
6b0d0f7ceb | ||
|
|
7262ccfac9 | ||
|
|
0730fa2af9 | ||
|
|
9305339d94 | ||
|
|
26bf79a15e | ||
|
|
b5e2cc5197 | ||
|
|
06e3607102 | ||
|
|
6818826bbd | ||
|
|
25c6fbe515 | ||
|
|
42fb30298c | ||
|
|
46783871e3 | ||
|
|
6ed7a799af | ||
|
|
38a52c5b0d | ||
|
|
8a39d704c4 | ||
|
|
7f293b91b4 | ||
|
|
caa9702a5a | ||
|
|
a022e10c2d | ||
|
|
a3c168239d | ||
|
|
27df981727 | ||
|
|
020f1ba949 | ||
|
|
1ee421ff66 | ||
|
|
635d65ab4e | ||
|
|
084ab84411 | ||
|
|
222900c4b0 | ||
|
|
d1be6c8152 | ||
|
|
b6be0f9817 | ||
|
|
60b1f64cc7 | ||
|
|
4e1b287b82 | ||
|
|
38317bb3bd | ||
|
|
6bc126681c | ||
|
|
bd30309d65 | ||
|
|
0eabbc9f89 | ||
|
|
a8355965bb | ||
|
|
2b32ff53cd | ||
|
|
abcfcd3f2e | ||
|
|
1890173d8c | ||
|
|
8c4d1f6657 | ||
|
|
bb35f045df | ||
|
|
00566c3949 | ||
|
|
321732227f | ||
|
|
170ef60d6f | ||
|
|
96873fecef | ||
|
|
6319efa013 | ||
|
|
44840ace8e | ||
|
|
a4673bd7b7 | ||
|
|
5f8809907a | ||
|
|
64cfbf539f | ||
|
|
248c30dad7 | ||
|
|
1978e9109f | ||
|
|
41901d127c | ||
|
|
4f161fe289 | ||
|
|
7fda1750f1 | ||
|
|
9057102e6e | ||
|
|
e615889d6b | ||
|
|
5253ea11de | ||
|
|
40f971b5b6 | ||
|
|
248345d920 | ||
|
|
655cb3aaf7 | ||
|
|
156a899e4a | ||
|
|
28796e9aa6 | ||
|
|
ab78a63357 | ||
|
|
2ec2739c19 | ||
|
|
b08c3d880e | ||
|
|
307ec8ece4 | ||
|
|
9230473cd3 | ||
|
|
d1a4819c09 | ||
|
|
7c37c2c37e | ||
|
|
b247dc3418 | ||
|
|
43f63e4753 | ||
|
|
99baa01aac | ||
|
|
0e2491f553 | ||
|
|
cf39bec447 | ||
|
|
7230be4951 | ||
|
|
ba38b8a9c9 | ||
|
|
5fc9d15692 | ||
|
|
805ca9c51f | ||
|
|
f02aa075cb | ||
|
|
c6aae12cc1 | ||
|
|
3a21310f37 | ||
|
|
1b02f3ec31 | ||
|
|
2b53e96832 | ||
|
|
11eeb0c3ac | ||
|
|
0c4867144a | ||
|
|
5dd6467bd0 | ||
|
|
a596d53131 | ||
|
|
b842d8e3d8 | ||
|
|
980b9be4b4 | ||
|
|
293beeb74a | ||
|
|
2e4c7dbb03 | ||
|
|
ce6abe492c | ||
|
|
4f89b2e0cb | ||
|
|
d3326d5b26 | ||
|
|
30b14ee8e9 | ||
|
|
e96c51a175 | ||
|
|
164b4ad4dd | ||
|
|
da4096c210 | ||
|
|
19dc0411f7 | ||
|
|
9e0ed1cb67 | ||
|
|
82d8cfb681 | ||
|
|
31dcd92f46 | ||
|
|
ae8a3a0f9e | ||
|
|
de247c88cd | ||
|
|
e5c570997e | ||
|
|
b8cc3a9c32 | ||
|
|
33df597531 | ||
|
|
daa209297d | ||
|
|
f4eb5095a6 | ||
|
|
f7ef84c32d | ||
|
|
b31ff96be9 | ||
|
|
3b329a9926 | ||
|
|
4e798f6e02 | ||
|
|
9477097564 | ||
|
|
75d362225c | ||
|
|
286d53397a | ||
|
|
a23aec662c | ||
|
|
e134382a71 | ||
|
|
94c7fd0603 | ||
|
|
1dd48ca039 | ||
|
|
f286018dd0 | ||
|
|
617716b171 | ||
|
|
690f2ab5ed | ||
|
|
976edd47e2 | ||
|
|
5516735c88 | ||
|
|
cf1b4cf673 | ||
|
|
e8b05734be | ||
|
|
5610ad29e3 | ||
|
|
23d4f9882f | ||
|
|
ca24e21972 | ||
|
|
2c6d0f8c48 | ||
|
|
496bc9fce3 | ||
|
|
d327027ea9 | ||
|
|
81b6d3e725 | ||
|
|
9711fbace9 | ||
|
|
a47eec0754 | ||
|
|
8bdc4285aa | ||
|
|
bbd37d99e1 | ||
|
|
0d993d2172 | ||
|
|
812c1e0475 | ||
|
|
e46cd60d89 | ||
|
|
a0d479994f | ||
|
|
b31f168184 | ||
|
|
54df2c9d36 | ||
|
|
4ddaf76efc | ||
|
|
417f113940 | ||
|
|
0941045fcc | ||
|
|
e274f52bbf | ||
|
|
2f594ec2b3 | ||
|
|
6c87db9e99 | ||
|
|
974adb419a | ||
|
|
565c7708ca | ||
|
|
256e6e3350 | ||
|
|
c792839d8f | ||
|
|
9aa81a786b | ||
|
|
ba8cfb4a93 | ||
|
|
2a37a0c495 | ||
|
|
daba35fead | ||
|
|
ebd4ab4d78 | ||
|
|
779e6d203e | ||
|
|
3bc9bc5de8 | ||
|
|
54931f5259 | ||
|
|
96d755978c | ||
|
|
f0f1557998 | ||
|
|
1a29376c07 | ||
|
|
995c3002aa | ||
|
|
1c7eb15eea | ||
|
|
d55f456497 | ||
|
|
96dfe589fe | ||
|
|
eeecc8a015 | ||
|
|
01d8e59d3b | ||
|
|
4571221d8e |
No files matched your search
+12
-7
@@ -148,20 +148,19 @@ Naming Conventions
|
||||
'buildsomewidget'
|
||||
'getI()'
|
||||
|
||||
[7] Classes should be given descriptive names. Avoid using abbreviations
|
||||
where possible. Each word in the class name should start with a capital
|
||||
letter, with words underscore delimited. The class name should be prefixed
|
||||
with the name of the 'parent set'.
|
||||
[7] Classes should be given descriptive names. Avoid using abbreviations where
|
||||
possible. Each word in the class name should start with a capital letter,
|
||||
without underscore delimiters (CampelCaps starting with a capital letter).
|
||||
The class name should be prefixed with the name of the 'parent set' (e.g.
|
||||
the name of the extension).
|
||||
|
||||
Good:
|
||||
'Curl'
|
||||
'Foo_Bar'
|
||||
'FooBar'
|
||||
|
||||
Bad:
|
||||
'foobar'
|
||||
'foo_bar'
|
||||
'FooBar'
|
||||
|
||||
|
||||
Syntax and indentation
|
||||
----------------------
|
||||
@@ -208,6 +207,12 @@ Syntax and indentation
|
||||
indent preprocessor directives you should put the # at the beginning
|
||||
of a line, followed by any number of whitespace.
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
[1] Extensions should be well tested using *.phpt tests. Read about that
|
||||
in README.TESTING.
|
||||
|
||||
Documentation and Folding Hooks
|
||||
-------------------------------
|
||||
|
||||
|
||||
+9
-9
@@ -46,9 +46,9 @@ MAINTENANCE: Maintained
|
||||
STATUS: Experimental
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: apache2handler
|
||||
PRIMARY MAINTAINER: Aaron Bannert <aaron@php.net>
|
||||
PRIMARY MAINTAINER: Aaron Bannert <aaron@php.net>, Ilia Alshanetsky <iliaa@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Experimental
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: caudium
|
||||
MAINTENANCE: Unknown
|
||||
@@ -176,9 +176,9 @@ MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: mysqli
|
||||
PRIMARY MAINTAINER: Georg Richter <georg@php.net>
|
||||
PRIMARY MAINTAINER: Georg Richter <georg@php.net>, Andrey Hristov <andrey@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Experimental
|
||||
STATUS: Working
|
||||
SINCE: 5.0
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: oci8
|
||||
@@ -302,7 +302,7 @@ MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: curl
|
||||
PRIMARY MAINTAINER: Sterling Hughes <sterling@php.net>
|
||||
PRIMARY MAINTAINER: Sterling Hughes <sterling@php.net>,Ilia Alshanetsky <iliaa@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
SINCE: 4.0.2
|
||||
@@ -357,8 +357,8 @@ MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: imap
|
||||
PRIMARY MAINTAINER: Chuck Hagenbuch <chuck@horde.org>
|
||||
MAINTENANCE: Odd Fixes
|
||||
PRIMARY MAINTAINER: Chuck Hagenbuch <chuck@horde.org>, Ilia Alshanetsky <iliaa@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: ircg
|
||||
@@ -452,7 +452,7 @@ STATUS: Working
|
||||
EXTENSION: pspell
|
||||
PRIMARY MAINTAINER: Vlad Krupin <phpdevel@echospace.com>
|
||||
MAINTENANCE: Unknown
|
||||
STATUS: Unknown
|
||||
STATUS: Working
|
||||
SINCE: 4.0.2
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: readline
|
||||
@@ -465,7 +465,7 @@ MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: session
|
||||
PRIMARY MAINTAINER: Sascha Schumann <sascha@schumann.cx>
|
||||
PRIMARY MAINTAINER: Sascha Schumann <sascha@schumann.cx>, Ilia Alshanetsky <iliaa@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
Installing PHP
|
||||
_________________________________________________________________
|
||||
|
||||
@@ -17,6 +16,7 @@ Installing PHP
|
||||
OpenBSD installation notes
|
||||
Solaris specific installation tips
|
||||
Gentoo installation notes
|
||||
Debian GNU/Linux installation notes
|
||||
|
||||
3. Installation on Mac OS X
|
||||
|
||||
@@ -43,6 +43,8 @@ Installing PHP
|
||||
|
||||
The configuration file
|
||||
How to change configuration settings
|
||||
|
||||
7. Installation FAQ
|
||||
_________________________________________________________________
|
||||
|
||||
Preface
|
||||
@@ -164,7 +166,7 @@ Apache 1.3.x on Unix systems
|
||||
your files.
|
||||
|
||||
Example 2-1. Installation Instructions (Apache Shared Module Version)
|
||||
for PHP
|
||||
for PHP
|
||||
1. gunzip apache_xxx.tar.gz
|
||||
2. tar -xvf apache_xxx.tar
|
||||
3. gunzip php-xxx.tar.gz
|
||||
@@ -248,36 +250,38 @@ Apache 1.3.x on Unix systems
|
||||
Alternatively, to install PHP as a static object:
|
||||
|
||||
Example 2-2. Installation Instructions (Static Module Installation for
|
||||
Apache) for PHP
|
||||
Apache) for PHP
|
||||
1. gunzip -c apache_1.3.x.tar.gz | tar xf -
|
||||
2. cd apache_1.3.x
|
||||
3. ./configure
|
||||
4. cd ..
|
||||
|
||||
5. gunzip -c php-4.x.y.tar.gz | tar xf -
|
||||
6. cd php-4.x.y
|
||||
5. gunzip -c php-5.x.y.tar.gz | tar xf -
|
||||
6. cd php-5.x.y
|
||||
7. ./configure --with-mysql --with-apache=../apache_1.3.x
|
||||
8. make
|
||||
9. make install
|
||||
|
||||
10. cd ../apache_1.3.x
|
||||
|
||||
11. ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a
|
||||
(The above line is correct! Yes, we know libphp4.a does not exist at this
|
||||
11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
|
||||
(The above line is correct! Yes, we know libphp5.a does not exist at this
|
||||
stage. It isn't supposed to. It will be created.)
|
||||
|
||||
12. make
|
||||
(you should now have an httpd binary which you can copy to your Apache bin
|
||||
dir if
|
||||
is is your first install then you need to "make install" as well)
|
||||
it is your first install then you need to "make install" as well)
|
||||
|
||||
13. cd ../php-4.x.y
|
||||
13. cd ../php-5.x.y
|
||||
14. cp php.ini-dist /usr/local/lib/php.ini
|
||||
|
||||
15. You can edit /usr/local/lib/php.ini file to set PHP options.
|
||||
Edit your httpd.conf or srm.conf file and add:
|
||||
AddType application/x-httpd-php .php
|
||||
|
||||
Note: Replace php-5 by php-4 and php5 by php4 in PHP 4.
|
||||
|
||||
Depending on your Apache install and Unix variant, there are many
|
||||
possible ways to stop and restart the server. Below are some typical
|
||||
lines used in restarting the server, for different apache/unix
|
||||
@@ -309,9 +313,9 @@ stop and start:
|
||||
|
||||
./configure --with-apxs --with-pgsql
|
||||
|
||||
This will create a libphp4.so shared library that is loaded into
|
||||
Apache using a LoadModule line in Apache's httpd.conf file. The
|
||||
PostgreSQL support is embedded into this libphp4.so library.
|
||||
This will create a libphp5.so (or libphp4.so in PHP 4) shared library
|
||||
that is loaded into Apache using a LoadModule line in Apache's
|
||||
httpd.conf file. The PostgreSQL support is embedded into this library.
|
||||
|
||||
./configure --with-apxs --with-pgsql=shared
|
||||
|
||||
@@ -322,14 +326,14 @@ stop and start:
|
||||
|
||||
./configure --with-apache=/path/to/apache_source --with-pgsql
|
||||
|
||||
This will create a libmodphp4.a library, a mod_php4.c and some
|
||||
accompanying files and copy this into the src/modules/php4 directory
|
||||
This will create a libmodphp5.a library, a mod_php5.c and some
|
||||
accompanying files and copy this into the src/modules/php5 directory
|
||||
in the Apache source tree. Then you compile Apache using
|
||||
--activate-module=src/modules/php4/libphp4.a and the Apache build
|
||||
system will create libphp4.a and link it statically into the httpd
|
||||
binary. The PostgreSQL support is included directly into this httpd
|
||||
binary, so the final result here is a single httpd binary that
|
||||
includes all of Apache and all of PHP.
|
||||
--activate-module=src/modules/php5/libphp5.a and the Apache build
|
||||
system will create libphp5.a and link it statically into the httpd
|
||||
binary (replace php5 by php4 in PHP 4). The PostgreSQL support is
|
||||
included directly into this httpd binary, so the final result here is
|
||||
a single httpd binary that includes all of Apache and all of PHP.
|
||||
|
||||
./configure --with-apache=/path/to/apache_source --with-pgsql=shared
|
||||
|
||||
@@ -380,8 +384,8 @@ Apache 2.0 on Unix systems
|
||||
|
||||
* PHP 4.3.0 or later available at http://www.php.net/downloads.php.
|
||||
* the latest stable development version. Get the source code
|
||||
http://snaps.php.net/php4-latest.tar.gz or download binaries for
|
||||
Windows http://snaps.php.net/win32/php4-win32-latest.zip.
|
||||
http://snaps.php.net/php5-latest.tar.gz or download binaries for
|
||||
Windows http://snaps.php.net/win32/php5-win32-latest.zip.
|
||||
* a prerelease version downloadable from http://qa.php.net/.
|
||||
* you have always the option to obtain PHP through anonymous CVS.
|
||||
|
||||
@@ -403,7 +407,7 @@ Apache 2.0 on Unix systems
|
||||
files.
|
||||
|
||||
Example 2-4. Installation Instructions (Apache 2 Shared Module
|
||||
Version)
|
||||
Version)
|
||||
1. gzip -d httpd-2_0_NN.tar.gz
|
||||
2. tar xvf httpd-2_0_NN.tar
|
||||
3. gunzip php-NN.tar.gz
|
||||
@@ -461,11 +465,11 @@ Apache 2.0 on Unix systems
|
||||
|
||||
For PHP 4:
|
||||
|
||||
LoadModule php4_module libexec/libphp4.so
|
||||
LoadModule php4_module modules/libphp4.so
|
||||
|
||||
For PHP 5:
|
||||
|
||||
LoadModule php5_module libexec/libphp5.so
|
||||
LoadModule php5_module modules/libphp5.so
|
||||
|
||||
15. Tell Apache to parse certain extensions as PHP. For example,
|
||||
let's have Apache parse the .php extension as PHP. You could
|
||||
@@ -1097,6 +1101,121 @@ Common Problems
|
||||
"Apache PHP".
|
||||
_________________________________________________________________
|
||||
|
||||
Debian GNU/Linux installation notes
|
||||
|
||||
This section contains notes and hints specific to installing PHP on
|
||||
Debian GNU/Linux.
|
||||
_________________________________________________________________
|
||||
|
||||
Using APT
|
||||
|
||||
While you can just download the PHP source and compile it yourself,
|
||||
using Debian's packaging system is the simplest and cleanest method of
|
||||
installing PHP. If you are not familiar with building software on
|
||||
Linux, this is the way to go.
|
||||
|
||||
The first decision you need to make is whether you want to install
|
||||
Apache 1.3.x or Apache 2.x. The corresponding PHP packages are
|
||||
respectively named libapache-mod-php* and libapache2-mod-php*. The
|
||||
steps given below will use Apache 1.3.x. Please note that, as of this
|
||||
writing, there is no official Debian packages of PHP 5. Then the steps
|
||||
given below will install PHP 4.
|
||||
|
||||
PHP is available in Debian as CGI or CLI flavour too, named
|
||||
respectively php4-cgi and php4-cli. If you need them, you'll just have
|
||||
to reproduce the following steps with the good package names. Another
|
||||
special package you'd want to install is php4-pear. It contains a
|
||||
minimal PEAR installation and the pear commandline utility.
|
||||
|
||||
If you need more recent packages of PHP than the Debian's stable ones
|
||||
or if some PHP modules lacks the Debian official repository, perhaps
|
||||
you should take a look at http://www.apt-get.org/. One of the results
|
||||
found should be Dotdeb. This unofficial repository is maintained by
|
||||
Guillaume Plessis and contains Debian packages of the most recent
|
||||
versions of PHP 4 and PHP 5. To use it, just add the to following two
|
||||
lines to your /etc/apt/sources.lists and run apt-get update :
|
||||
|
||||
Example 2-10. The two Dotdeb related lines
|
||||
deb http://packages.dotdeb.org stable all
|
||||
deb-src http://packages.dotdeb.org stable all
|
||||
|
||||
The last thing to consider is whether your list of packages is up to
|
||||
date. If you have not updated it recently, you need to run apt-get
|
||||
update before anything else. This way, you will be using the most
|
||||
recent stable version of the Apache and PHP packages.
|
||||
|
||||
Now that everything is in place, you can use the following example to
|
||||
install Apache and PHP:
|
||||
|
||||
Example 2-11. Debian Install Example with Apache 1.3
|
||||
# apt-get install libapache-mod-php4
|
||||
|
||||
APT will automatically install the PHP 4 module for Apache 1.3, and
|
||||
all its dependencies and then activate it. If you're not asked to
|
||||
restart Apache during the install process, you'll have to do it
|
||||
manually :
|
||||
|
||||
Example 2-12. Stopping and starting Apache once PHP 4 is installed
|
||||
# /etc/init.d/apache stop
|
||||
# /etc/init.d/apache start
|
||||
_________________________________________________________________
|
||||
|
||||
Better control on configuration
|
||||
|
||||
In the last section, PHP was installed with only core modules. This
|
||||
may not be what you want and you will soon discover that you need more
|
||||
activated modules, like MySQL, cURL, GD, etc.
|
||||
|
||||
When you compile PHP from source yourself, you need to activate
|
||||
modules via the configure command. With APT, you just have to install
|
||||
additional packages. They're all named 'php4-*' (or 'php5-*' if you
|
||||
installed PHP 5 from a third party repository).
|
||||
|
||||
Example 2-13. Getting the list of PHP additional packages
|
||||
# dpkg -l 'php4-*'
|
||||
|
||||
As you can see from the last output, there's a lot of PHP modules that
|
||||
you can install (excluding the php4-cgi, php4-cli or php4-pear special
|
||||
packages). Look at them closely and choose what you need. If you
|
||||
choose a module and you do not have the proper libraries, APT will
|
||||
automatically install all the dependencies for you.
|
||||
|
||||
If you choose to add the MySQL, cURL and GD support to PHP the command
|
||||
will look something like this:
|
||||
|
||||
Example 2-14. Install PHP with MySQL, cURL and GD
|
||||
# apt-get install php4-mysql php4-curl php4-gd
|
||||
|
||||
APT will automatically add the appropriate lines to your different
|
||||
php.ini (/etc/php4/apache/php.ini, /etc/php4/cgi/php.ini, etc).
|
||||
|
||||
Example 2-15. These lines activate MySQL, cURL and GD into PHP
|
||||
extension=mysql.so
|
||||
extension=curl.so
|
||||
extension=gd.so
|
||||
|
||||
You'll only have to stop/start Apache as previously to activate the
|
||||
modules.
|
||||
_________________________________________________________________
|
||||
|
||||
Common Problems
|
||||
|
||||
* If you see the PHP source instead of the result the script should
|
||||
produce, APT has probably not included /etc/apache/conf.d/php4 in
|
||||
your Apache 1.3 configuration. Please ensure that the following
|
||||
line is present in your /etc/apache/httpd.conf file then
|
||||
stop/start Apache:
|
||||
|
||||
Example 2-16. This line activates PHP 4 into Apache
|
||||
# Include /etc/apache/conf.d/
|
||||
|
||||
* If you installed an additional module and if its functions are not
|
||||
available in your scripts, please ensure that the appropriate line
|
||||
is present in your php.ini, as seen before. APT may fail during
|
||||
the installation of the additional module, due to a confusing
|
||||
debconf configuration.
|
||||
_________________________________________________________________
|
||||
|
||||
Chapter 3. Installation on Mac OS X
|
||||
|
||||
This section contains notes and hints specific to installing PHP on
|
||||
@@ -1119,7 +1238,7 @@ Using Packages
|
||||
|
||||
Compiling for OS X Server
|
||||
|
||||
Mac OS X Server install.
|
||||
Mac OS X Server install.
|
||||
|
||||
1. Get the latest distributions of Apache and PHP.
|
||||
2. Untar them, and run the configure program on Apache like so.
|
||||
@@ -1221,24 +1340,24 @@ Chapter 4. Installation of PECL extensions
|
||||
|
||||
Introduction to PECL Installations
|
||||
|
||||
PHP extensions may be installed in a variety of ways. PECL is a
|
||||
repository of PHP extensions living within the PEAR structure, and the
|
||||
following demonstrates how to install these extensions.
|
||||
PECL is a repository of PHP extensions that are made available to you
|
||||
via the PEAR packaging system. This section of the manual is intended
|
||||
to demonstrate how to obtain and install PECL extensions.
|
||||
|
||||
These instructions assume /your/phpsrcdir/ is the path to the PHP
|
||||
source, and extname is the name of the PECL extension. Adjust
|
||||
accordingly. These instructions also assume a familiarity with the
|
||||
pear command.
|
||||
source distribution, and that extname is the name of the PECL
|
||||
extension. Adjust accordingly. These instructions also assume a
|
||||
familiarity with the pear command.
|
||||
|
||||
Shared extensions may be installed by including them inside of php.ini
|
||||
using the extension PHP directive. See also the extensions_dir
|
||||
directive, and dl(). The installation methods described below do not
|
||||
automatically configure PHP to include these extensions, this step
|
||||
must be done manually.
|
||||
To be useful, a shared extension must be built, installed, and loaded.
|
||||
The methods described below provide you with various instructions on
|
||||
how to build and install the extensions, but they do not automatically
|
||||
load them. Extensions can be loaded by adding an extension directive.
|
||||
To this php.ini file, or through the use of the dl() function.
|
||||
|
||||
When building PHP modules, it's important to have the appropriate
|
||||
versions of the required tools (autoconf, automake, libtool, etc.) See
|
||||
the Anonymous CVS Instructions for details on the required tools, and
|
||||
When building PHP modules, it's important to have known-good versions
|
||||
of the required tools (autoconf, automake, libtool, etc.) See the
|
||||
Anonymous CVS Instructions for details on the required tools, and
|
||||
required versions.
|
||||
_________________________________________________________________
|
||||
|
||||
@@ -1247,16 +1366,19 @@ Downloading PECL extensions
|
||||
There are several options for downloading PECL extensions, such as:
|
||||
|
||||
* http://pecl.php.net
|
||||
Listed here is information like the ChangeLog, release
|
||||
information, requirements, revisions, etc. Although not every PECL
|
||||
extension has a webpage, most do.
|
||||
The PECL web site contains information about the different
|
||||
extensions that are offered by the PHP Development Team. The
|
||||
information available here includes: ChangeLog, release notes,
|
||||
requirements and other similar details.
|
||||
* pear download extname
|
||||
The pear command may also be used to download source files.
|
||||
PECL extensions that have releases listed on the PECL web site are
|
||||
available for download and installation using the pear command.
|
||||
Specific revisions may also be specified.
|
||||
* CVS
|
||||
All PECL files reside in CVS. A web-based view may be seen at
|
||||
http://cvs.php.net/pecl/. To download straight from CVS, consider
|
||||
the following where phpfi is the password for user cvsread:
|
||||
Most PECL extensions also reside in CVS. A web-based view may be
|
||||
seen at http://cvs.php.net/pecl/. To download straight from CVS,
|
||||
the following sequence of commands may be used. Note that phpfi is
|
||||
the password for user cvsread:
|
||||
|
||||
$ cvs -d:pserver:cvsread@cvs.php.net:/repository login
|
||||
$ cvs -d:pserver:cvsread@cvs.php.net:/repository co pecl/extname
|
||||
@@ -1270,9 +1392,10 @@ $ cvs -d:pserver:cvsread@cvs.php.net:/repository co pecl/extname
|
||||
|
||||
PECL for Windows users
|
||||
|
||||
Like with any other PHP extension DLL, to install move the PECL
|
||||
extension DLLs into the extension_dir folder and include them within
|
||||
php.ini. For example:
|
||||
As with any other PHP extension DLL, installation is as simple as
|
||||
copying the PECL extension DLLs into the extension_dir folder and
|
||||
loading them from php.ini. For example, add the following line to your
|
||||
php.ini:
|
||||
|
||||
extension=php_extname.dll
|
||||
|
||||
@@ -1286,67 +1409,76 @@ Compiling shared PECL extensions with PEAR
|
||||
|
||||
$ pear install extname
|
||||
|
||||
That will download the source for extname, and compile it on the
|
||||
system. This results in an extname.so file that may then be included
|
||||
in php.ini
|
||||
This will download the source for extname, compile, and install
|
||||
extname.so into your extension_dir. extname.so may then be loaded via
|
||||
php.ini
|
||||
|
||||
In case the systems preferred_state is set higher than an available
|
||||
extname version, like it's set to stable and the extension is still in
|
||||
beta, either alter the preferred_state via pear config-set or specify
|
||||
a specific version of the PECL extension. For example:
|
||||
By default, the pear command will not install packages that are marked
|
||||
with the alpha or beta state. If no stable packages are available, you
|
||||
may install a beta package using the following command:
|
||||
|
||||
$ pear install extname-0.1.1
|
||||
$ pear install extname-beta
|
||||
|
||||
Regardless, pear will copy this extname.so into the extensions
|
||||
directory. Adjust php.ini accordingly.
|
||||
You may also install a specific version using this variant:
|
||||
|
||||
$ pear install extname-0.1
|
||||
_________________________________________________________________
|
||||
|
||||
Compiling shared PECL extensions with phpize
|
||||
|
||||
If using pear is not an option, like for building shared PECL
|
||||
extensions from CVS, or for unreleased PECL packages, then creating a
|
||||
shared extension may also be done by manually using the phpize
|
||||
command. The pear command essentially does this but it may also be
|
||||
done manually. Assuming the source file is named extname.tgz, and that
|
||||
it was downloaded into the current directory, consider the following:
|
||||
Sometimes, using the pear installer is not an option. This could be
|
||||
because you're behind a firewall, or it could be because the extension
|
||||
you want to install is not available as a PEAR compatible package,
|
||||
such as unreleased extensions from CVS. If you need to build such an
|
||||
extension, you can use the lower-level build tools to perform the
|
||||
build manually.
|
||||
|
||||
The phpize command is used to prepare the build environment for a PHP
|
||||
extension. In the following sample, the sources for an extension are
|
||||
in a directory named extname:
|
||||
|
||||
$ pear download extname
|
||||
$ gzip -d < extname.tgz | tar -xvf -
|
||||
$ cd extname
|
||||
$ phpize
|
||||
$ ./configure && make
|
||||
$ ./configure
|
||||
$ make
|
||||
# make install
|
||||
|
||||
Upon success, this will create extname.so and put it into the modules/
|
||||
and/or .libs/ directory within the extname/ source. Move this shared
|
||||
extension (extname.so) into the PHP extensions directory, and adjust
|
||||
php.ini accordingly.
|
||||
A successful install will have created extname.so and put it into the
|
||||
PHP extensions directory. You'll need to and adjust php.ini and add an
|
||||
extension=extname.so line before you can use the extension.
|
||||
_________________________________________________________________
|
||||
|
||||
Compiling PECL extensions statically into PHP
|
||||
|
||||
To statically include the extension within the PHP build, put the
|
||||
extensions source into the ext/ directory found in the PHP source. For
|
||||
example:
|
||||
You might find that you need to build a PECL extension statically into
|
||||
your PHP binary. To do this, you'll need to place the extension source
|
||||
under the php-src/ext/ directory and tell the PHP build system to
|
||||
regenerate its configure script.
|
||||
|
||||
$ cd /your/phpsrcdir/ext
|
||||
$ pear download extname
|
||||
$ gzip -d < extname.tgz | tar -xvf -
|
||||
$ mv extname-x.x.x extname
|
||||
$ rm package.xml
|
||||
|
||||
This will result in the following directory:
|
||||
|
||||
/your/phpsrcdir/ext/extname
|
||||
|
||||
From here, build PHP as normal:
|
||||
From here, force PHP to rebuild the configure script, and then build
|
||||
PHP as normal:
|
||||
|
||||
$ cd /your/phpsrcdir
|
||||
$ ./buildconf
|
||||
$ rm configure
|
||||
$ ./buildconf --force
|
||||
$ ./configure --help
|
||||
$ ./configure --with-extname --enable-someotherext --with-foobar
|
||||
$ make
|
||||
$ make install
|
||||
|
||||
Note: To run the 'buildconf' script you need autoconf 2.13 and
|
||||
automake 1.4+ (newer versions of autoconf may work, but are not
|
||||
supported).
|
||||
|
||||
Whether --enable-extname or --with-extname is used depends on the
|
||||
extension. Typically an extension that does not require external
|
||||
libraries uses --enable. To be sure, run the following after
|
||||
@@ -1403,14 +1535,23 @@ The configuration file
|
||||
versions of PHP, this happens only once when the web server is
|
||||
started. For the CGI and CLI version, it happens on every invocation.
|
||||
|
||||
The default location of php.ini is a compile time option (see the FAQ
|
||||
entry), but can be changed for the CGI and CLI version with the -c
|
||||
command line switch, see the chapter about using PHP from the command
|
||||
line. You can also use the environment variable PHPRC for an
|
||||
additional path to search for a php.ini file.
|
||||
php.ini is searched in these locations (in order):
|
||||
|
||||
* SAPI module specific location (PHPIniDir directive in Apache 2, -c
|
||||
command line option in CGI and CLI, php_ini parameter in NSAPI,
|
||||
PHP_INI_PATH environment variable in THTTPD)
|
||||
* HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (Windows Registry
|
||||
location)
|
||||
* The PHPRC environment variable
|
||||
* Current working directory (for CLI)
|
||||
* The web server's directory (for SAPI modules), or directory of PHP
|
||||
(otherwise in Windows)
|
||||
* Windows directory (C:\windows or C:\winnt) (for Windows), or
|
||||
--with-config-file-path compile time option
|
||||
|
||||
If php-SAPI.ini exists (where SAPI is used SAPI, so the filename is
|
||||
e.g. php-cli.ini or php-apache.ini), it's used instead of php.ini.
|
||||
SAPI name can be determined by php_sapi_name().
|
||||
|
||||
Note: The Apache web server changes the directory to root at
|
||||
startup causing PHP to attempt to read php.ini from the root
|
||||
@@ -1418,11 +1559,11 @@ The configuration file
|
||||
|
||||
The php.ini directives handled by extensions are documented
|
||||
respectively on the pages of the extensions themselves. The list of
|
||||
the core directives is available in the appendix. Probably not all the
|
||||
PHP directives are documented in the manual though. For a completel
|
||||
list of directives available in your PHP version, please read your
|
||||
well commented php.ini file. Alternatively, you may find the the
|
||||
latest php.ini from CVS helpful too.
|
||||
the core directives is available in the appendix. Probably not all PHP
|
||||
directives are documented in the manual though. For a complete list of
|
||||
directives available in your PHP version, please read your well
|
||||
commented php.ini file. Alternatively, you may find the the latest
|
||||
php.ini from CVS helpful too.
|
||||
|
||||
Example 6-1. php.ini example
|
||||
; any text on a line after an unquoted semicolon (;) is ignored
|
||||
@@ -1438,6 +1579,10 @@ include_path = ".:/usr/local/lib/php"
|
||||
|
||||
; backslashes are treated the same as any other character
|
||||
include_path = ".;c:\php\lib"
|
||||
|
||||
Since PHP 5.1.0, it is possible to refer to existing .ini variables
|
||||
from within .ini files. Example: open_basedir = ${open_basedir}
|
||||
":/new/dir".
|
||||
_________________________________________________________________
|
||||
|
||||
How to change configuration settings
|
||||
@@ -1533,3 +1678,420 @@ Other interfaces to PHP
|
||||
function, and review the resulting page. You can also access the
|
||||
values of individual configuration directives at runtime using
|
||||
ini_get() or get_cfg_var().
|
||||
_________________________________________________________________
|
||||
|
||||
Chapter 7. Installation FAQ
|
||||
|
||||
This section holds common questions about the way to install PHP. PHP
|
||||
is available for almost any OS (except maybe for MacOS before OSX),
|
||||
and almost any web server.
|
||||
|
||||
To install PHP, follow the instructions in the INSTALL file located in
|
||||
the distribution. Windows users should also read the install.txt file.
|
||||
There are also some helpful hints for Windows users here.
|
||||
|
||||
1. Why shouldn't I use Apache2 with a threaded MPM in a production
|
||||
environment?
|
||||
|
||||
2. Unix/Windows: Where should my php.ini file be located?
|
||||
3. Unix: I installed PHP, but every time I load a document, I get the
|
||||
message 'Document Contains No Data'! What's going on here?
|
||||
|
||||
4. Unix: I installed PHP using RPMS, but Apache isn't processing the
|
||||
PHP pages! What's going on here?
|
||||
|
||||
5. Unix: I installed PHP 3 using RPMS, but it doesn't compile with the
|
||||
database support I need! What's going on here?
|
||||
|
||||
6. Unix: I patched Apache with the FrontPage extensions patch, and
|
||||
suddenly PHP stopped working. Is PHP incompatible with the
|
||||
Apache FrontPage extensions?
|
||||
|
||||
7. Unix/Windows: I have installed PHP, but when I try to access a PHP
|
||||
script file via my browser, I get a blank screen.
|
||||
|
||||
8. Unix/Windows: I have installed PHP, but when try to access a PHP
|
||||
script file via my browser, I get a server 500 error.
|
||||
|
||||
9. Some operating systems: I have installed PHP without errors, but
|
||||
when I try to start apache I get undefined symbol errors:
|
||||
|
||||
[mybox:user /src/php4] root# apachectl configtest
|
||||
apachectl: /usr/local/apache/bin/httpd Undefined symbols:
|
||||
_compress
|
||||
_uncompress
|
||||
|
||||
10. Windows: I have installed PHP, but when I to access a PHP script
|
||||
file via my browser, I get the error:
|
||||
|
||||
cgi error:
|
||||
The specified CGI application misbehaved by not
|
||||
returning a complete set of HTTP headers.
|
||||
The headers it did return are:
|
||||
|
||||
11. Windows: I've followed all the instructions, but still can't get
|
||||
PHP and IIS to work together!
|
||||
|
||||
12. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get
|
||||
the following error: Security Alert! PHP CGI cannot be accessed
|
||||
directly..
|
||||
|
||||
13. How do I know if my php.ini is being found and read? It seems like
|
||||
it isn't as my changes aren't being implemented.
|
||||
|
||||
14. How do I add my PHP directory to the PATH on Windows?
|
||||
15. How do I make the php.ini file available to PHP on windows?
|
||||
16. Is it possible to use Apache content negotiation (MultiViews
|
||||
option) with PHP?
|
||||
|
||||
17. Is PHP limited to process GET and POST request methods only?
|
||||
|
||||
1. Why shouldn't I use Apache2 with a threaded MPM in a production
|
||||
environment?
|
||||
|
||||
PHP is glue. It is the glue used to build cool web applications by
|
||||
sticking dozens of 3rd-party libraries together and making it all
|
||||
appear as one coherent entity through an intuitive and easy to learn
|
||||
language interface. The flexibility and power of PHP relies on the
|
||||
stability and robustness of the underlying platform. It needs a
|
||||
working OS, a working web server and working 3rd-party libraries to
|
||||
glue together. When any of these stop working PHP needs ways to
|
||||
identify the problems and fix them quickly. When you make the
|
||||
underlying framework more complex by not having completely separate
|
||||
execution threads, completely separate memory segments and a strong
|
||||
sandbox for each request to play in, feet of clay are introduced into
|
||||
PHP's system.
|
||||
|
||||
If you feel you have to use a threaded MPM, look at a FastCGI
|
||||
configuration where PHP is running in its own memory space.
|
||||
|
||||
And finally, this warning against using a threaded MPM is not as
|
||||
strong for Windows systems because most libraries on that platform
|
||||
tend to be threadsafe.
|
||||
|
||||
2. Unix/Windows: Where should my php.ini file be located?
|
||||
|
||||
By default on Unix it should be in /usr/local/lib which is
|
||||
<install-path>/lib. Most people will want to change this at
|
||||
compile-time with the --with-config-file-path flag. You would, for
|
||||
example, set it with something like:
|
||||
--with-config-file-path=/etc
|
||||
|
||||
And then you would copy php.ini-dist from the distribution to
|
||||
/etc/php.ini and edit it to make any local changes you want.
|
||||
--with-config-file-scan-dir=PATH
|
||||
|
||||
On Windows the default path for the php.ini file is the Windows
|
||||
directory. If you're using the Apache webserver, php.ini is first
|
||||
searched in the Apaches install directory, e.g. c:\program
|
||||
files\apache group\apache. This way you can have different php.ini
|
||||
files for different versions of Apache on the same machine.
|
||||
|
||||
See also the chapter about the configuration file.
|
||||
|
||||
3. Unix: I installed PHP, but every time I load a document, I get the
|
||||
message 'Document Contains No Data'! What's going on here?
|
||||
|
||||
This probably means that PHP is having some sort of problem and is
|
||||
core-dumping. Look in your server error log to see if this is the
|
||||
case, and then try to reproduce the problem with a small test case. If
|
||||
you know how to use 'gdb', it is very helpful when you can provide a
|
||||
backtrace with your bug report to help the developers pinpoint the
|
||||
problem. If you are using PHP as an Apache module try something like:
|
||||
|
||||
* Stop your httpd processes
|
||||
* gdb httpd
|
||||
* Stop your httpd processes
|
||||
* > run -X -f /path/to/httpd.conf
|
||||
* Then fetch the URL causing the problem with your browser
|
||||
* > run -X -f /path/to/httpd.conf
|
||||
* If you are getting a core dump, gdb should inform you of this now
|
||||
* type: bt
|
||||
* You should include your backtrace in your bug report. This should
|
||||
be submitted to http://bugs.php.net/
|
||||
|
||||
If your script uses the regular expression functions (ereg() and
|
||||
friends), you should make sure that you compiled PHP and Apache with
|
||||
the same regular expression package. This should happen automatically
|
||||
with PHP and Apache 1.3.x
|
||||
|
||||
4. Unix: I installed PHP using RPMS, but Apache isn't processing the
|
||||
PHP pages! What's going on here?
|
||||
|
||||
Assuming you installed both Apache and PHP from RPM packages, you need
|
||||
to uncomment or add some or all of the following lines in your
|
||||
httpd.conf file:
|
||||
# Extra Modules
|
||||
AddModule mod_php.c
|
||||
AddModule mod_php3.c
|
||||
AddModule mod_perl.c
|
||||
|
||||
# Extra Modules
|
||||
LoadModule php_module modules/mod_php.so
|
||||
LoadModule php3_module modules/libphp3.so # for PHP 3
|
||||
LoadModule php4_module modules/libphp4.so # for PHP 4
|
||||
LoadModule perl_module modules/libperl.so
|
||||
|
||||
And add:
|
||||
AddType application/x-httpd-php3 .php3 # for PHP 3
|
||||
AddType application/x-httpd-php .php # for PHP 4
|
||||
|
||||
... to the global properties, or to the properties of the
|
||||
VirtualDomain you want to have PHP support added to.
|
||||
|
||||
5. Unix: I installed PHP 3 using RPMS, but it doesn't compile with the
|
||||
database support I need! What's going on here?
|
||||
|
||||
Due to the way PHP 3 built, it is not easy to build a complete
|
||||
flexible PHP RPM. This issue is addressed in PHP 4. For PHP 3, we
|
||||
currently suggest you use the mechanism described in the
|
||||
INSTALL.REDHAT file in the PHP distribution. If you insist on using an
|
||||
RPM version of PHP 3, read on...
|
||||
|
||||
The RPM packagers are setting up the RPMS to install without database
|
||||
support to simplify installations and because RPMS use /usr/ instead
|
||||
of the standard /usr/local/ directory for files. You need to tell the
|
||||
RPM spec file which databases to support and the location of the
|
||||
top-level of your database server.
|
||||
|
||||
This example will explain the process of adding support for the
|
||||
popular MySQL database server, using the mod installation for Apache.
|
||||
|
||||
Of course all of this information can be adjusted for any database
|
||||
server that PHP supports. We will assume you installed MySQL and
|
||||
Apache completely with RPMS for this example as well.
|
||||
|
||||
* First remove mod_php3 :
|
||||
|
||||
rpm -e mod_php3
|
||||
|
||||
* Then get the source rpm and INSTALL it, NOT --rebuild
|
||||
|
||||
rpm -Uvh mod_php3-3.0.5-2.src.rpm
|
||||
|
||||
* Then edit the /usr/src/redhat/SPECS/mod_php3.spec file
|
||||
In the %build section add the database support you want, and the
|
||||
path.
|
||||
For MySQL you would add --with-mysql=/usr The %build section will
|
||||
look something like this:
|
||||
|
||||
./configure --prefix=/usr \
|
||||
--with-apxs=/usr/sbin/apxs \
|
||||
--with-config-file-path=/usr/lib \
|
||||
--enable-debug=no \
|
||||
--enable-safe-mode \
|
||||
--with-exec-dir=/usr/bin \
|
||||
--with-mysql=/usr \
|
||||
--with-system-regex
|
||||
|
||||
* Once this modification is made then build the binary rpm as
|
||||
follows:
|
||||
|
||||
rpm -bb /usr/src/redhat/SPECS/mod_php3.spec
|
||||
|
||||
* Then install the rpm
|
||||
|
||||
rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm
|
||||
|
||||
Make sure you restart Apache, and you now have PHP 3 with MySQL
|
||||
support using RPM's. Note that it is probably much easier to just
|
||||
build from the distribution tarball of PHP 3 and follow the
|
||||
instructions in INSTALL.REDHAT found in that distribution.
|
||||
|
||||
6. Unix: I patched Apache with the FrontPage extensions patch, and
|
||||
suddenly PHP stopped working. Is PHP incompatible with the Apache
|
||||
FrontPage extensions?
|
||||
|
||||
No, PHP works fine with the FrontPage extensions. The problem is that
|
||||
the FrontPage patch modifies several Apache structures, that PHP
|
||||
relies on. Recompiling PHP (using 'make clean ; make') after the FP
|
||||
patch is applied would solve the problem.
|
||||
|
||||
7. Unix/Windows: I have installed PHP, but when I try to access a PHP
|
||||
script file via my browser, I get a blank screen.
|
||||
|
||||
Do a 'view source' in the web browser and you will probably find that
|
||||
you can see the source code of your PHP script. This means that the
|
||||
web server did not send the script to PHP for interpretation.
|
||||
Something is wrong with the server configuration - double check the
|
||||
server configuration against the PHP installation instructions.
|
||||
|
||||
8. Unix/Windows: I have installed PHP, but when try to access a PHP
|
||||
script file via my browser, I get a server 500 error.
|
||||
|
||||
Something went wrong when the server tried to run PHP. To get to see a
|
||||
sensible error message, from the command line, change to the directory
|
||||
containing the PHP executable (php.exe on Windows) and run php -i. If
|
||||
PHP has any problems running, then a suitable error message will be
|
||||
displayed which will give you a clue as to what needs to be done next.
|
||||
If you get a screen full of HTML codes (the output of the phpinfo()
|
||||
function) then PHP is working, and your problem may be related to your
|
||||
server configuration which you should double check.
|
||||
|
||||
9. Some operating systems: I have installed PHP without errors, but
|
||||
when I try to start apache I get undefined symbol errors:
|
||||
[mybox:user /src/php4] root# apachectl configtest
|
||||
apachectl: /usr/local/apache/bin/httpd Undefined symbols:
|
||||
_compress
|
||||
_uncompress
|
||||
|
||||
This has actually nothing to do with PHP, but with the MySQL client
|
||||
libraries. Some need --with-zlib, others do not. This is also covered
|
||||
in the MySQL FAQ.
|
||||
|
||||
10. Windows: I have installed PHP, but when I to access a PHP script
|
||||
file via my browser, I get the error:
|
||||
cgi error:
|
||||
The specified CGI application misbehaved by not
|
||||
returning a complete set of HTTP headers.
|
||||
The headers it did return are:
|
||||
|
||||
This error message means that PHP failed to output anything at all. To
|
||||
get to see a sensible error message, from the command line, change to
|
||||
the directory containing the PHP executable (php.exe on Windows) and
|
||||
run php -i. If PHP has any problems running, then a suitable error
|
||||
message will be displayed which will give you a clue as to what needs
|
||||
to be done next. If you get a screen full of HTML codes (the output of
|
||||
the phpinfo() function) then PHP is working.
|
||||
|
||||
Once PHP is working at the command line, try accessing the script via
|
||||
the browser again. If it still fails then it could be one of the
|
||||
following:
|
||||
|
||||
* File permissions on your PHP script, php.exe, php4ts.dll, php.ini
|
||||
or any PHP extensions you are trying to load are such that the
|
||||
anonymous internet user ISUR_<machinename> cannot access them.
|
||||
* The script file does not exist (or possibly isn't where you think
|
||||
it is relative to your web root directory). Note that for IIS you
|
||||
can trap this error by ticking the 'check file exists' box when
|
||||
setting up the script mappings in the Internet Services Manager.
|
||||
If a script file does not exist then the server will return a 404
|
||||
error instead. There is also the additional benefit that IIS will
|
||||
do any authentication required for you based on the NTLanMan
|
||||
permissions on your script file.
|
||||
|
||||
11. Windows: I've followed all the instructions, but still can't get
|
||||
PHP and IIS to work together!
|
||||
|
||||
Make sure any user who needs to run a PHP script has the rights to run
|
||||
php.exe! IIS uses an anonymous user which is added at the time IIS is
|
||||
installed. This user needs rights to php.exe. Also, any authenticated
|
||||
user will also need rights to execute php.exe. And for IIS4 you need
|
||||
to tell it that PHP is a script engine. Also, you will want to read
|
||||
this faq.
|
||||
|
||||
12. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get
|
||||
the following error: Security Alert! PHP CGI cannot be accessed
|
||||
directly..
|
||||
|
||||
You must set the cgi.force_redirect directive to 0. It defaults to 1
|
||||
so be sure the directive isn't commented out (with a ;). Like all
|
||||
directives, this is set in php.ini
|
||||
|
||||
Because the default is 1, it's critical that you're 100% sure that the
|
||||
correct php.ini file is being read. Read this faq for details.
|
||||
|
||||
13. How do I know if my php.ini is being found and read? It seems like
|
||||
it isn't as my changes aren't being implemented.
|
||||
|
||||
To be sure your php.ini is being read by PHP, make a call to phpinfo()
|
||||
and near the top will be a listing called Configuration File
|
||||
(php.ini). This will tell you where PHP is looking for php.ini and
|
||||
whether or not it's being read. If just a directory PATH exists than
|
||||
it's not being read and you should put your php.ini in that directory.
|
||||
If php.ini is included within the PATH than it is being read.
|
||||
|
||||
If php.ini is being read and you're running PHP as a module, then be
|
||||
sure to restart your web server after making changes to php.ini
|
||||
|
||||
14. How do I add my PHP directory to the PATH on Windows?
|
||||
|
||||
On Windows NT, 2000, XP and 2003:
|
||||
|
||||
* Go to Control Panel and open the System icon (Start -> Settings ->
|
||||
Control Panel -> System, or just Start -> Control Panel -> System
|
||||
for Windows XP/2003)
|
||||
* Go to the Advanced tab
|
||||
* Click on the 'Environment Variables' button
|
||||
* Look into the 'System Variables' pane
|
||||
* Find the Path entry (you may need to scroll to find it)
|
||||
* Double click on the Path entry
|
||||
* Enter your PHP directory ant the end, including ';' before (e.g.
|
||||
;C:\php)
|
||||
* Press OK and restart your computer
|
||||
|
||||
On Windows 98/Me you need to edit the autoexec.bat file:
|
||||
|
||||
* Open the Notepad (Start -> Run and enter notepad)
|
||||
* Open the C:\autoexec.bat file
|
||||
* Locate the line with PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... and
|
||||
add: ;C:\php to the end of the line
|
||||
* Save the file and restart your computer
|
||||
|
||||
Note: Be sure to reboot after following the steps above to ensure
|
||||
that the PATH changes are applied.
|
||||
|
||||
The PHP manual used to promote the copying of files into the Windows
|
||||
system directory, this is because this directory (C:\Windows,
|
||||
C:\WINNT, etc.) is by default in the systems PATH. Copying files into
|
||||
the Windows system directory has long since been deprecated and may
|
||||
cause problems.
|
||||
|
||||
15. How do I make the php.ini file available to PHP on windows?
|
||||
|
||||
There are several ways of doing this. If you are using Apache, read
|
||||
their installation specific instructions (Apache 1, Apache 2),
|
||||
otherwise you must set the PHPRC environment variable:
|
||||
|
||||
On Windows NT, 2000, XP and 2003:
|
||||
|
||||
* Go to Control Panel and open the System icon (Start -> Settings ->
|
||||
Control Panel -> System, or just Start -> Control Panel -> System
|
||||
for Windows XP/2003)
|
||||
* Go to the Advanced tab
|
||||
* Click on the 'Environment Variables' button
|
||||
* Look into the 'System variables' pane
|
||||
* Click on 'New' and enter 'PHPRC' as the variable name and the
|
||||
directory where php.ini is located as the variable value (e.g.
|
||||
C:\php)
|
||||
* Press OK and restart your computer
|
||||
|
||||
On Windows 98/Me you need to edit the autoexec.bat file:
|
||||
|
||||
* Open the Notepad (Start -> Run and enter notepad)
|
||||
* Open the C:\autoexec.bat file
|
||||
* Add a new line to the end of the file: set PHPRC=C:\php (replace
|
||||
C:\php with the directory where php.ini is located). Please note
|
||||
that the path cannot contain spaces. For instance, if you have
|
||||
installed PHP in C:\Program Files\PHP, you would enter
|
||||
C:\PROGRA~1\PHP instead.
|
||||
* Save the file and restart your computer
|
||||
|
||||
16. Is it possible to use Apache content negotiation (MultiViews
|
||||
option) with PHP?
|
||||
|
||||
If links to PHP files include extension, everything works perfect.
|
||||
This FAQ is only for the case when links to PHP files don't include
|
||||
extension and you want to use content negotiation to choose PHP files
|
||||
from URL with no extension. In this case, replace the line AddType
|
||||
application/x-httpd-php .php with:
|
||||
# PHP 4
|
||||
AddHandler php-script php
|
||||
AddType text/html php
|
||||
|
||||
# PHP 5
|
||||
AddHandler php5-script php
|
||||
AddType text/html php
|
||||
|
||||
This solution doesn't work for Apache 1 as PHP module doesn't catch
|
||||
php-script.
|
||||
|
||||
17. Is PHP limited to process GET and POST request methods only?
|
||||
|
||||
No, it is possible to handle any request method, e.g. CONNECT. Proper
|
||||
response status can be sent with header(). If only GET and POST
|
||||
methods should be handled, it can be achieved with this Apache
|
||||
configuration:
|
||||
<LimitExcept GET POST>
|
||||
Deny from all
|
||||
</LimitExcept>
|
||||
@@ -1,6 +1,6 @@
|
||||
--------------------------------------------------------------------
|
||||
The PHP License, Version 3.0
|
||||
Copyright (c) 1999 - 2005 The PHP Group. All rights reserved.
|
||||
The PHP License, version 3.01
|
||||
Copyright (c) 1999 - 2006 The PHP Group. All rights reserved.
|
||||
--------------------------------------------------------------------
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
@@ -38,8 +38,8 @@ are met:
|
||||
|
||||
6. Redistributions of any form whatsoever must retain the following
|
||||
acknowledgment:
|
||||
"This product includes PHP, freely available from
|
||||
<http://www.php.net/>".
|
||||
"This product includes PHP software, freely available from
|
||||
<http://www.php.net/software/>".
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
|
||||
ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
@@ -64,5 +64,5 @@ The PHP Group can be contacted via Email at group@php.net.
|
||||
For more information on the PHP Group and the PHP project,
|
||||
please see <http://www.php.net>.
|
||||
|
||||
This product includes the Zend Engine, freely available at
|
||||
PHP includes the Zend Engine, freely available at
|
||||
<http://www.zend.com>.
|
||||
+4
-4
@@ -7,17 +7,17 @@ $(builddir)/zend_language_scanner.lo: $(builddir)/zend_language_parser.h
|
||||
$(builddir)/zend_ini_scanner.lo: $(builddir)/zend_ini_parser.h
|
||||
|
||||
$(builddir)/zend_language_scanner.c: $(srcdir)/zend_language_scanner.l
|
||||
$(LEX) -Pzend -S$(srcdir)/flex.skl -o$@ -i $(srcdir)/zend_language_scanner.l
|
||||
@$(LEX) -Pzend -S$(srcdir)/flex.skl -o$@ -i $(srcdir)/zend_language_scanner.l
|
||||
|
||||
$(builddir)/zend_language_parser.h: $(builddir)/zend_language_parser.c
|
||||
$(builddir)/zend_language_parser.c: $(srcdir)/zend_language_parser.y
|
||||
$(YACC) -p zend -v -d $(srcdir)/zend_language_parser.y -o $@
|
||||
@$(YACC) -p zend -v -d $(srcdir)/zend_language_parser.y -o $@
|
||||
|
||||
$(builddir)/zend_ini_parser.h: $(builddir)/zend_ini_parser.c
|
||||
$(builddir)/zend_ini_parser.c: $(srcdir)/zend_ini_parser.y
|
||||
$(YACC) -p ini_ -v -d $(srcdir)/zend_ini_parser.y -o $@
|
||||
@$(YACC) -p ini_ -v -d $(srcdir)/zend_ini_parser.y -o $@
|
||||
|
||||
$(builddir)/zend_ini_scanner.c: $(srcdir)/zend_ini_scanner.l
|
||||
$(LEX) -Pini_ -S$(srcdir)/flex.skl -o$@ -i $(srcdir)/zend_ini_scanner.l
|
||||
@$(LEX) -Pini_ -S$(srcdir)/flex.skl -o$@ -i $(srcdir)/zend_ini_scanner.l
|
||||
|
||||
$(builddir)/zend_indent.lo $(builddir)/zend_highlight.lo $(builddir)/zend_compile.lo: $(builddir)/zend_language_parser.h
|
||||
@@ -0,0 +1,70 @@
|
||||
|
||||
#
|
||||
# LCOV
|
||||
#
|
||||
|
||||
lcov: lcov-html
|
||||
|
||||
lcov-test: all
|
||||
@echo "Running test suite"
|
||||
@find . -name \*.gcda -o -name \*.da -o -name \*.bbg? | xargs rm -f
|
||||
-@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
|
||||
NO_INTERACTION=1 \
|
||||
TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
|
||||
TEST_PHP_SRCDIR=$(top_srcdir) \
|
||||
CC="$(CC)" \
|
||||
$(PHP_EXECUTABLE) -d 'open_basedir=' -d 'safe_mode=0' -d 'output_buffering=0' -d 'memory_limit=-1' $(top_srcdir)/run-tests.php -d 'extension_dir=modules/' -d `( . $(PHP_MODULES) ; echo extension=$$dlname)` tests/; \
|
||||
elif test ! -z "$(SAPI_CLI_PATH)" && test -x "$(SAPI_CLI_PATH)"; then \
|
||||
NO_INTERACTION=1 \
|
||||
TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \
|
||||
TEST_PHP_SRCDIR=$(top_srcdir) \
|
||||
CC="$(CC)" \
|
||||
$(top_builddir)/$(SAPI_CLI_PATH) -d 'open_basedir=' -d 'safe_mode=0' -d 'output_buffering=0' -d 'memory_limit=-1' $(top_srcdir)/run-tests.php $(TESTS); \
|
||||
else \
|
||||
echo "ERROR: Cannot run tests without CLI sapi."; \
|
||||
fi
|
||||
|
||||
php_lcov.info: lcov-test
|
||||
@echo "Generating data for $@"
|
||||
@rm -rf lcov_data/
|
||||
@$(mkinstalldirs) lcov_data/
|
||||
@echo
|
||||
-@find . -name \*.gcda -o -name \*.gcno -o -name \*.da | sed -e 's/^\.\///' | sed -e 's/\.gcda//g' -e 's/\.gcno//g' -e 's/\.da//g' | uniq | while read x; do \
|
||||
echo -n . ;\
|
||||
y=`echo $$x | sed -e 's!\.libs/!!'`; \
|
||||
dir=lcov_data/`dirname $$x`; \
|
||||
test -d "$$dir" || $(mkinstalldirs) "$$dir"; \
|
||||
if test -f "$(top_srcdir)/$$y.c"; then \
|
||||
ln -f -s $(top_srcdir)/$$y.c lcov_data/$$y.c; \
|
||||
fi; \
|
||||
if test -f "$(top_srcdir)/$$y.re"; then \
|
||||
ln -f -s $(top_srcdir)/$$y.re lcov_data/$$y.re; \
|
||||
fi; \
|
||||
if test -f "$(top_srcdir)/$$y.y"; then \
|
||||
ln -f -s $(top_srcdir)/$$y.y lcov_data/$$y.y; \
|
||||
fi; \
|
||||
if test -f "$(top_srcdir)/$$y.l"; then \
|
||||
ln -f -s $(top_srcdir)/$$y.l lcov_data/$$y.l; \
|
||||
fi; \
|
||||
if test -f "$(top_builddir)/$$y.c"; then \
|
||||
ln -f -s $(top_builddir)/$$y.c lcov_data/$$y.c; \
|
||||
fi; \
|
||||
test -f "$$x.gcno" && cp $$x.gcno lcov_data/$$y.gcno ; \
|
||||
test -f "$$x.gcda" && cp $$x.gcda lcov_data/$$y.gcda ; \
|
||||
test -f "$$x.da" && cp $$x.da lcov_data/$$y.da ; \
|
||||
test -f "$$x.bb" && cp $$x.bb lcov_data/$$y.bb ; \
|
||||
test -f "$$x.bbg" && cp $$x.bbg lcov_data/$$y.bbg ; \
|
||||
done
|
||||
@echo
|
||||
@echo "Generating $@"
|
||||
@$(LTP) --directory lcov_data/ --capture --base-directory=lcov_data --output-file $@
|
||||
|
||||
lcov-html: php_lcov.info
|
||||
@echo "Generating lcov HTML"
|
||||
@$(LTP_GENHTML) --legend --no-prefix --output-directory lcov_html/ --title "PHP Code Coverage" --show-details php_lcov.info
|
||||
|
||||
lcov-clean:
|
||||
rm -f php_lcov.info
|
||||
rm -rf lcov_data/
|
||||
rm -rf lcov_html/
|
||||
|
||||
+27
-5
@@ -5,9 +5,6 @@ INSTALL_DATA = $(INSTALL) -m 644
|
||||
DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir)
|
||||
COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH)
|
||||
|
||||
CORE_HEADERS = Zend/ TSRM/ include/ main/ main/streams/ regex/ ext/standard/
|
||||
INSTALL_HEADERS = $(CORE_HEADERS) $(INSTALL_EXT_HEADERS)
|
||||
|
||||
all: $(all_targets)
|
||||
@echo
|
||||
@echo "Build complete."
|
||||
@@ -45,15 +42,40 @@ install-modules: build-modules
|
||||
@rm -f modules/*.la >/dev/null 2>&1
|
||||
@$(INSTALL) modules/* $(INSTALL_ROOT)$(EXTENSION_DIR)
|
||||
|
||||
install-headers:
|
||||
-@if test "$(INSTALL_HEADERS)"; then \
|
||||
for i in $(INSTALL_HEADERS); do \
|
||||
i=`$(top_srcdir)/build/shtool path -d $$i`; \
|
||||
paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \
|
||||
done; \
|
||||
$(mkinstalldirs) $$paths && \
|
||||
echo "Installing header files: $(INSTALL_ROOT)$(phpincludedir)/" && \
|
||||
for i in $(INSTALL_HEADERS); do \
|
||||
if test "$(PHP_PECL_EXTENSION)"; then \
|
||||
src=`echo $$i | $(SED) -e "s#ext/$(PHP_PECL_EXTENSION)/##g"`; \
|
||||
else \
|
||||
src=$$i; \
|
||||
fi; \
|
||||
if test -f "$(top_srcdir)/$$src"; then \
|
||||
$(INSTALL_DATA) $(top_srcdir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||
elif test -f "$(top_builddir)/$$src"; then \
|
||||
$(INSTALL_DATA) $(top_builddir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||
else \
|
||||
(cd $(top_srcdir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||
cd $(top_builddir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i) 2>/dev/null || true; \
|
||||
fi \
|
||||
done; \
|
||||
fi
|
||||
|
||||
install-su: install-pear
|
||||
|
||||
test: all
|
||||
-@if test ! -z $(PHP_EXECUTABLE) && test -x $(PHP_EXECUTABLE); then \
|
||||
-@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
|
||||
TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
|
||||
TEST_PHP_SRCDIR=$(top_srcdir) \
|
||||
CC="$(CC)" \
|
||||
$(PHP_EXECUTABLE) -d 'open_basedir=' -d 'safe_mode=0' -d 'output_buffering=0' -d 'memory_limit=-1' $(top_srcdir)/run-tests.php -d 'extension_dir=modules/' -d `( . $(PHP_MODULES) ; echo extension=$$dlname)` tests/; \
|
||||
elif test ! -z $(SAPI_CLI_PATH) && test -x $(SAPI_CLI_PATH); then \
|
||||
elif test ! -z "$(SAPI_CLI_PATH)" && test -x "$(SAPI_CLI_PATH)"; then \
|
||||
TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \
|
||||
TEST_PHP_SRCDIR=$(top_srcdir) \
|
||||
CC="$(CC)" \
|
||||
|
||||
+3
-3
@@ -31,11 +31,11 @@ Having said that, here are the organizational rules:
|
||||
6. Test your changes before committing them. We mean it. Really.
|
||||
|
||||
Currently we have the following branches in use:
|
||||
HEAD Will become PHP 5.1. This CVS branch is for active development.
|
||||
PHP_5_0 Is used to release the PHP 5.0.x series. Only minor feature
|
||||
HEAD Will become PHP 6.0. This CVS branch is for active development.
|
||||
PHP_5_1 Is used to release the PHP 5.1.x series. Only minor feature
|
||||
enhancements may go in here, but please keep that as infrequent as
|
||||
possible.
|
||||
PHP_4_3 Is used to release the PHP 4.3.x series. Only bugfixes are permitted
|
||||
PHP_4_4 Is used to release the PHP 4.4.x series. Only bugfixes are permitted
|
||||
on this branch.
|
||||
|
||||
The next few rules are more of a technical nature.
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ ZEND_END_MODULE_GLOBALS(my_input_filter)
|
||||
|
||||
ZEND_DECLARE_MODULE_GLOBALS(my_input_filter)
|
||||
|
||||
function_entry my_input_filter_functions[] = {
|
||||
zend_function_entry my_input_filter_functions[] = {
|
||||
PHP_FE(my_get_raw, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
@@ -64,14 +64,6 @@ documentation
|
||||
* Add developer documentation.
|
||||
* Add detailed documentation for Java extension.
|
||||
|
||||
ext/bz2
|
||||
-------
|
||||
* Add an ini directive to specify the size of decompression buffer.
|
||||
The default 4k is too small for large files and also requires much time
|
||||
for decompression. 40k is suitable for such files, however it may be too
|
||||
much under certain environments. There should be appropriate default
|
||||
settings for the various SAPI modules (e.g. apache and cli).
|
||||
|
||||
ext/curl
|
||||
--------
|
||||
* Have a warning scheme for when people use unsupported features.
|
||||
|
||||
@@ -2,4 +2,3 @@ Zend Engine
|
||||
-----------
|
||||
- Look at making zend_constant value member be a zval* instead of zval. (Andi)
|
||||
- Implement inheritance rules for type hints. (Marcus)
|
||||
- Find a keyword for the if-set-or operator (apply the patch). (Marcus, all)
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 1999, 2000, Andi Gutmans, Sascha Schumann, Zeev Suraski.
|
||||
Copyright (c) 1999-2006, Andi Gutmans, Sascha Schumann, Zeev Suraski.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
||||
+1
-2
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Thread Safe Resource Manager |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1999, 2000, Andi Gutmans, Sascha Schumann, Zeev Suraski|
|
||||
| Copyright (c) 1999-2006, Andi Gutmans, Sascha Schumann, Zeev Suraski |
|
||||
| This source file is subject to the TSRM license, that is bundled |
|
||||
| with this package in the file LICENSE |
|
||||
+----------------------------------------------------------------------+
|
||||
@@ -430,7 +430,6 @@ void *tsrm_new_interpreter_context(void)
|
||||
|
||||
current = tsrm_tls_get();
|
||||
|
||||
new_ctx = malloc(sizeof(*new_ctx));
|
||||
allocate_new_resource(&new_ctx, thread_id);
|
||||
|
||||
/* switch back to the context that was in use prior to our creation
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Thread Safe Resource Manager |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1999, 2000, Andi Gutmans, Sascha Schumann, Zeev Suraski|
|
||||
| Copyright (c) 1999-2006, Andi Gutmans, Sascha Schumann, Zeev Suraski |
|
||||
| This source file is subject to the TSRM license, that is bundled |
|
||||
| with this package in the file LICENSE |
|
||||
+----------------------------------------------------------------------+
|
||||
|
||||
@@ -42,6 +42,8 @@ char *alloca ();
|
||||
#ifndef MAXPATHLEN
|
||||
# ifdef PATH_MAX
|
||||
# define MAXPATHLEN PATH_MAX
|
||||
# elif defined(MAX_PATH)
|
||||
# define MAXPATHLEN MAX_PATH
|
||||
# else
|
||||
# define MAXPATHLEN 256
|
||||
# endif
|
||||
|
||||
+3
-3
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2005 The PHP Group |
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.0 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_0.txt. |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+3
-3
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2005 The PHP Group |
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.0 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_0.txt. |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+11
-7
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2005 The PHP Group |
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.0 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_0.txt. |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -478,13 +478,14 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
|
||||
#endif
|
||||
#if defined(TSRM_WIN32)
|
||||
{
|
||||
char *dummy = NULL;
|
||||
int new_path_length;
|
||||
|
||||
new_path_length = GetLongPathName(path, dummy, 0) + 1;
|
||||
new_path_length = GetLongPathName(path, NULL, 0);
|
||||
if (new_path_length == 0) {
|
||||
return 1;
|
||||
goto php_failed_getlongpath;
|
||||
}
|
||||
|
||||
/* GetLongPathName already counts the \0 */
|
||||
new_path = (char *) malloc(new_path_length);
|
||||
if (!new_path) {
|
||||
return 1;
|
||||
@@ -495,6 +496,7 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
|
||||
path_length = new_path_length;
|
||||
} else {
|
||||
free(new_path);
|
||||
php_failed_getlongpath:
|
||||
new_path = NULL;
|
||||
}
|
||||
}
|
||||
@@ -856,7 +858,9 @@ CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC)
|
||||
int retval;
|
||||
|
||||
CWD_STATE_COPY(&new_state, &CWDG(cwd));
|
||||
virtual_file_ex(&new_state, path, NULL, 1);
|
||||
if (virtual_file_ex(&new_state, path, NULL, 1)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
retval = stat(new_state.cwd, buf);
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2005 The PHP Group |
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.0 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_0.txt. |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+3
-3
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2005 The PHP Group |
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.0 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_0.txt. |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+3
-3
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2005 The PHP Group |
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.0 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_0.txt. |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -0,0 +1,548 @@
|
||||
$Id$
|
||||
|
||||
UPGRADE NOTES - PHP 5.1
|
||||
|
||||
1. Changes in reference handling
|
||||
a. Overview
|
||||
b. Code that worked under PHP 4.3, but now fails
|
||||
c. Code that was valid under PHP 4.3, but now throws an error
|
||||
d. Code that failed under PHP 4.3, but now works
|
||||
e. Code that 'should have worked' under PHP 5.0
|
||||
f. Warnings that came and went
|
||||
2. Reading []
|
||||
3. instanceof, is_a(), is_subclass_of(), catch
|
||||
4. Integer values in function parameters
|
||||
5. Abstract private methods
|
||||
6. Access modifiers in interfaces
|
||||
7. Changes in inheritance rules
|
||||
8. Class constants
|
||||
9. Extensions
|
||||
a. Extensions that are gone from the PHP core
|
||||
b. Class constants in new PHP 5.1 extensions
|
||||
10. Date/time support
|
||||
11. Changes in database support
|
||||
a. PDO overview
|
||||
b. Changes in MySQL support
|
||||
c. Changes in SQLite support
|
||||
12. Further migration information
|
||||
13. Checking for E_STRICT errors
|
||||
|
||||
===============================================================================
|
||||
|
||||
1. Changes in reference handling
|
||||
================================
|
||||
|
||||
1a. Overview
|
||||
============
|
||||
|
||||
>From the PHP script writer's point of view, the change most likely to impact
|
||||
legacy code is in the way that references are handled in all PHP versions
|
||||
post-dating the PHP 4.4.0 release.
|
||||
|
||||
Until and including PHP 4.3, it was possible to send, assign or return variables
|
||||
by reference that should really be returned by value, such as a constant, a
|
||||
temporary value (e.g. the result of an expression), or the result of a function
|
||||
that had itself been returned by value, as here:
|
||||
|
||||
<?php
|
||||
|
||||
$foo = "123";
|
||||
|
||||
function return_value() {
|
||||
global $foo;
|
||||
return $foo;
|
||||
}
|
||||
|
||||
$bar = &return_value();
|
||||
|
||||
?>
|
||||
|
||||
Although this code would usually work as expected under PHP 4.3, in the general
|
||||
case the result is undefined. The Zend Engine could not act correctly on these
|
||||
values as references. This bug could and did lead to various hard-to-reproduce
|
||||
memory corruption problems, particularly where the code base was large.
|
||||
|
||||
In PHP 4.4.0, PHP 5.0.4 and all subsequent PHP releases, the Engine was fixed
|
||||
to 'know' when the reference operation is being used on a value that should
|
||||
not be referenced. The actual value is now used in such cases, and a warning
|
||||
is emitted. The warning takes the form of an E_NOTICE in PHP 4.4.0 and up,
|
||||
and E_STRICT in PHP 5.0.4 and up.
|
||||
|
||||
Code that could potentially produce memory corruption can no longer do so.
|
||||
However, some legacy code might work differently as a result.
|
||||
|
||||
1b. Code that worked under PHP 4.3, but now fails
|
||||
=================================================
|
||||
|
||||
<?php
|
||||
|
||||
function func(&$arraykey) {
|
||||
return $arraykey; // function returns by value!
|
||||
}
|
||||
|
||||
$array = array('a', 'b', 'c');
|
||||
foreach (array_keys($array) as $key) {
|
||||
$y = &func($array[$key]);
|
||||
$z[] =& $y;
|
||||
}
|
||||
|
||||
var_dump($z);
|
||||
|
||||
?>
|
||||
Running the above script under any version of PHP that pre-dates the reference
|
||||
fix would produce this output:
|
||||
|
||||
array(3) {
|
||||
[0]=>
|
||||
&string(1) "a"
|
||||
[1]=>
|
||||
&string(1) "b"
|
||||
[2]=>
|
||||
&string(1) "c"
|
||||
}
|
||||
|
||||
Following the reference fix, the same code would result in:
|
||||
|
||||
array(3) {
|
||||
[0]=>
|
||||
&string(1) "c"
|
||||
[1]=>
|
||||
&string(1) "c"
|
||||
[2]=>
|
||||
&string(1) "c"
|
||||
}
|
||||
|
||||
This is because, following the changes, func() assigns by value. The value
|
||||
of $y is re-assigned, and reference-binding is preserved from $z. Prior
|
||||
to the fix, the value was assigned by reference, leading $y to be
|
||||
re-bound on each assignment. The attempt to bind to a temporary value
|
||||
by reference was the cause of the memory corruption.
|
||||
|
||||
Such code can be made to work identically in both the pre-fix and the
|
||||
post-fix PHP versions. The signature of func() can be altered to return
|
||||
by reference, or the reference assignment can be removed from the result
|
||||
of func().
|
||||
|
||||
<?php
|
||||
|
||||
function func() {
|
||||
return 'function return';
|
||||
}
|
||||
|
||||
$x = 'original value';
|
||||
$y =& $x;
|
||||
$y = &func();
|
||||
echo $x;
|
||||
|
||||
?>
|
||||
|
||||
In PHP 4.3 $x would be 'original value', whereas after the changes it would
|
||||
be 'function return' - remember that where the function does not return by
|
||||
reference, the reference assignment is converted to a regular assignment.
|
||||
Again, this can be brought to a common base, either by forcing func() to
|
||||
return by reference or by eliminating the by-reference assignment.
|
||||
|
||||
1c. Code that was valid under PHP 4.3, but now throws an error
|
||||
==============================================================
|
||||
|
||||
<?php
|
||||
|
||||
class Foo {
|
||||
|
||||
function getThis() {
|
||||
return $this;
|
||||
}
|
||||
|
||||
function destroyThis() {
|
||||
$baz =& $this->getThis();
|
||||
}
|
||||
}
|
||||
|
||||
$bar = new Foo();
|
||||
$bar->destroyThis();
|
||||
var_dump($bar);
|
||||
|
||||
?>
|
||||
|
||||
In PHP 5.0.3, $bar evaluated to NULL instead of returning an object.
|
||||
That happened because getThis() returns by value, but the value here
|
||||
is assigned by reference. Although it now works in the expected way,
|
||||
this is actually invalid code which will throw an E_NOTICE under
|
||||
PHP 4.4 or an E_STRICT under PHP 5.0.4 and up.
|
||||
|
||||
1d. Code that failed under PHP 4.3, but now works
|
||||
=================================================
|
||||
|
||||
<?php
|
||||
|
||||
function &f() {
|
||||
$x = "foo";
|
||||
var_dump($x);
|
||||
print "$x\n";
|
||||
return($a);
|
||||
}
|
||||
|
||||
for ($i = 0; $i < 3; $i++) {
|
||||
$h = &f();
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
In PHP 4.3 the third call to var_dump produces NULL, due to the memory
|
||||
corruption caused by returning an uninitialized value by reference.
|
||||
This is valid code in PHP 5.0.4 and up, but threw errors in earlier
|
||||
releases of PHP.
|
||||
|
||||
<?php
|
||||
|
||||
$arr = array('a1' => array('alfa' => 'ok'));
|
||||
$arr =& $arr['a1'];
|
||||
echo '-'.$arr['alfa']."-\n";
|
||||
|
||||
?>
|
||||
|
||||
Until PHP 5.0.5, it wasn't possible to assign an array element by
|
||||
reference in this way. It now is.
|
||||
|
||||
1e. Code that 'should have worked' under PHP 5.0
|
||||
================================================
|
||||
|
||||
There are a couple of instances of bugs reported under PHP 5.0 prior
|
||||
to the reference fixes which now 'work'. However, in both cases errors
|
||||
are thrown by PHP 5.1, because the code was invalid in the first place.
|
||||
Returning values by reference using self:: now works in the general
|
||||
case but throws an E_STRICT warning, and although your mileage may
|
||||
vary when assigning by reference to an overloaded object, you will
|
||||
still see an E_ERROR when you try it, even where the assignment
|
||||
itself appears to work.
|
||||
|
||||
1f. Warnings that came and went
|
||||
===============================
|
||||
|
||||
<?php
|
||||
|
||||
function & foo() {
|
||||
$var = 'ok';
|
||||
return $var;
|
||||
}
|
||||
|
||||
function & bar() {
|
||||
return foo();
|
||||
}
|
||||
|
||||
$a =& bar();
|
||||
echo "$a\n";
|
||||
|
||||
?>
|
||||
|
||||
Nested calls to functions returning by reference are valid code under both
|
||||
PHP 4.3 and PHP 5.1, but threw an unwarranted E_NOTICE or E_STRICT under
|
||||
the intervening PHP releases.
|
||||
|
||||
2. Reading []
|
||||
=============
|
||||
|
||||
<?php
|
||||
|
||||
class XmlTest {
|
||||
|
||||
function test_ref(&$test) {
|
||||
$test = "ok";
|
||||
}
|
||||
|
||||
function test($test) { }
|
||||
|
||||
function run() {
|
||||
$ar = array();
|
||||
$this->test_ref($ar[]);
|
||||
var_dump($ar);
|
||||
$this->test($ar[]);
|
||||
}
|
||||
}
|
||||
|
||||
$o = new XmlTest();
|
||||
$o->run();
|
||||
|
||||
?>
|
||||
|
||||
This should always have thrown a fatal E_ERROR, because [] cannot be used
|
||||
for reading in PHP. It is invalid code in PHP 4.4.2 and PHP 5.0.5 upward.
|
||||
|
||||
3. instanceof, is_a(), is_subclass_of(), catch
|
||||
==============================================
|
||||
|
||||
In PHP 5.0, is_a() was deprecated and replaced by the "instanceof" operator.
|
||||
There were some issues with the initial implementation of "instanceof", which
|
||||
relied on __autoload() to search for missing classes. If the class was not
|
||||
present, "instanceof" would throw a fatal E_ERROR due to the failure of
|
||||
__autoload() to discover that class. The same behaviour occurred in the
|
||||
"catch" operator and the is_subclass_of() function, for the same reason.
|
||||
|
||||
None of these functions or operators call __autoload() in PHP 5.1, and
|
||||
the class_exists() workarounds used in code written for PHP 5.0, while
|
||||
not problematic in any way, are no longer necessary.
|
||||
|
||||
4. Integer values in function parameters
|
||||
========================================
|
||||
|
||||
With the advent of PHP 5.0, a new parameter parsing API was introduced
|
||||
which is used by a large number of PHP functions. In all versions of
|
||||
PHP between 5.0 and 5.1, the handling of integer values was very strict
|
||||
and would reject non-well formed numeric values when a PHP function
|
||||
expected an integer. These checks have now been relaxed to support
|
||||
non-well formed numeric strings such as " 123" and "123 ", and will
|
||||
no longer fail as they did under PHP 5.0. However, to promote code
|
||||
safety and input validation, PHP functions will now emit an E_NOTICE
|
||||
when such strings are passed as integers.
|
||||
|
||||
5. Abstract private methods
|
||||
===========================
|
||||
|
||||
Abstract private methods were supported between PHP 5.0.0 and PHP 5.0.4,
|
||||
but were then disallowed on the grounds that the behaviours of 'private'
|
||||
and 'abstract' are mutually exclusive.
|
||||
|
||||
6. Access modifiers in interfaces
|
||||
=================================
|
||||
|
||||
Under PHP 5.0, function declarations in interfaces were treated in exactly
|
||||
the same way as function declarations in classes. This has not been the case
|
||||
since October 2004, at which point only the 'public' access modifier was
|
||||
allowed in interface function declarations. Since April 2005 - which pre-dates
|
||||
the PHP 5.0b1 release - the 'static' modifier has also been allowed. However,
|
||||
the 'protected' and 'private' modifiers will now throw an E_ERROR, as will
|
||||
'abstract'. Note that this change should not affect your existing code, as
|
||||
none of these modifiers makes sense in the context of interfaces anyway.
|
||||
|
||||
7. Changes in inheritance rules
|
||||
===============================
|
||||
|
||||
Under PHP 5.0, it was possible to have a function declaration in a derived class
|
||||
that did not match the declaration of the same function in the base class, e.g.
|
||||
|
||||
class Base {
|
||||
function &return_by_ref() {
|
||||
$r = 1;
|
||||
return $r;
|
||||
}
|
||||
}
|
||||
|
||||
class Derived extends Base {
|
||||
function return_by_ref() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
This code will cause an E_STRICT error to be emitted under PHP 5.1.
|
||||
|
||||
8. Class constants
|
||||
==================
|
||||
|
||||
Under PHP 5.0, the following code was valid:
|
||||
|
||||
<?php
|
||||
|
||||
class test {
|
||||
const foobar = 'foo';
|
||||
const foobar = 'bar';
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Under PHP 5.1, redefinition of a class constant will throw a fatal E_ERROR.
|
||||
|
||||
9. Extensions
|
||||
=============
|
||||
|
||||
9a. Extensions that are gone from the PHP core
|
||||
==============================================
|
||||
|
||||
One of the first things you're likely to notice when you download PHP 5.1 is that
|
||||
several of the older extensions have disappeared. Those extensions that are still
|
||||
actively maintained are available in the PHP Extension Community Library (PECL),
|
||||
at http://pecl.php.net. Windows binaries are built regularly, and you can obtain
|
||||
the binaries for PECL extensions built against PHP 5.1 from
|
||||
http://pecl4win.php.net/list.php/5_1.
|
||||
|
||||
Extension Alternative/status
|
||||
========= ========================
|
||||
ext/cpdf pecl/pdflib
|
||||
ext/dbx pecl/dbx
|
||||
ext/dio pecl/dio
|
||||
ext/fam not actively maintained
|
||||
ext/ingres_ii pecl/ingres
|
||||
ext/ircg not actively maintained
|
||||
ext/mcve pecl/mcve
|
||||
ext/mnogosearch not actively maintained
|
||||
ext/oracle ext/oci8 or ext/pdo_oci
|
||||
ext/ovrimos not actively maintained
|
||||
ext/pfpro not actively maintained
|
||||
- alternatives at http://pecl.php.net/packages.php?catpid=18&catname=Payment
|
||||
ext/w32api pecl/ffi
|
||||
ext/yp not actively maintained
|
||||
sapi/activescript http://pecl4win.php.net/ext.php/php5activescript.dll (PECL package)
|
||||
or pecl/activescript (CVS)
|
||||
|
||||
Modules in PECL that are not actively maintained (i.e. have not been supported
|
||||
for some time, have no active maintainer working on them currently, and do not
|
||||
have any PECL package releases), are still available in CVS at
|
||||
http://cvs.php.net/pecl/. However, unreleased PHP modules are by their nature
|
||||
unsupported, and your mileage may vary when attempting to install or use them.
|
||||
|
||||
9b. Class constants in new PHP 5.1 extensions
|
||||
=============================================
|
||||
|
||||
The Zend Engine 2.1 API allows extension developers to declare class constants
|
||||
in object oriented extensions. New extensions written for PHP 5.1, including SPL,
|
||||
PDO, ext/XMLReader and ext/date, have their constants in the format
|
||||
|
||||
PDO::CLASS_CONSTANT
|
||||
|
||||
rather than in the C format
|
||||
|
||||
PDO_CLASS_CONSTANT
|
||||
|
||||
in order to minimise pollution of the global namespace in PHP.
|
||||
|
||||
10. Date/time support
|
||||
====================
|
||||
|
||||
Date/time support has been fully rewritten in PHP 5.1, and no longer
|
||||
uses the system settings to 'know' the timezone in operation. It will
|
||||
instead utilize, in the following order:
|
||||
|
||||
* The timezone set using the date_default_timezone_set() function (if any)
|
||||
* The TZ environment variable (if non empty)
|
||||
* The date.timezone ini option (if set)
|
||||
* "magical" guess (if the operating system supports it)
|
||||
* If none of the above options succeeds, UTC
|
||||
|
||||
To ensure accuracy (and avoid an E_STRICT warning), you will need to define
|
||||
your timezone in your php.ini using the following format:
|
||||
|
||||
date.timezone = Europe/London
|
||||
|
||||
The supported timezones are listed, in this format, in the PHP manual at
|
||||
http://www.php.net/manual/en/timezones.php.
|
||||
|
||||
11. Changes in database support
|
||||
==============================
|
||||
|
||||
11a. PDO overview
|
||||
================
|
||||
|
||||
PHP Data Objects (PDO) were introduced as a PECL extension under PHP 5.0,
|
||||
and became part of the core PHP distribution in PHP 5.1. The PDO extension
|
||||
provides a consistent interface for database access, and is used alongside
|
||||
database-specific PDO drivers. Each driver may also have database-specific
|
||||
functions of its own, but basic data access functionality such as issuing
|
||||
queries and fetching data is covered by PDO functions, using the driver
|
||||
named in PDO::__construct().
|
||||
|
||||
Note that the PDO extension, and its drivers, are intended to be built as
|
||||
shared extensions. This will enable straightforward driver upgrades from
|
||||
PECL, without forcing you to rebuild all of PHP.
|
||||
|
||||
At the point of the PHP 5.1 release, PDO is more than ready for widespread
|
||||
testing and could be adopted in most situations. However, it is important
|
||||
to understand that PDO and its drivers are comparatively young and may be
|
||||
missing certain database-specific features; evaluate PDO carefully before
|
||||
you use it in new projects.
|
||||
|
||||
Legacy code will generally rely on the pre-existing database extensions,
|
||||
which are still maintained.
|
||||
|
||||
There is more in-depth information about the PDO extension in the manual
|
||||
at http://www.php.net/manual/ref.pdo.php.
|
||||
|
||||
11b. Changes in MySQL support
|
||||
============================
|
||||
|
||||
In PHP 4, MySQL 3 support was built-in. With the release of PHP 5.0 there
|
||||
were two MySQL extensions, named 'mysql' and 'mysqli', which were designed
|
||||
to support MySQL < 4.1 and MySQL 4.1 and up, respectively. With the
|
||||
introduction of PDO, which provides a very fast interface to all the
|
||||
database APIs supported by PHP, the PDO_MYSQL driver can support any
|
||||
of the current versions (MySQL 3, 4 or 5) in PHP code written for PDO,
|
||||
depending on the MySQL library version used during compilation. The
|
||||
older MySQL extensions remain in place for reasons of back compatibility,
|
||||
but are not enabled by default.
|
||||
|
||||
11c. Changes in SQLite support
|
||||
=============================
|
||||
|
||||
In PHP 5.0, SQLite 2 support was provided by the built-in sqlite
|
||||
extension, which was also available as a PECL extension in PHP 4.3
|
||||
and PHP 4.4. With the introduction of PDO, the sqlite extension doubles
|
||||
up to act as a 'sqlite2' driver for PDO; it is due to this that the
|
||||
sqlite extension in PHP 5.1 has a dependency upon the PDO extension.
|
||||
|
||||
PHP 5.1 ships with a number of alternative interfaces to sqlite:
|
||||
|
||||
The sqlite extension provides the "classic" sqlite procedural/OO API
|
||||
that you may have used in prior versions of PHP. It also provides the
|
||||
PDO 'sqlite2' driver, which allows you to access legacy SQLite 2
|
||||
databases using the PDO API.
|
||||
|
||||
PDO_SQLITE provides the 'sqlite' version 3 driver. SQLite version 3
|
||||
is vastly superior to SQLite version 2, but the file formats of the
|
||||
two versions are not compatible.
|
||||
|
||||
If your SQLite-based project is already written and working against
|
||||
earlier PHP versions, then you can continue to use ext/sqlite without
|
||||
problems, but will need to explicitly enable both PDO and sqlite. New
|
||||
projects should use PDO and the 'sqlite' (version 3) driver, as this is
|
||||
faster than SQLite 2, has improved locking concurrency, and supports
|
||||
both prepared statements and binary columns natively.
|
||||
|
||||
12. Further migration information
|
||||
================================
|
||||
|
||||
For general information about migrating from PHP 4 to PHP 5, please refer to
|
||||
the relevant section in the PHP manual at http://www.php.net/manual/migration5.php.
|
||||
|
||||
13. Checking for E_STRICT errors
|
||||
================================
|
||||
|
||||
If you only have a single script to check, you can pick up E_STRICT
|
||||
errors using PHP's commandline lint facility:
|
||||
|
||||
php -d error_reporting=4095 -l script_to_check.php
|
||||
|
||||
For larger projects, the shell script below will achieve the same task:
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
directory=$1
|
||||
|
||||
shift
|
||||
|
||||
# These extensions are checked
|
||||
extensions="php inc"
|
||||
|
||||
check_file ()
|
||||
{
|
||||
echo -ne "Doing PHP syntax check on $1 ..."
|
||||
|
||||
# Options:
|
||||
ERRORS=`/www/php/bin/php -d display_errors=1 -d html_errors=0 -d error_prepend_string=" " -d error_append_string=" " -d error_reporting=4095 -l $1 | grep -v "No syntax errors detected"`
|
||||
|
||||
if test -z "$ERRORS"; then
|
||||
echo -ne "OK."
|
||||
else
|
||||
echo -e "Errors found!\n$ERRORS"
|
||||
fi
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
# loop over remaining file args
|
||||
for FILE in "$@" ; do
|
||||
for ext in $extensions; do
|
||||
if echo $FILE | grep "\.$ext$" > /dev/null; then
|
||||
if test -f $FILE; then
|
||||
check_file "$FILE"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
--------------------------------------------------------------------
|
||||
The Zend Engine License, Version 2.00
|
||||
Copyright (c) 1999-2005 Zend Technologies Ltd. All rights reserved.
|
||||
Copyright (c) 1999-2006 Zend Technologies Ltd. All rights reserved.
|
||||
--------------------------------------------------------------------
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ libZend_la_SOURCES=\
|
||||
zend_list.c zend_indent.c zend_builtin_functions.c zend_sprintf.c \
|
||||
zend_ini.c zend_qsort.c zend_objects.c zend_object_handlers.c \
|
||||
zend_objects_API.c zend_ts_hash.c zend_stream.c zend_mm.c \
|
||||
zend_default_classes.c zend_reflection_api.c \
|
||||
zend_default_classes.c \
|
||||
zend_iterators.c zend_interfaces.c zend_exceptions.c \
|
||||
zend_strtod.c zend_multibyte.c
|
||||
|
||||
|
||||
@@ -227,10 +227,6 @@ SOURCE=.\zend_qsort.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zend_reflection_api.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zend_sprintf.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -407,10 +403,6 @@ SOURCE=.\zend_qsort.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zend_reflection_api.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zend_stack.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
@@ -260,10 +260,6 @@ SOURCE=.\zend_qsort.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zend_reflection_api.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zend_sprintf.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -444,10 +440,6 @@ SOURCE=.\zend_qsort.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zend_reflection_api.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zend_stack.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+14
-11
@@ -4,28 +4,31 @@ dnl This file contains local autoconf functions.
|
||||
|
||||
AC_DEFUN([LIBZEND_BISON_CHECK],[
|
||||
# we only support certain bison versions
|
||||
bison_version_list="1.28 1.35 1.75 1.875 2.0"
|
||||
bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1"
|
||||
|
||||
# for standalone build of Zend Engine
|
||||
test -z "$SED" && SED=sed
|
||||
|
||||
bison_version=none
|
||||
if test "$YACC"; then
|
||||
AC_CACHE_CHECK([for bison version], php_cv_bison_version, [
|
||||
set `bison --version| grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /'|tr -d a-z`
|
||||
bison_version="${1}.${2}"
|
||||
bison_version_vars=`bison --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /' | tr -d a-z`
|
||||
php_cv_bison_version=invalid
|
||||
for bison_check_version in $bison_version_list; do
|
||||
if test "$bison_version" = "$bison_check_version"; then
|
||||
php_cv_bison_version="$bison_check_version (ok)"
|
||||
fi
|
||||
done
|
||||
if test -n "$bison_version_vars"; then
|
||||
set $bison_version_vars
|
||||
bison_version="${1}.${2}"
|
||||
for bison_check_version in $bison_version_list; do
|
||||
if test "$bison_version" = "$bison_check_version"; then
|
||||
php_cv_bison_version="$bison_check_version (ok)"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
])
|
||||
else
|
||||
bison_version=none
|
||||
fi
|
||||
case $php_cv_bison_version in
|
||||
""|invalid[)]
|
||||
bison_msg="bison versions supported for regeneration of the Zend/PHP parsers: $bison_version_list (found: $bison_version)."
|
||||
bison_msg="bison versions supported for regeneration of the Zend/PHP parsers: $bison_version_list (found: $bison_version)."
|
||||
AC_MSG_WARN([$bison_msg])
|
||||
YACC="exit 0;"
|
||||
;;
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -12,4 +12,4 @@ foo(123);
|
||||
--EXPECTF--
|
||||
3
|
||||
|
||||
Fatal error: Argument 1 must be an array, called in %sarray_type_hint_001.php on line 7 and defined in %sarray_type_hint_001.php on line 2
|
||||
Fatal error: Argument 1 passed to foo() must be an array, called in %sarray_type_hint_001.php on line 7 and defined in %sarray_type_hint_001.php on line 2
|
||||
@@ -39,5 +39,5 @@ echo "Done\n";
|
||||
2
|
||||
3
|
||||
Done
|
||||
test::__destruct
|
||||
test::destructor
|
||||
test::__destruct
|
||||
@@ -34,6 +34,3 @@ $c->viewMom();
|
||||
--EXPECT--
|
||||
protected method
|
||||
protected property
|
||||
--EXPECT--
|
||||
protected method
|
||||
protected property
|
||||
@@ -8,7 +8,7 @@ class Test {
|
||||
function __copy()
|
||||
{
|
||||
$string = PHP_VERSION;
|
||||
$version = $string{0};
|
||||
$version = $string[0];
|
||||
if($string < 5)
|
||||
{
|
||||
return $this;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--TEST--
|
||||
Bug #26077 Memory leaks when creating an instance of an object
|
||||
Bug #26077 (Memory leaks when creating an instance of an object)
|
||||
--FILE--
|
||||
<?php
|
||||
class foo {} new foo();
|
||||
|
||||
@@ -3,7 +3,7 @@ Bug #26281 (switch() crash when condition is a string offset)
|
||||
--FILE--
|
||||
<?php
|
||||
$x = 'abc';
|
||||
switch ($x{0}) {
|
||||
switch ($x[0]) {
|
||||
case 'a':
|
||||
echo "no crash\n";
|
||||
break;
|
||||
|
||||
@@ -4,14 +4,14 @@ Bug #26801 (switch ($a{0}) crash)
|
||||
<?php
|
||||
|
||||
$a = '11';
|
||||
$b = $a{0};
|
||||
$b = $a[0];
|
||||
switch ($b) {
|
||||
case '-':
|
||||
break;
|
||||
}
|
||||
|
||||
$a = '22';
|
||||
switch ($a{0}) {
|
||||
switch ($a[0]) {
|
||||
case '-':
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -89,10 +89,14 @@ if (is_callable(array('test_class','test_func4'))) {
|
||||
$object = new foo();
|
||||
$object->test();
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECTF--
|
||||
test_func1
|
||||
test_func2
|
||||
|
||||
Strict Standards: Non-static method test_class::test_func3() cannot be called statically, assuming $this from compatible context test_class in %sbug29210.php on line %d
|
||||
test_func3
|
||||
|
||||
Strict Standards: Non-static method test_class::test_func4() cannot be called statically, assuming $this from compatible context test_class in %sbug29210.php on line %d
|
||||
test_func4
|
||||
test_func1 isn't callable from outside
|
||||
test_func2 isn't callable from outside
|
||||
@@ -100,5 +104,9 @@ test_func3 isn't callable from outside
|
||||
test_func4 isn't callable from outside
|
||||
test_func1 isn't callable from child
|
||||
test_func2
|
||||
|
||||
Strict Standards: Non-static method test_class::test_func3() cannot be called statically, assuming $this from compatible context foo in %sbug29210.php on line %d
|
||||
test_func3 isn't callable from child
|
||||
|
||||
Strict Standards: Non-static method test_class::test_func4() cannot be called statically, assuming $this from compatible context foo in %sbug29210.php on line %d
|
||||
test_func4
|
||||
@@ -1,5 +1,5 @@
|
||||
--TEST--
|
||||
Bug 30346 (arrayAcces & using $this)
|
||||
Bug #30346 (arrayAccess and using $this)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
@@ -21,4 +21,4 @@ echo "\n";
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
page_show
|
||||
===DONE===
|
||||
===DONE===
|
||||
@@ -9,11 +9,11 @@ var_dump(isset($a->b));
|
||||
$a = '0';
|
||||
var_dump(isset($a->b));
|
||||
$a = '';
|
||||
var_dump(isset($a{'b'}));
|
||||
var_dump(isset($a['b']));
|
||||
$a = 'a';
|
||||
var_dump(isset($a{'b'}));
|
||||
var_dump(isset($a['b']));
|
||||
$a = '0';
|
||||
var_dump(isset($a{'b'}));
|
||||
var_dump(isset($a['b']));
|
||||
|
||||
$simpleString = "Bogus String Text";
|
||||
echo isset($simpleString->wrong)?"bug\n":"ok\n";
|
||||
|
||||
Executable
+18
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Bug #31177 (memory corruption because of incorrect refcounting)
|
||||
--FILE--
|
||||
<?php
|
||||
class foo {
|
||||
function foo($n=0) {
|
||||
if($n) throw new Exception("new");
|
||||
}
|
||||
}
|
||||
$x = new foo();
|
||||
try {
|
||||
$y=$x->foo(1);
|
||||
} catch (Exception $e) {
|
||||
var_dump($x);
|
||||
}
|
||||
--EXPECT--
|
||||
object(foo)#1 (0) {
|
||||
}
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
--TEST--
|
||||
Bug #31341 (escape on curly inconsistent)
|
||||
--FILE--
|
||||
<?php
|
||||
$a = array(
|
||||
"$ \{ ",
|
||||
" \{ $",
|
||||
" \{$ ",
|
||||
" $\{ ",
|
||||
" \$\{ ",
|
||||
" \{\$ ",
|
||||
"\$ \{ ",
|
||||
" \{ \$",
|
||||
"% \{ ");
|
||||
|
||||
foreach ($a as $v) {
|
||||
echo("'$v'\n");
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
'$ \{ '
|
||||
' \{ $'
|
||||
' \{$ '
|
||||
' $\{ '
|
||||
' $\{ '
|
||||
' \{$ '
|
||||
'$ \{ '
|
||||
' \{ $'
|
||||
'% \{ '
|
||||
@@ -7,7 +7,31 @@ class TestA
|
||||
{
|
||||
public function doSomething($i)
|
||||
{
|
||||
echo __METHOD__ . "($this)\n";
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
|
||||
public function doSomethingThis($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
|
||||
public function doSomethingParent($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
|
||||
public function doSomethingParentThis($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
|
||||
public static function doSomethingStatic($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
return --$i;
|
||||
}
|
||||
}
|
||||
@@ -16,20 +40,87 @@ class TestB extends TestA
|
||||
{
|
||||
public function doSomething($i)
|
||||
{
|
||||
echo __METHOD__ . "($this)\n";
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array("TestA","doSomething"), array($i));
|
||||
return call_user_func_array(array("TestA", "doSomething"), array($i));
|
||||
}
|
||||
|
||||
public function doSomethingThis($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array($this, "TestA::doSomethingThis"), array($i));
|
||||
}
|
||||
|
||||
public function doSomethingParent($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array("parent", "doSomethingParent"), array($i));
|
||||
}
|
||||
|
||||
public function doSomethingParentThis($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array($this, "parent::doSomethingParentThis"), array($i));
|
||||
}
|
||||
|
||||
public static function doSomethingStatic($i)
|
||||
{
|
||||
echo __METHOD__ . "($i)\n";
|
||||
$i++;
|
||||
if ($i >= 5) return 5;
|
||||
return call_user_func_array(array("TestA", "doSomethingStatic"), array($i));
|
||||
}
|
||||
}
|
||||
|
||||
$x = new TestB();
|
||||
echo "===A===\n";
|
||||
var_dump($x->doSomething(1));
|
||||
echo "\n===B===\n";
|
||||
var_dump($x->doSomethingThis(1));
|
||||
echo "\n===C===\n";
|
||||
var_dump($x->doSomethingParent(1));
|
||||
echo "\n===D===\n";
|
||||
var_dump($x->doSomethingParentThis(1));
|
||||
echo "\n===E===\n";
|
||||
var_dump($x->doSomethingStatic(1));
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
<?php exit(0); ?>
|
||||
--EXPECTF--
|
||||
TestB::doSomething(Object id #%d)
|
||||
TestA::doSomething(Object id #%d)
|
||||
===A===
|
||||
TestB::doSomething(1)
|
||||
|
||||
Strict Standards: Non-static method TestA::doSomething() cannot be called statically, assuming $this from compatible context TestB in %sbug32290.php on line %d
|
||||
TestA::doSomething(2)
|
||||
int(1)
|
||||
|
||||
===B===
|
||||
TestB::doSomethingThis(1)
|
||||
TestA::doSomethingThis(2)
|
||||
int(1)
|
||||
|
||||
===C===
|
||||
TestB::doSomethingParent(1)
|
||||
|
||||
Strict Standards: Non-static method TestA::doSomethingParent() cannot be called statically, assuming $this from compatible context TestB in %sbug32290.php on line %d
|
||||
TestA::doSomethingParent(2)
|
||||
int(1)
|
||||
|
||||
===D===
|
||||
TestB::doSomethingParentThis(1)
|
||||
TestA::doSomethingParentThis(2)
|
||||
int(1)
|
||||
|
||||
===E===
|
||||
TestB::doSomethingStatic(1)
|
||||
TestA::doSomethingStatic(2)
|
||||
int(1)
|
||||
===DONE===
|
||||
@@ -1,5 +1,7 @@
|
||||
--TEST--
|
||||
Bug #33257 array_splice() inconsistent when passed function instead of variable
|
||||
--INI--
|
||||
error_reporting=4095
|
||||
--FILE--
|
||||
<?php
|
||||
class X {
|
||||
@@ -14,4 +16,10 @@ array_splice(X::getArr(), 1, 1);
|
||||
print_r(X::getArr());
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Only variables can be passed by reference in %sbug33257.php on line 10
|
||||
Strict Standards: Only variables should be passed by reference in %sbug33257.php on line 10
|
||||
Array
|
||||
(
|
||||
[0] => a
|
||||
[1] => b
|
||||
[2] => c
|
||||
)
|
||||
Executable
+66
@@ -0,0 +1,66 @@
|
||||
--TEST--
|
||||
Bug #33512 (unset() overloaded properties doesn't work)
|
||||
--FILE--
|
||||
<?php
|
||||
class TheObj {
|
||||
public $RealVar1, $RealVar2, $RealVar3, $RealVar4;
|
||||
public $Var = array();
|
||||
|
||||
function __set($var, $val) {
|
||||
$this->Var[$var] = $val;
|
||||
}
|
||||
function __get($var) {
|
||||
if(isset($this->Var[$var])) return $this->Var[$var];
|
||||
else return -1;
|
||||
}
|
||||
function __unset($var) {
|
||||
unset($this->Var[$var]);
|
||||
}
|
||||
}
|
||||
|
||||
$SomeObj = new TheObj;
|
||||
|
||||
// this will fine
|
||||
$SomeObj->RealVar1 = 'somevalue';
|
||||
$SomeObj->{'RealVar2'} = 'othervalue';
|
||||
$SomeObj->{'RealVar'.(3)} = 'othervaluetoo';
|
||||
$SomeObj->{'RealVar'.'4'} = 'anothervalue';
|
||||
|
||||
// this will fine too
|
||||
$SomeObj->Virtual1 = 'somevalue';
|
||||
$SomeObj->{'Virtual2'} = 'othervalue';
|
||||
|
||||
// it's can't be used since this will encounter error
|
||||
$SomeObj->{'Virtual'.(3)} = 'othervaluetoo';
|
||||
$SomeObj->{'Virtual'.'4'} = 'anothervalue';
|
||||
|
||||
// but this will fine, ofcourse
|
||||
$SomeObj->Var['Virtual'.(3)] = 'othervaluetoo';
|
||||
$SomeObj->Var['Virtual'.'4'] = 'anothervalue';
|
||||
|
||||
|
||||
var_dump($SomeObj->RealVar1);
|
||||
print $SomeObj->{'RealVar'.(3)}."\n";
|
||||
|
||||
unset($SomeObj->RealVar1);
|
||||
unset($SomeObj->{'RealVar'.(3)});
|
||||
|
||||
//the lines below will catch by '__get' magic method since these variables are unavailable anymore
|
||||
var_dump($SomeObj->RealVar1);
|
||||
print $SomeObj->{'RealVar'.(3)}."\n";
|
||||
|
||||
// now we will try to unset these variables
|
||||
unset($SomeObj->Virtual1);
|
||||
unset($SomeObj->{'Virtual'.(3)});
|
||||
|
||||
//but, these variables are still available??? eventhough they're "unset"-ed
|
||||
print $SomeObj->Virtual1."\n";
|
||||
print $SomeObj->{'Virtual'.(3)}."\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
string(9) "somevalue"
|
||||
othervaluetoo
|
||||
int(-1)
|
||||
-1
|
||||
-1
|
||||
-1
|
||||
Executable
+45
@@ -0,0 +1,45 @@
|
||||
--TEST--
|
||||
Bug #33732 (Wrong behavior of constants in class and interface extending)
|
||||
--FILE--
|
||||
<?php
|
||||
interface iA {
|
||||
const cA = "const of iA\n";
|
||||
}
|
||||
|
||||
class A implements iA {
|
||||
}
|
||||
|
||||
class B extends A implements iA {
|
||||
}
|
||||
|
||||
echo iA::cA;
|
||||
echo A::cA;
|
||||
echo B::cA;
|
||||
|
||||
|
||||
interface iA2 {
|
||||
const cA = "const of iA2\n";
|
||||
}
|
||||
|
||||
interface iB2 extends iA2 {
|
||||
}
|
||||
|
||||
class A2 implements iA2 {
|
||||
}
|
||||
|
||||
class B2 extends A2 implements iB2 {
|
||||
}
|
||||
|
||||
echo iA2::cA;
|
||||
echo A2::cA;
|
||||
echo iB2::cA;
|
||||
echo B2::cA;
|
||||
?>
|
||||
--EXPECT--
|
||||
const of iA
|
||||
const of iA
|
||||
const of iA
|
||||
const of iA2
|
||||
const of iA2
|
||||
const of iA2
|
||||
const of iA2
|
||||
@@ -0,0 +1,40 @@
|
||||
--TEST--
|
||||
bug #33771 (error_reporting falls to 0 when @ was used inside try/catch block)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
function make_exception()
|
||||
{
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
function make_exception_and_change_err_reporting()
|
||||
{
|
||||
error_reporting(E_ALL);
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
@make_exception();
|
||||
} catch (Exception $e) {}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
try {
|
||||
@make_exception_and_change_err_reporting();
|
||||
} catch (Exception $e) {}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
int(4095)
|
||||
int(4095)
|
||||
int(2047)
|
||||
Done
|
||||
@@ -26,4 +26,4 @@ FooTest(new Foo());
|
||||
--EXPECTF--
|
||||
Warning: Missing argument 1 for NormalTest(), called in %sbug33996.php on line 17 and defined in %sbug33996.php on line 12
|
||||
Hi!
|
||||
Fatal error: Argument 1 must be an object of class Foo, called in %sbug33996.php on line 18 and defined in %sbug33996.php on line 7
|
||||
Fatal error: Argument 1 passed to FooTest() must be an object of class Foo, called in %sbug33996.php on line 18 and defined in %sbug33996.php on line 7
|
||||
Executable
+28
@@ -0,0 +1,28 @@
|
||||
--TEST--
|
||||
Bug #34045 (Buffer overflow with serialized object)
|
||||
--FILE--
|
||||
<?php
|
||||
class BasicSingleton
|
||||
{
|
||||
private static $instance;
|
||||
|
||||
public function __wakeup() {
|
||||
self::$instance = $this;
|
||||
}
|
||||
|
||||
public static function singleton() {
|
||||
if (!(self::$instance instanceof BasicSingleton)) {
|
||||
$c = __CLASS__;
|
||||
self::$instance = new $c;
|
||||
}
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
||||
|
||||
$db = BasicSingleton::singleton();
|
||||
$db_str = serialize($db);
|
||||
$db2 = unserialize($db_str);
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
ok
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #34062 (Crash in catch block when many arguments are used)
|
||||
--FILE--
|
||||
<?php
|
||||
function f1() { throw new Exception; }
|
||||
function f2() { echo "here\n"; }
|
||||
|
||||
try {
|
||||
// Currently it's the minimum required number of zeros
|
||||
// If you remove one, it won't crash
|
||||
max(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, f1());
|
||||
} catch (Exception $e) {
|
||||
echo "(((\n";
|
||||
f2(0, 0, 0); // Won't crash if less than 3 zeros here
|
||||
echo ")))\n";
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
(((
|
||||
here
|
||||
)))
|
||||
|
||||
Executable
+35
@@ -0,0 +1,35 @@
|
||||
--TEST--
|
||||
Bug #34064 (arr[] as param to function in class gives invalid opcode)
|
||||
--FILE--
|
||||
<?php
|
||||
class XmlTest {
|
||||
|
||||
function test_ref(&$test)
|
||||
{
|
||||
$test = "ok";
|
||||
}
|
||||
|
||||
function test($test)
|
||||
{
|
||||
}
|
||||
|
||||
function run()
|
||||
{
|
||||
$ar = array();
|
||||
$this->test_ref($ar[]);
|
||||
var_dump($ar);
|
||||
$this->test($ar[]);
|
||||
}
|
||||
}
|
||||
|
||||
$o = new XmlTest();
|
||||
$o->run();
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(2) "ok"
|
||||
}
|
||||
|
||||
Fatal error: Cannot use [] for reading in %sbug34064.php on line 18
|
||||
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
--TEST--
|
||||
Bug #34137 (assigning array element by reference causes binary mess)
|
||||
--FILE--
|
||||
<?php
|
||||
$arr1 = array('a1' => array('alfa' => 'ok'));
|
||||
$arr1 =& $arr1['a1'];
|
||||
echo '-'.$arr1['alfa']."-\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
-ok-
|
||||
Executable
+18
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Bug #34199 (if($obj)/if(!$obj) inconsistency because of cast handler)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("simplexml")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
$xml = "<root></root>";
|
||||
$xml = simplexml_load_string($xml);
|
||||
$kids = $xml->children();
|
||||
var_dump((bool)$kids);
|
||||
if($kids) echo "bug\n"; else echo "ok\n";
|
||||
if(!$kids) echo "ok\n"; else echo "bug\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
ok
|
||||
ok
|
||||
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
Bug #34260 (Segfault with callbacks (array_map) + overloading)
|
||||
--FILE--
|
||||
<?php
|
||||
class Faulty
|
||||
{
|
||||
function __call($Method,$Args)
|
||||
{
|
||||
switch($Method)
|
||||
{
|
||||
case 'seg':
|
||||
echo "I hate me\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function NormalMethod($Args)
|
||||
{
|
||||
echo "I heart me\n";
|
||||
}
|
||||
}
|
||||
|
||||
$Faulty = new Faulty();
|
||||
$Array = array('Some junk','Some other junk');
|
||||
|
||||
// This causes a seg fault.
|
||||
$Failure = array_map(array($Faulty,'seg'),$Array);
|
||||
|
||||
// This does not.
|
||||
$Failure = array_map(array($Faulty,'NormalMethod'),$Array);
|
||||
?>
|
||||
--EXPECT--
|
||||
I hate me
|
||||
I hate me
|
||||
I heart me
|
||||
I heart me
|
||||
@@ -0,0 +1,34 @@
|
||||
--TEST--
|
||||
Bug #34310 (foreach($arr as $c->d => $x) crashes)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class C
|
||||
{
|
||||
public $d;
|
||||
}
|
||||
|
||||
$c = new C();
|
||||
|
||||
$arr = array (1 => 'a', 2 => 'b', 3 => 'c');
|
||||
|
||||
// Works fine:
|
||||
foreach($arr as $x => $c->d)
|
||||
{
|
||||
echo "{$x} => {$c->d}\n";
|
||||
}
|
||||
|
||||
// Crashes:
|
||||
foreach($arr as $c->d => $x)
|
||||
{
|
||||
echo "{$c->d} => {$x}\n";
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
1 => a
|
||||
2 => b
|
||||
3 => c
|
||||
1 => a
|
||||
2 => b
|
||||
3 => c
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
--TEST--
|
||||
Bug #34358 (Fatal error: Cannot re-assign $this(again))
|
||||
--FILE--
|
||||
<?php
|
||||
class foo {
|
||||
function bar() {
|
||||
$ref = &$this;
|
||||
}
|
||||
}
|
||||
$x = new foo();
|
||||
$x->bar();
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
ok
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
Bug #34467 (foreach + __get + __set incosistency)
|
||||
--FILE--
|
||||
<?php
|
||||
class abc {
|
||||
private $arr;
|
||||
|
||||
function __set ($key, $value) {
|
||||
$this->arr[$key] = $value;
|
||||
}
|
||||
|
||||
function __get ($key) {
|
||||
return $this->arr[$key];
|
||||
}
|
||||
}
|
||||
$abc = new abc();
|
||||
foreach (array (1,2,3) as $abc->k => $abc->v) {
|
||||
var_dump($abc->k,$abc->v);
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
int(0)
|
||||
int(1)
|
||||
int(1)
|
||||
int(2)
|
||||
int(2)
|
||||
int(3)
|
||||
Executable
+38
@@ -0,0 +1,38 @@
|
||||
--TEST--
|
||||
Bug #34518 (Unset doesn't separate container in CV)
|
||||
--FILE--
|
||||
<?php
|
||||
$arr = array(1,2,3);
|
||||
$arr["foo"] = array(4,5,6);
|
||||
$copy = $arr;
|
||||
|
||||
unset($copy["foo"][0]);
|
||||
print_r($arr);
|
||||
print_r($copy);
|
||||
?>
|
||||
--EXPECT--
|
||||
Array
|
||||
(
|
||||
[0] => 1
|
||||
[1] => 2
|
||||
[2] => 3
|
||||
[foo] => Array
|
||||
(
|
||||
[0] => 4
|
||||
[1] => 5
|
||||
[2] => 6
|
||||
)
|
||||
|
||||
)
|
||||
Array
|
||||
(
|
||||
[0] => 1
|
||||
[1] => 2
|
||||
[2] => 3
|
||||
[foo] => Array
|
||||
(
|
||||
[1] => 5
|
||||
[2] => 6
|
||||
)
|
||||
|
||||
)
|
||||
Executable
+18
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Bug #34617 (zend_deactivate: objects_store used after zend_objects_store_destroy is called)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("xml")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
class Thing {}
|
||||
function boom()
|
||||
{
|
||||
$reader = xml_parser_create();
|
||||
xml_set_object($reader, new Thing());
|
||||
die("ok\n");
|
||||
xml_parser_free($reader);
|
||||
}
|
||||
boom();
|
||||
?>
|
||||
--EXPECT--
|
||||
ok
|
||||
Executable
+25
@@ -0,0 +1,25 @@
|
||||
--TEST--
|
||||
Bug #34678 (__call(), is_callable() and static methods)
|
||||
--FILE--
|
||||
<?php
|
||||
class A {
|
||||
public function __call($m, $a) {
|
||||
echo "__call\n";
|
||||
}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
public static function foo() {
|
||||
echo "foo\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (is_callable(array('B', 'foo'))) {
|
||||
call_user_func(array('B', 'foo'));
|
||||
}
|
||||
if (is_callable(array('A', 'foo'))) {
|
||||
call_user_func(array('A', 'foo'));
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
foo
|
||||
Executable
+28
@@ -0,0 +1,28 @@
|
||||
--TEST--
|
||||
Bug #34712 zend.ze1_compatibility_mode = on segfault
|
||||
--INI--
|
||||
zend.ze1_compatibility_mode=1
|
||||
error_reporting=4095
|
||||
--FILE--
|
||||
<?php
|
||||
class foo {
|
||||
function foo(&$obj_ref) {
|
||||
$this->bar = &$obj_ref;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class bar {
|
||||
function bar() {
|
||||
$this->foo = new foo($this);
|
||||
}
|
||||
}
|
||||
|
||||
$test = new bar;
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Strict Standards: Implicit cloning object of class 'foo' because of 'zend.ze1_compatibility_mode' in %sbug34712.php on line 11
|
||||
|
||||
Strict Standards: Implicit cloning object of class 'bar' because of 'zend.ze1_compatibility_mode' in %sbug34712.php on line 15
|
||||
ok
|
||||
Executable
+33
@@ -0,0 +1,33 @@
|
||||
--TEST--
|
||||
Bug #34767 (Zend Engine 1 Compatibility not copying objects correctly)
|
||||
--INI--
|
||||
zend.ze1_compatibility_mode=1
|
||||
error_reporting=4095
|
||||
--FILE--
|
||||
<?php
|
||||
$a->y = &new stdClass();
|
||||
print_r($a);
|
||||
$b = $a;
|
||||
$a->y->z = 1;
|
||||
print_r($b);
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
Strict Standards: Assigning the return value of new by reference is deprecated in %sbug34767.php on line 2
|
||||
stdClass Object
|
||||
(
|
||||
[y] => stdClass Object
|
||||
(
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
Strict Standards: Implicit cloning object of class 'stdClass' because of 'zend.ze1_compatibility_mode' in %sbug34767.php on line 4
|
||||
stdClass Object
|
||||
(
|
||||
[y] => stdClass Object
|
||||
(
|
||||
[z] => 1
|
||||
)
|
||||
|
||||
)
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
--TEST--
|
||||
Bug #34786 (2 @ results in change to error_reporting() to random value)
|
||||
--FILE--
|
||||
<?php
|
||||
function foo($a,$b,$c) {
|
||||
echo "foo: ".error_reporting()."\n";
|
||||
}
|
||||
|
||||
function bar() {
|
||||
echo "bar: ".error_reporting()."\n";
|
||||
}
|
||||
|
||||
error_reporting(1);
|
||||
echo "before: ".error_reporting()."\n";
|
||||
@foo(1,@bar(),3);
|
||||
echo "after: ".error_reporting()."\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
before: 1
|
||||
bar: 0
|
||||
foo: 0
|
||||
after: 1
|
||||
@@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
bug #34873 (Segmentation Fault on foreach in object)
|
||||
--FILE--
|
||||
<?php
|
||||
class pwa {
|
||||
public $var;
|
||||
|
||||
function __construct(){
|
||||
$this->var = array();
|
||||
}
|
||||
|
||||
function test (){
|
||||
$cont = array();
|
||||
$cont["mykey"] = "myvalue";
|
||||
|
||||
foreach ($cont as $this->var['key'] => $this->var['value'])
|
||||
var_dump($this->var['value']);
|
||||
}
|
||||
}
|
||||
$myPwa = new Pwa();
|
||||
$myPwa->test();
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
string(7) "myvalue"
|
||||
Done
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
--TEST--
|
||||
Bug #34879 (str_replace, array_map corrupt negative array indexes on 64-bit platforms)
|
||||
--FILE--
|
||||
<?php
|
||||
print_r(str_replace('a', 'b', array(-1 =>-1)));
|
||||
?>
|
||||
--EXPECT--
|
||||
Array
|
||||
(
|
||||
[-1] => -1
|
||||
)
|
||||
Executable
+33
@@ -0,0 +1,33 @@
|
||||
--TEST--
|
||||
Bug #34893 (PHP5.1 overloading, Cannot access private property)
|
||||
--FILE--
|
||||
<?php
|
||||
class A {
|
||||
private $p;
|
||||
function __get($name){
|
||||
return $this->$name;
|
||||
}
|
||||
function __set($name, $value) {
|
||||
$this->$name = $value;
|
||||
}
|
||||
}
|
||||
class B {
|
||||
private $t;
|
||||
function __get($name){
|
||||
return $this->$name;
|
||||
}
|
||||
function __set($name, $value) {
|
||||
$this->$name = $value;
|
||||
}
|
||||
}
|
||||
$a = new A;
|
||||
$b = new B;
|
||||
$a->p = $b;
|
||||
$b->t = "foo";
|
||||
|
||||
echo $a->p->t;
|
||||
$a->p->t = "bar";
|
||||
echo $a->p->t;
|
||||
?>
|
||||
--EXPECT--
|
||||
foobar
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #35017 (Exception thrown in error handler may cause unexpected behavior)
|
||||
--FILE--
|
||||
<?php
|
||||
set_error_handler('errorHandler');
|
||||
try {
|
||||
if ($a) {
|
||||
echo "1\n";
|
||||
} else {
|
||||
echo "0\n";
|
||||
}
|
||||
echo "?\n";
|
||||
} catch(Exception $e) {
|
||||
echo "This Exception should be catched\n";
|
||||
}
|
||||
function errorHandler($errno, $errstr, $errfile, $errline, $vars) {
|
||||
throw new Exception('Some Exception');
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
This Exception should be catched
|
||||
Executable
+41
@@ -0,0 +1,41 @@
|
||||
--TEST--
|
||||
Bug #35239 (Objects can lose references)
|
||||
--FILE--
|
||||
<?php
|
||||
$a = new stdClass;
|
||||
$a->x0 = new stdClass;
|
||||
$a->x0->y0 = 'a';
|
||||
$a->x0->y1 =& $a->x0;
|
||||
$a->x0->y2 =& $a->x0;
|
||||
$a->x0->y0 = 'b';
|
||||
var_dump($a);
|
||||
$a->x0->y1 = "ok\n";
|
||||
echo $a->x0;
|
||||
?>
|
||||
--EXPECT--
|
||||
object(stdClass)#1 (1) {
|
||||
["x0"]=>
|
||||
&object(stdClass)#2 (3) {
|
||||
["y0"]=>
|
||||
string(1) "b"
|
||||
["y1"]=>
|
||||
&object(stdClass)#2 (3) {
|
||||
["y0"]=>
|
||||
string(1) "b"
|
||||
["y1"]=>
|
||||
*RECURSION*
|
||||
["y2"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["y2"]=>
|
||||
&object(stdClass)#2 (3) {
|
||||
["y0"]=>
|
||||
string(1) "b"
|
||||
["y1"]=>
|
||||
*RECURSION*
|
||||
["y2"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
ok
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
--TEST--
|
||||
Bug #35393 (changing static protected members from outside the class)
|
||||
--INI--
|
||||
error_reporting=4095
|
||||
--FILE--
|
||||
<?php
|
||||
class ObjectPath
|
||||
{
|
||||
static protected $type = array(0=>'main');
|
||||
|
||||
static function getType()
|
||||
{
|
||||
return self::$type;
|
||||
}
|
||||
}
|
||||
print_r(ObjectPath::getType());
|
||||
$object_type = array_pop((ObjectPath::getType()));
|
||||
print_r(ObjectPath::getType());
|
||||
?>
|
||||
--EXPECTF--
|
||||
Array
|
||||
(
|
||||
[0] => main
|
||||
)
|
||||
|
||||
Strict Standards: Only variables should be passed by reference in %sbug35393.php on line 12
|
||||
Array
|
||||
(
|
||||
[0] => main
|
||||
)
|
||||
Executable
+19
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
Bug #35411 (Regression with \{$ handling)
|
||||
--FILE--
|
||||
<?php
|
||||
$abc = "bar";
|
||||
echo "foo\{$abc}baz\n";
|
||||
echo "foo\{ $abc}baz\n";
|
||||
echo <<<TEST
|
||||
foo{$abc}baz
|
||||
foo\{$abc}baz
|
||||
foo\{ $abc}baz
|
||||
TEST;
|
||||
?>
|
||||
--EXPECT--
|
||||
foo\{bar}baz
|
||||
foo\{ bar}baz
|
||||
foobarbaz
|
||||
foo\{bar}baz
|
||||
foo\{ bar}baz
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
Bug #35437 Segfault or Invalid Opcode 137/1/4
|
||||
--FILE--
|
||||
<?php
|
||||
function err2exception($errno, $errstr)
|
||||
{
|
||||
throw new Exception("Error occuried: " . $errstr);
|
||||
}
|
||||
|
||||
set_error_handler('err2exception');
|
||||
|
||||
class TestClass
|
||||
{
|
||||
function testMethod()
|
||||
{
|
||||
$GLOBALS['t'] = new stdClass;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
TestClass::testMethod();
|
||||
} catch (Exception $e) {
|
||||
echo "Catched: ".$e->getMessage()."\n";
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
Catched: Error occuried: Non-static method TestClass::testMethod() should not be called statically
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
--TEST--
|
||||
Bug #35470 (Assigning global using variable name from array doesn't function)
|
||||
--FILE--
|
||||
<?php
|
||||
$x = array("test", "55");
|
||||
global ${$x[0]};
|
||||
${$x[0]} = $x[1];
|
||||
echo "Test: $test\n";;
|
||||
?>
|
||||
--EXPECT--
|
||||
Test: 55
|
||||
Executable
+31
@@ -0,0 +1,31 @@
|
||||
--TEST--
|
||||
Bug #35509 (string constant as array key has different behavior inside object)
|
||||
--FILE--
|
||||
<?php
|
||||
class mytest
|
||||
{
|
||||
const classConstant = '01';
|
||||
|
||||
private $classArray = array( mytest::classConstant => 'value' );
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
print_r($this->classArray);
|
||||
}
|
||||
}
|
||||
|
||||
$classtest = new mytest();
|
||||
|
||||
define( "normalConstant", '01' );
|
||||
$normalArray = array( normalConstant => 'value' );
|
||||
print_r($normalArray);
|
||||
?>
|
||||
--EXPECT--
|
||||
Array
|
||||
(
|
||||
[01] => value
|
||||
)
|
||||
Array
|
||||
(
|
||||
[01] => value
|
||||
)
|
||||
Executable
+25
@@ -0,0 +1,25 @@
|
||||
--TEST--
|
||||
Bug #35655 (whitespace following end of heredoc is lost)
|
||||
--INI--
|
||||
highlight.string = #DD0000
|
||||
highlight.comment = #FF8000
|
||||
highlight.keyword = #007700
|
||||
highlight.bg = #FFFFFF
|
||||
highlight.default = #0000BB
|
||||
highlight.html = #000000
|
||||
--FILE--
|
||||
<?php
|
||||
$code = '
|
||||
<?php
|
||||
$x = <<<EOT
|
||||
some string
|
||||
EOT
|
||||
$y = 2;
|
||||
?>';
|
||||
highlight_string($code);
|
||||
?>
|
||||
--EXPECT--
|
||||
<code><span style="color: #000000">
|
||||
<br /><span style="color: #0000BB"><?php<br /> $x </span><span style="color: #007700">= <<<EOT<br /></span><span style="color: #0000BB">some string <br /></span><span style="color: #007700">EOT<br /> </span><span style="color: #0000BB">$y </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?></span>
|
||||
</span>
|
||||
</code>
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
--TEST--
|
||||
Bug #36006 (Problem with $this in __destruct())
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class Person {
|
||||
public $dad;
|
||||
public function __destruct() {
|
||||
$this->dad = null; /* no segfault if this is commented out */
|
||||
}
|
||||
}
|
||||
|
||||
class Dad extends Person {
|
||||
public $son;
|
||||
public function __construct() {
|
||||
$this->son = new Person;
|
||||
$this->son->dad = $this; /* no segfault if this is commented out */
|
||||
}
|
||||
public function __destruct() {
|
||||
$this->son = null;
|
||||
parent::__destruct(); /* segfault here */
|
||||
}
|
||||
}
|
||||
|
||||
$o = new Dad;
|
||||
unset($o);
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
ok
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
--TEST--
|
||||
Bug #36037 (heredoc adds extra line number)
|
||||
--FILE--
|
||||
<?php
|
||||
echo __LINE__, "\n";
|
||||
$x=<<<XXX
|
||||
123
|
||||
YYY;
|
||||
XXX;
|
||||
echo __LINE__, "\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
2
|
||||
7
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
--TEST--
|
||||
Bug #36071 (Engine Crash related with 'clone')
|
||||
--INI--
|
||||
error_reporting=4095
|
||||
--FILE--
|
||||
<?php
|
||||
$a = clone 0;
|
||||
$a[0]->b = 0;
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: __clone method called on non-object in %sbug36071.php on line 2
|
||||
ok
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
--TEST--
|
||||
Bug #36268 (Object destructors called even after fatal errors)
|
||||
--FILE--
|
||||
<?php
|
||||
class Foo {
|
||||
function __destruct() {
|
||||
echo "Ha!\n";
|
||||
}
|
||||
}
|
||||
$x = new Foo();
|
||||
bar();
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Call to undefined function bar() in %sbug36268.php on line 8
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
--TEST--
|
||||
Bug #36303 (foreach on error_zval produces segfault)
|
||||
--FILE--
|
||||
<?php
|
||||
$x="test";
|
||||
foreach($x->a->b as &$v) {
|
||||
}
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: Invalid argument supplied for foreach() in %sbug36303.php on line 3
|
||||
ok
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
--TEST--
|
||||
Bug #36513 (comment will be outputed in last line)
|
||||
--FILE--
|
||||
<?php
|
||||
function test($s) {
|
||||
echo "'".trim(str_replace(" ", " ", htmlspecialchars_decode(strip_tags(highlight_string($s,1)))))."'\n";
|
||||
}
|
||||
|
||||
eval('echo "1";//2');
|
||||
eval('echo 3; //{ 4?>5');
|
||||
echo "\n";
|
||||
|
||||
//test('<?php echo "1";//');
|
||||
test('<?php echo "1";//2');
|
||||
test('<?php echo "1";//22');
|
||||
test('<?php echo 3; // 4 ?>5');
|
||||
?>
|
||||
--EXPECT--
|
||||
135
|
||||
'<?php echo "1";//2'
|
||||
'<?php echo "1";//22'
|
||||
'<?php echo 3; // 4 ?>5'
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
--TEST--
|
||||
Bug #36568 (memory_limit has no effect)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!function_exists('memory_get_usage')) die('skip PHP is configured without memory_limit');
|
||||
?>
|
||||
--INI--
|
||||
memory_limit=16M
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("memory_limit", "32M");
|
||||
echo ini_get("memory_limit");
|
||||
?>
|
||||
--EXPECT--
|
||||
32M
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
Bug #37046 (foreach breaks static scope)
|
||||
--FILE--
|
||||
<?php
|
||||
function s() {
|
||||
static $storage = array(array('x', 'y'));
|
||||
return $storage[0];
|
||||
}
|
||||
|
||||
foreach (s() as $k => $function) {
|
||||
echo "op1 $k\n";
|
||||
if ($k == 0) {
|
||||
foreach (s() as $k => $function) {
|
||||
echo "op2 $k\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
op1 0
|
||||
op2 0
|
||||
op2 1
|
||||
op1 1
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #37138 (__autoload tries to load callback'ed self and parent)
|
||||
--FILE--
|
||||
<?php
|
||||
function __autoload ($CN) {var_dump ($CN);}
|
||||
class st {
|
||||
public static function e () {echo ("EHLO\n");}
|
||||
public static function e2 () {call_user_func (array ('self', 'e'));}
|
||||
}
|
||||
class stch extends st {
|
||||
public static function g () {call_user_func (array ('parent', 'e'));}
|
||||
}
|
||||
st::e ();
|
||||
st::e2 ();
|
||||
stch::g ();
|
||||
?>
|
||||
--EXPECT--
|
||||
EHLO
|
||||
EHLO
|
||||
EHLO
|
||||
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
catch shouldn't call __autoload
|
||||
--FILE--
|
||||
<?php
|
||||
function __autoload($name) {
|
||||
echo("AUTOLOAD '$name'\n");
|
||||
eval("class $name {}");
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
} catch (A $e) {
|
||||
}
|
||||
|
||||
try {
|
||||
throw new Exception();
|
||||
} catch (B $e) {
|
||||
} catch (Exception $e) {
|
||||
echo "ok\n";
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
ok
|
||||
@@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 1
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function foo($arg) {
|
||||
}
|
||||
|
||||
function bar() {
|
||||
throw new Exception("test");
|
||||
}
|
||||
|
||||
try {
|
||||
@foo(@bar());
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
int(2047)
|
||||
Done
|
||||
@@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 2
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function foo($arg) {
|
||||
}
|
||||
|
||||
function bar() {
|
||||
error_reporting(E_ALL|E_STRICT);
|
||||
throw new Exception("test");
|
||||
}
|
||||
|
||||
try {
|
||||
@foo(@bar());
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
int(4095)
|
||||
Done
|
||||
@@ -0,0 +1,35 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 3
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function foo($arg) {
|
||||
echo @$nonex_foo;
|
||||
}
|
||||
|
||||
function bar() {
|
||||
echo @$nonex_bar;
|
||||
throw new Exception("test");
|
||||
}
|
||||
|
||||
function foo1() {
|
||||
echo $undef1;
|
||||
error_reporting(E_ALL|E_STRICT);
|
||||
echo $undef2;
|
||||
}
|
||||
|
||||
try {
|
||||
@foo(@bar(@foo1()));
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Notice: Undefined variable: undef2 in %s on line %d
|
||||
int(4095)
|
||||
Done
|
||||
@@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 4
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function foo() {
|
||||
echo $undef;
|
||||
error_reporting(E_ALL|E_STRICT);
|
||||
}
|
||||
|
||||
|
||||
foo(@$var);
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Notice: Undefined variable: undef in %s on line %d
|
||||
int(4095)
|
||||
Done
|
||||
@@ -0,0 +1,34 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 5
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
class test {
|
||||
function __get($name) {
|
||||
return $undef_name;
|
||||
}
|
||||
function __set($name, $value) {
|
||||
return $undef_value;
|
||||
}
|
||||
}
|
||||
|
||||
$test = new test;
|
||||
|
||||
$test->abc = 123;
|
||||
echo $test->bcd;
|
||||
|
||||
@$test->qwe = 123;
|
||||
echo @$test->wer;
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Notice: Undefined variable: undef_value in %s on line %d
|
||||
|
||||
Notice: Undefined variable: undef_name in %s on line %d
|
||||
int(2047)
|
||||
Done
|
||||
@@ -0,0 +1,30 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 6
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function foo1($arg) {
|
||||
}
|
||||
|
||||
function foo2($arg) {
|
||||
}
|
||||
|
||||
function foo3($arg) {
|
||||
echo $undef3;
|
||||
throw new Exception("test");
|
||||
}
|
||||
|
||||
try {
|
||||
@foo1(@foo2(@foo3()));
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
int(2047)
|
||||
Done
|
||||
@@ -0,0 +1,30 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 7
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function foo1($arg) {
|
||||
}
|
||||
|
||||
function foo2($arg) {
|
||||
}
|
||||
|
||||
function foo3($arg) {
|
||||
echo $undef3;
|
||||
throw new Exception("test");
|
||||
}
|
||||
|
||||
try {
|
||||
@error_reporting(@foo1(@foo2(@foo3())));
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
int(2047)
|
||||
Done
|
||||
@@ -0,0 +1,32 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 8
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function foo1($arg) {
|
||||
}
|
||||
|
||||
function foo2($arg) {
|
||||
}
|
||||
|
||||
function foo3($arg) {
|
||||
error_reporting(E_ALL|E_STRICT);
|
||||
echo $undef3;
|
||||
throw new Exception("test");
|
||||
}
|
||||
|
||||
try {
|
||||
@foo1(@foo2(@foo3()));
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Notice: Undefined variable: undef3 in %s on line %d
|
||||
int(4095)
|
||||
Done
|
||||
@@ -0,0 +1,31 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 9
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function bar() {
|
||||
echo @$blah;
|
||||
echo $undef2;
|
||||
}
|
||||
|
||||
function foo() {
|
||||
echo @$undef;
|
||||
error_reporting(E_ALL|E_STRICT);
|
||||
echo $blah;
|
||||
return bar();
|
||||
}
|
||||
|
||||
@foo();
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Notice: Undefined variable: blah in %s on line %d
|
||||
|
||||
Notice: Undefined variable: undef2 in %s on line %d
|
||||
int(4095)
|
||||
Done
|
||||
@@ -0,0 +1,35 @@
|
||||
--TEST--
|
||||
testing @ and error_reporting - 10
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
function make_exception()
|
||||
{
|
||||
@$blah;
|
||||
str_replace();
|
||||
error_reporting(0);
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
try {
|
||||
@make_exception();
|
||||
} catch (Exception $e) {}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
error_reporting(E_ALL&~E_NOTICE);
|
||||
|
||||
try {
|
||||
@make_exception();
|
||||
} catch (Exception $e) {}
|
||||
|
||||
var_dump(error_reporting());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
int(2047)
|
||||
int(2039)
|
||||
Done
|
||||
Executable
+18
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
instanceof shouldn't call __autoload
|
||||
--FILE--
|
||||
<?php
|
||||
function __autoload($name) {
|
||||
echo("AUTOLOAD '$name'\n");
|
||||
eval("class $name {}");
|
||||
}
|
||||
|
||||
class A {
|
||||
}
|
||||
$a = new A;
|
||||
var_dump($a instanceof B);
|
||||
var_dump($a instanceof A);
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
bool(true)
|
||||
Executable
+51
@@ -0,0 +1,51 @@
|
||||
--TEST--
|
||||
is_a() and is_subclass_of() shouldn't call __autoload
|
||||
--INI--
|
||||
error_reporting=4095
|
||||
--FILE--
|
||||
<?php
|
||||
function __autoload($name) {
|
||||
echo("AUTOLOAD '$name'\n");
|
||||
eval("class $name {}");
|
||||
}
|
||||
|
||||
class BASE {
|
||||
}
|
||||
|
||||
interface INT {
|
||||
}
|
||||
|
||||
class A extends BASE implements INT {
|
||||
}
|
||||
|
||||
$a = new A;
|
||||
var_dump(is_a($a, "B1"));
|
||||
var_dump(is_a($a, "A"));
|
||||
var_dump(is_a($a, "BASE"));
|
||||
var_dump(is_a($a, "INT"));
|
||||
var_dump(is_subclass_of($a, "B2"));
|
||||
var_dump(is_subclass_of($a, "A"));
|
||||
var_dump(is_subclass_of($a, "BASE"));
|
||||
var_dump(is_subclass_of($a, "INT"));
|
||||
|
||||
var_dump(is_subclass_of("X1", "X2"));
|
||||
?>
|
||||
--EXPECTF--
|
||||
Strict Standards: is_a(): Deprecated. Please use the instanceof operator in %sis_a.php on line 17
|
||||
bool(false)
|
||||
|
||||
Strict Standards: is_a(): Deprecated. Please use the instanceof operator in %sis_a.php on line 18
|
||||
bool(true)
|
||||
|
||||
Strict Standards: is_a(): Deprecated. Please use the instanceof operator in %sis_a.php on line 19
|
||||
bool(true)
|
||||
|
||||
Strict Standards: is_a(): Deprecated. Please use the instanceof operator in %sis_a.php on line 20
|
||||
bool(true)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(false)
|
||||
AUTOLOAD 'X1'
|
||||
AUTOLOAD 'X2'
|
||||
bool(false)
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
--TEST--
|
||||
unset() CV 12 (unset() in indirect called function)
|
||||
--FILE--
|
||||
<?php
|
||||
$x = 1;
|
||||
function foo() {unset($GLOBALS["x"]);}
|
||||
call_user_func("foo");
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
ok
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
zend_strtod() leaks on big doubles
|
||||
--INI--
|
||||
precision=14
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump("1139932690.21688500" - "1139932790.21688500");
|
||||
var_dump("1139932690000.21688500" - "331139932790.21688500");
|
||||
var_dump("339932690.21688500" - "4564645646456463461139932790.21688500");
|
||||
var_dump("123123139932690.21688500" - "11399327900000000.21688500");
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
float(-100)
|
||||
float(808792757210)
|
||||
float(-4.5646456464565E+27)
|
||||
float(-11276204760067000)
|
||||
Done
|
||||
+32
-9
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -38,6 +38,7 @@
|
||||
# define GLOBAL_FUNCTION_TABLE CG(function_table)
|
||||
# define GLOBAL_CLASS_TABLE CG(class_table)
|
||||
# define GLOBAL_AUTO_GLOBALS_TABLE CG(auto_globals)
|
||||
# define GLOBAL_CONSTANTS_TABLE EG(zend_constants)
|
||||
#endif
|
||||
|
||||
#if defined(ZEND_WIN32) && ZEND_DEBUG
|
||||
@@ -77,6 +78,9 @@ static ZEND_INI_MH(OnUpdateErrorReporting)
|
||||
ZEND_INI_BEGIN()
|
||||
ZEND_INI_ENTRY("error_reporting", NULL, ZEND_INI_ALL, OnUpdateErrorReporting)
|
||||
STD_ZEND_INI_BOOLEAN("zend.ze1_compatibility_mode", "0", ZEND_INI_ALL, OnUpdateBool, ze1_compatibility_mode, zend_executor_globals, executor_globals)
|
||||
#ifdef ZEND_MULTIBYTE
|
||||
STD_ZEND_INI_BOOLEAN("detect_unicode", "1", ZEND_INI_ALL, OnUpdateBool, detect_unicode, zend_compiler_globals, compiler_globals)
|
||||
#endif
|
||||
ZEND_INI_END()
|
||||
|
||||
|
||||
@@ -88,6 +92,7 @@ HashTable *global_function_table;
|
||||
HashTable *global_class_table;
|
||||
HashTable *global_constants_table;
|
||||
HashTable *global_auto_globals_table;
|
||||
static HashTable *global_persistent_list = NULL;
|
||||
#endif
|
||||
|
||||
ZEND_API zend_utility_values zend_uv;
|
||||
@@ -97,7 +102,7 @@ ZEND_API zval zval_used_for_init; /* True global variable */
|
||||
/* version information */
|
||||
static char *zend_version_info;
|
||||
static uint zend_version_info_length;
|
||||
#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) 1998-2005 Zend Technologies\n"
|
||||
#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) 1998-2006 Zend Technologies\n"
|
||||
|
||||
|
||||
#define PRINT_ZVAL_INDENT 4
|
||||
@@ -127,7 +132,7 @@ static void print_hash(HashTable *ht, int indent, zend_bool is_object TSRMLS_DC)
|
||||
if (is_object) {
|
||||
char *prop_name, *class_name;
|
||||
|
||||
zend_unmangle_property_name(string_key, &class_name, &prop_name);
|
||||
zend_unmangle_property_name_ex(string_key, str_len, &class_name, &prop_name);
|
||||
ZEND_PUTS(prop_name);
|
||||
if (class_name) {
|
||||
if (class_name[0]=='*') {
|
||||
@@ -448,6 +453,13 @@ static void compiler_globals_ctor(zend_compiler_globals *compiler_globals TSRMLS
|
||||
compiler_globals->auto_globals = (HashTable *) malloc(sizeof(HashTable));
|
||||
zend_hash_init_ex(compiler_globals->auto_globals, 8, NULL, NULL, 1, 0);
|
||||
zend_hash_copy(compiler_globals->auto_globals, global_auto_globals_table, NULL, NULL, sizeof(zend_auto_global) /* empty element */);
|
||||
|
||||
compiler_globals->last_static_member = zend_hash_num_elements(compiler_globals->class_table);
|
||||
if (compiler_globals->last_static_member) {
|
||||
compiler_globals->static_members = (HashTable**)calloc(compiler_globals->last_static_member, sizeof(HashTable*));
|
||||
} else {
|
||||
compiler_globals->static_members = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -465,6 +477,10 @@ static void compiler_globals_dtor(zend_compiler_globals *compiler_globals TSRMLS
|
||||
zend_hash_destroy(compiler_globals->auto_globals);
|
||||
free(compiler_globals->auto_globals);
|
||||
}
|
||||
if (compiler_globals->static_members) {
|
||||
free(compiler_globals->static_members);
|
||||
}
|
||||
compiler_globals->last_static_member = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -486,6 +502,13 @@ static void executor_globals_ctor(zend_executor_globals *executor_globals TSRMLS
|
||||
static void executor_globals_dtor(zend_executor_globals *executor_globals TSRMLS_DC)
|
||||
{
|
||||
zend_ini_shutdown(TSRMLS_C);
|
||||
if (&executor_globals->persistent_list != global_persistent_list) {
|
||||
zend_destroy_rsrc_list(&executor_globals->persistent_list TSRMLS_CC);
|
||||
}
|
||||
if (executor_globals->zend_constants != GLOBAL_CONSTANTS_TABLE) {
|
||||
zend_hash_destroy(executor_globals->zend_constants);
|
||||
free(executor_globals->zend_constants);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -682,6 +705,7 @@ void zend_post_startup(TSRMLS_D)
|
||||
compiler_globals_ctor(compiler_globals, tsrm_ls);
|
||||
free(EG(zend_constants));
|
||||
executor_globals_ctor(executor_globals, tsrm_ls);
|
||||
global_persistent_list = &EG(persistent_list);
|
||||
zend_new_thread_end_handler(tsrm_thread_id() TSRMLS_CC);
|
||||
}
|
||||
#endif
|
||||
@@ -692,9 +716,7 @@ void zend_shutdown(TSRMLS_D)
|
||||
#ifdef ZEND_WIN32
|
||||
zend_shutdown_timeout_thread();
|
||||
#endif
|
||||
#ifndef ZTS
|
||||
zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC);
|
||||
#endif
|
||||
zend_hash_graceful_reverse_destroy(&module_registry);
|
||||
|
||||
zend_hash_destroy(GLOBAL_FUNCTION_TABLE);
|
||||
@@ -706,16 +728,17 @@ void zend_shutdown(TSRMLS_D)
|
||||
zend_shutdown_extensions(TSRMLS_C);
|
||||
free(zend_version_info);
|
||||
|
||||
zend_shutdown_constants(TSRMLS_C);
|
||||
free(GLOBAL_FUNCTION_TABLE);
|
||||
free(GLOBAL_CLASS_TABLE);
|
||||
#ifdef ZTS
|
||||
zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC);
|
||||
|
||||
zend_hash_destroy(GLOBAL_CONSTANTS_TABLE);
|
||||
free(GLOBAL_CONSTANTS_TABLE);
|
||||
|
||||
#ifdef ZTS
|
||||
GLOBAL_FUNCTION_TABLE = NULL;
|
||||
GLOBAL_CLASS_TABLE = NULL;
|
||||
GLOBAL_AUTO_GLOBALS_TABLE = NULL;
|
||||
GLOBAL_CONSTANTS_TABLE = NULL;
|
||||
#endif
|
||||
zend_destroy_rsrc_list_dtors();
|
||||
}
|
||||
@@ -1023,7 +1046,7 @@ ZEND_API void zend_error(int type, const char *format, ...)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(DARWIN)
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(DARWIN) && !defined(__hpux)
|
||||
void zend_error_noreturn(int type, const char *format, ...) __attribute__ ((alias("zend_error"),noreturn));
|
||||
#endif
|
||||
|
||||
|
||||
+14
-16
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -22,7 +22,7 @@
|
||||
#ifndef ZEND_H
|
||||
#define ZEND_H
|
||||
|
||||
#define ZEND_VERSION "2.1.0-dev"
|
||||
#define ZEND_VERSION "2.1.0"
|
||||
|
||||
#define ZEND_ENGINE_2
|
||||
|
||||
@@ -171,7 +171,7 @@ char *alloca ();
|
||||
# define ZEND_ATTRIBUTE_FORMAT(type, idx, first)
|
||||
#endif
|
||||
|
||||
#if ZEND_GCC_VERSION >= 3001
|
||||
#if ZEND_GCC_VERSION >= 3001 && !defined(__INTEL_COMPILER)
|
||||
# define ZEND_ATTRIBUTE_PTR_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first)))
|
||||
#else
|
||||
# define ZEND_ATTRIBUTE_PTR_FORMAT(type, idx, first)
|
||||
@@ -250,7 +250,7 @@ char *alloca ();
|
||||
#define INTERNAL_FUNCTION_PARAMETERS int ht, zval *return_value, zval **return_value_ptr, zval *this_ptr, int return_value_used TSRMLS_DC
|
||||
#define INTERNAL_FUNCTION_PARAM_PASSTHRU ht, return_value, return_value_ptr, this_ptr, return_value_used TSRMLS_CC
|
||||
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(DARWIN)
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(DARWIN) && !defined(__hpux)
|
||||
# define ZEND_VM_ALWAYS_INLINE __attribute__ ((always_inline))
|
||||
void zend_error_noreturn(int type, const char *format, ...) __attribute__ ((noreturn));
|
||||
#else
|
||||
@@ -265,25 +265,22 @@ void zend_error_noreturn(int type, const char *format, ...) __attribute__ ((nore
|
||||
typedef struct _zval_struct zval;
|
||||
typedef struct _zend_class_entry zend_class_entry;
|
||||
|
||||
typedef struct _zend_guard {
|
||||
zend_bool in_get;
|
||||
zend_bool in_set;
|
||||
zend_bool in_unset;
|
||||
zend_bool in_isset;
|
||||
zend_bool dummy; /* sizeof(zend_guard) must not be equal to sizeof(void*) */
|
||||
} zend_guard;
|
||||
|
||||
typedef struct _zend_object {
|
||||
zend_class_entry *ce;
|
||||
HashTable *properties;
|
||||
unsigned int in_get:1;
|
||||
unsigned int in_set:1;
|
||||
unsigned int in_unset:1;
|
||||
unsigned int in_isset:1;
|
||||
HashTable *guards; /* protects from __get/__set ... recursion */
|
||||
} zend_object;
|
||||
|
||||
typedef unsigned int zend_object_handle;
|
||||
typedef struct _zend_object_value zend_object_value;
|
||||
|
||||
#include "zend_object_handlers.h"
|
||||
|
||||
struct _zend_object_value {
|
||||
zend_object_handle handle;
|
||||
zend_object_handlers *handlers;
|
||||
};
|
||||
|
||||
typedef union _zvalue_value {
|
||||
long lval; /* long value */
|
||||
double dval; /* double value */
|
||||
@@ -331,6 +328,7 @@ struct _zend_class_entry {
|
||||
HashTable function_table;
|
||||
HashTable default_properties;
|
||||
HashTable properties_info;
|
||||
HashTable default_static_members;
|
||||
HashTable *static_members;
|
||||
HashTable constants_table;
|
||||
struct _zend_function_entry *builtin_functions;
|
||||
|
||||
Loaded 100 of 1960 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user