Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tag: php-4.4.8
Fetching contributors…

Cannot retrieve contributors at this time

file 3945 lines (3902 sloc) 224.746 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945
PHP 4 NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
03 Jan 2008, Version 4.4.8
- Improved fix for MOPB-02-2007. (Ilia)
- Fixed an integer overflow inside chunk_split(). Identified by Gerhard Wagner.
  (Ilia)
- Fixed integer overlow in str[c]spn(). (Stas)
- Fixed regression in glob when open_basedir is on introduced by #41655 fix
  (Pierre)
- Fixed money_format() not to accept multiple %i or %n tokens. (Stas, Ilia)
- Addded "max_input_nesting_level" php.ini option to limit nesting level of
  input variables. Fix for MOPB-03-2007. (Stas)
- Fixed INFILE LOCAL option handling with MySQL - now not allowed when
  open_basedir or safe_mode is active (Stas)
- Fixed session.save_path and error_log values to be checked against
  open_basedir and safe_mode (CVE-2007-3378) (Stas, Maksymilian Arciemowicz)
- Fixed bug #43010 (Fixed regression in imagearc with two equivelent angles)
  (Pierre)
- Fixed bug #41765 (Recode crashes/does not work on amd64)
  (nexus at smoula dot net, Stas)
- Fixed bug #41630 (segfault when an invalid color index is present in
  the image data). (Reported by Elliot <wccoder@gmail dot com>) (Pierre)
- Fixed bug #41628 (PHP settings leak between Virtual Hosts in
  Apache 1.3). (Scott, manuel at mausz dot at)
- Fixed bug #38798 (OpenSSL init corrected in php5 but not in php4). (Tony)

04 May 2007, Version 4.4.7
- Fixed libgd #86 (Fixed possible infinite loop in imagecreatefrompng)
  (Reported by Xavier Roche) (Pierre)
- Fixed MOPB-33-2007 (PHP mail() Message ASCIIZ Byte Truncation). (Ilia)
- Fixed MOPB-32-2007 (Double free inside session_decode()). (Ilia)
- Fixed MOPB-26-2007 (mb_parse_str() can be used to activate
  register_globals). (Ilia)
- Fixed MOPB-24-2007 (Fixed unallocated memory access/double free in in
  array_user_key_compare()). (Stas)
- Fixed MOPB-22-2007 (PHP session_regenerate_id() Double Free Vulnerability).
  (Ilia)
- Fixed MOPB-21-2007 (An open_basedir/safe_mode bypass inside the
  compress.bzip2 wraper). (Ilia)
- Fixed MOPB-8-2007 (XSS in phpinfo()). (Joe Orton, Stas)
- Fixed CVE-2007-1001 (GD wbmp used with invalid image size). (Pierre)
- Fixed CVE-2007-0455 (Buffer overflow in gdImageStringFTEx, used by imagettf
  function). (Kees Cook, Pierre)
- Fixed bug #41655 (open_basedir bypass via glob()). (Ilia)
- Fixed bug #41527 (WDDX deserialize numeric string array key). (Matt, Ilia)
- Fixed bug #41252 (Calling mcrypt_generic without first calling
  mcrypt_generic_init crashes). (Derick)
- Fixed bug #40998 (long session array keys are truncated). (Tony)
- Fixed bug #40915 (addcslashes unexpected behavior with binary input). (Tony)
- Fixed bug #40831 (cURL extension doesn't clean up the buffer of reused
  handle). (Tony)
- Fixed bug #40747 (possible crash in session when save_path is out of
  open_basedir). (Tony)
- Fixed bug #38236 (Binary data gets corrupted on multipart/formdata POST)
  (patch by ass3mbler@gmail.com)
- Fixed huge CPU usage in imagearc when used with large angles (libgd bug #74).
  (Pierre)
- Fixed CRLF injection inside ftp_putcmd(). (Ilia)

28 Feb 2007, Version 4.4.6
- Updated PCRE to version 7.0. (Nuno)
- Fixed segfault in ext/session when register_globals=On. (Tony)
- Fixed bug #40635 (segfault in cURL extension). (Tony)
- Fixed bug #40611 (possible cURL memory error). (Tony)
- Fixed bug #40578 (imagettftext() multithreading issue). (Tony)
- Fixed bug #40502 (ext/interbase compile failure). (Tony)
- Fixed bug #40286 (PHP fastcgi with PHP_FCGI_CHILDREN don't kill children when
  parent is killed). (Dmitry)

14 Feb 2007, Version 4.4.5
- Upgraded PEAR to 1.5.0. (Greg)
- Updated PCRE to version 6.7. (Ilia)
- Moved extensions to PECL:
  . ext/ovrimos (Derick)

- Added a meta tag to phpinfo() output to prevent search engines from
  indexing the page. (Ilia)
- Backported a fix in the configure tests to detect the "rounding fuzz".
  (Derick, Joe Orton)
- Backported fix for ext/imap compilation failure with recent c-client
  versions. (Tony)
- Fixed missing open_basedir check inside chdir() function. (Ilia)
- Fixed bug #40335 (Compile fails when using GCC 4.1.1/binutils 2.17). (Tony)
- Fixed bug #39971 (pg_insert/pg_update do not allow now() to be used for
  timestamp fields). (Ilia)
- Fixed bug #39890 (using autoconf 2.6x and --with-layout=GNU breaks PEAR
  install path). (Tony)
- Fixed bug #39819 (Using $this not in object context can cause segfaults).
  (Dmitry)
- Fixed bug #39653 (ext/dba doesn't check for db-4.5 and db-4.4 when db4
  support is enabled). (Tony)
- Fixed bug #39583 (ftp_put() does not change transfer mode to ASCII). (Tony)
- Fixed bug #39458 (ftp_nlist() returns false on empty dirs). (Nuno)
- Fixed bug #39354 (Allow building of curl extension against libcurl
  7.16.0). (Ilia)
- Fixed bug #39034 (curl_exec() with return transfer returns TRUE on empty
  files). (Ilia)
- Fixed bug #38963 (Fixed a possible open_basedir bypass in tempnam()). (Ilia)
- Fixed bug #38882 (ldap_connect causes segfault with newer versions of
  OpenLDAP). (Tony)
- Fixed bug #38859 (parse_url() fails if passing '@' in passwd). (Tony,Ilia)
- Fixed bug #38722 (Calling undefined method prints insufficient error message)
  (Hannes)
- Fixed bug #38534 (segfault when calling setlocale() in userspace session
  handler). (Tony)
- Fixed bug #38450 (constructor is not called for classes used in userspace
  stream wrappers). (Tony)
- Fixed bug #38378 (wddx_serialize_value() generates no wellformed xml).
  (sj at sjaensch dot org, grzegorz dot nosek at netart dot pl, Tony).
- Fixed bug #37812 (aggregate_methods_by_list fails to take certain methods).
  (Hannes)
- Fixed bug #36975 (natcasesort() causes array_pop() to misbehave). (Hannes)
- Fixed bug #36248 (CURLOPT_HEADERFUNCTION, couldn't set the function in the
  class). (Ilia)
- Fixed bug #34066 (recursive array_walk causes segfault). (Tony)

17 Aug 2006, Version 4.4.4
- Fixed memory_limit on 64bit systems. (Stefan E.)
- Fixed overflow on 64bit systems in str_repeat() and wordwrap(). (Stefan E.)
- Disabled CURLOPT_FOLLOWLOCATION in curl when open_basedir or safe_mode are
  enabled. (Stefan E.)
- Fixed a memory corruption error with an invalid foreach() call. (Stefan E.,
  Dmitry, Derick)
- Fixed bug #38456 (Apache2 segfaults when virtual() is called in .php
  ErrorDocument). (Ilia)
- Fixed bug #38431 (xmlrpc_get_type() crashes PHP on objects). (Tony)
- Fixed bug #38377 (session_destroy() gives warning after
  session_regenerate_id()). (Ilia)
- Fixed bug #38322 (reading past array in sscanf() leads to arbitary code
  execution). (Tony)
- Fixed bug #38278 (session_cache_expire()'s value does not match phpinfo's
  session.cache_expire). (Tony)
- Fixed bug #38251 (socket_select() and invalid arguments). (Tony)
- Fixed bug #38183 (disable_classes=Foobar causes disabled class to be
  called Foo). (Jani)
- Fixed bug #38112 (corrupted gif segfaults) (Pierre)
- Fixed bug #37265 (Added missing safe_mode & open_basedir checks to
  imap_body()). (Ilia)
- Fixed bug #29538 (number_format and problem with 0). (Matthew Wilmas)

03 Aug 2006, Version 4.4.3
- Added control character checks for cURL extension's open_basedir/safe_mode
  checks. (Ilia)
- Added overflow checks to wordwrap() function. (Ilia)
- Added a check for special characters in the session name. (Ilia)
- Improved safe_mode check for the error_log() function. (Ilia)
- Updated PCRE to version 6.6. (Andrei)
- Fixed handling of extremely long paths inside tempnam() function. (Ilia)
- Fixed XSS inside phpinfo() with long inputs. (Ilia)
- Fixed a possible buffer overflow inside create_named_pipe() for Win32 systems
  in libmysql.c. (Ilia)
- Fixed bug #37720 (merge_php_config scrambles values). (Mike,
  pumuckel at metropolis dot de)
- Fixed bug #37569 (WDDX incorrectly encodes high-ascii characters). (Ilia)
- Fixed bug #37510 (session_regenerate_id changes session_id() even on failure).
  (Hannes)
- Fixed bug #37360 (Memory errors with a corrupt GIF file) (Pierre)
- Fixed bug #37348 (Make PEAR install ignore open_basedir). (Ilia)
- Fixed bug #37346 (Crashes when using an invalid colormap format). (Pierre)
- Fixed bug #37162 (wddx does not build as a shared extension).
  (jdolecek at NetBSD dot org, Ilia)
- Fixed bug #37046 (foreach breaks static scope). (Dmitry)
- Fixed bug #37045 (Fixed check for special chars for http redirects). (Ilia)
- Fixed bug #36857 (Added support for partial content fetching to the HTTP
  streams wrapper). (Ilia)
- Fixed bug #36776 (node_list_wrapper_dtor segfault). (Rob)
- Fixed bug #36459 (Incorrect adding PHPSESSID to links, which contains \r\n).
  (Ilia)
- Fixed bug #36458 (sleep() accepts negative values). (Ilia)
- Fixed bug #36242 (Possible memory corruption in stream_select()). (Tony)
- Fixed bug #36223 (curl bypasses open_basedir restrictions). (Tony)
- Fixed bug #36205 (Memory leaks on duplicate cookies). (Dmitry)
- Fixed bug #36148 (unpack("H*hex", $data) is adding an extra character to the
  end of the string). (Ilia)
- Fixed bug #36017 (fopen() crashes PHP when opening a URL). (Tony)

13 Jan 2006, Version 4.4.2
- Added missing safe_mode/open_basedir checks into cURL extension. (Ilia)
- Backported missing imap_mailcompose() fixes from PHP 5.x. (Ilia)
- Prevent header injection by limiting each header to a single line. (Ilia)
- Fixed possible XSS inside error reporting functionality. (Ilia)
- Fixed Apache 2 regression with sub-request handling on non-linux systems.
  (Ilia, Tony)
- Fixed bug #35817 (unpack() does not decode odd number of hexadecimal values).
  (Ilia)
- Fixed bug #35735 ($EGREP not defined in configure). (Jani)
- Fixed bug #35669 (imap_mail_compose() crashes with
  multipart-multiboundary-email). (Ilia)
- Fixed bug #35655 (whitespace following end of heredoc is lost). (Ilia)
- Fixed bug #35646 (%{mod_php_memory_usage}n is not reset after exit).
  (vovik at getart dot ru, Tony)
- Fixed bug #35594 (Multiple calls to getopt() may result in a crash).
  (rabbitt at gmail dot com, Ilia)
- Fixed bug #35571 (Fixed crash in Apache 2 SAPI when more then one php
  script is loaded via SSI include). (Ilia)
- Fixed bug #35536 (mysql_field_type() doesn't handle NEWDECIMAL). (Tony)
- Fixed bug #35410 (wddx_deserialize() doesn't handle large ints as keys
  properly). (Ilia)
- Fixed bug #35341 (Fix for bug #33760 breaks build with older curl). (Tony)
- Fixed bug #35278 (Multiple virtual() calls crash Apache 2 php module). (Ilia)
- Fixed bug #35257 (Calling ob_flush after creating an ob callback causes
  segfault). (Tony)
- Fixed bug #35079 (stream_set_blocking(true) toggles, not enables
  blocking). (askalski at gmail dot com, Tony)
- Fixed bug #35078 (configure does not find ldap_start_tls_s). (Jani)
- Fixed bug #35071 (Wrong fopen mode used in GD safe-mode checks). (Jani)
- Fixed bug #35067, #35063 (key(),current() need to work by reference). (Ilia)
- Fixed bug #35062 (socket_read() produces warnings on non blocking sockets).
  (Nuno, Ilia)
- Fixed bug #35059 (Apache2 crash with mod_rewrite). (Ilia)
- Fixed bug #35009 (ZTS: Persistent resource destruct crashes when extension
  is compiled as shared). (Dmitry)
- Fixed bug #34996 (ImageTrueColorToPalette() crashes when ncolors is zero).
  (Tony)
- Fixed bug #34851 (SO_RECVTIMEO and SO_SNDTIMEO socket options expect integer
  parameter on Windows). (Mike)
- Fixed bug #34830 (the 5th argument of mb_send_mail does not work). (Rui)
- Fixed bug #34359 (Possible crash inside fopen http wrapper). (Ilia,Nuno,Sara)
- Fixed bug #33963 (mssql_bind() fails on input parameters). (Frank)
- Fixed bug #33760 (cURL needs CRYPTO_callback functions to prevent locking).
  (Mike)
- Fixed bug #33720 (mb_encode_mimeheader does not work for multibyte chars).
  (Rui)
- Fixed bug #33523 (Memory leak in xmlrpc_encode_request()). (Ilia)
- Fixed bug #33201 (Crash when fetching some data types). (Frank)
  (frantisek at augusztin dot com)
- Fixed bug #33153 (crash in mssql_next result). (Frank)
- Fixed bug #32009 (crash when mssql_bind() is called more than once). (Frank)
- Fixed bug #31971 (ftp_login fails on some SSL servers).
- Fixed bug #30760 (Remove MessageBox on win32 for E_CORE errors if
  display_startup_error is off). (Ilia)
- Fixed bug #27678 (number_format() crashes with large numbers). (Marcus)

31 Oct 2005, Version 4.4.1
- Added missing safe_mode checks for image* functions and cURL. (Ilia)
- Added missing safe_mode/open_basedir checks for file uploads. (Ilia)
- Added "new_link" parameter to mssql_connect(). Bug #34369. (Frank)
- Fixed a memory corruption bug regarding included files. (Derick)
- Fixed possible INI setting leak via virtual() in Apache 2 sapi. (Ilia)
- Fixed possible crash and/or memory corruption in import_request_variables().
  (Ilia)
- Fixed potential GLOBALS overwrite via import_request_variables(). (Ilia)
- Fixed possible GLOBALS variable override when register_globals are ON.
  (Ilia, Stefan)
- Fixed possible register_globals toggle via parse_str(). (Ilia, Stefan)
- Fixed bug #34850 (--program-suffix and --program-prefix not included in
  man page names). (Jani)
- Fixed bug #34790 (preg_match_all(), named capturing groups, variable
  assignment/return => crash). (Dmitry)
- Fixed bug #34742 (ftp wrapper failures caused from segmented command
  transfer). (Ilia)
- Fixed bug #34704 (Infinite recursion due to corrupt JPEG). (Marcus)
- Fixed bug #34645 (ctype corrupts memory when validating large numbers). (Ilia)
- Fixed bug #34565 (mb_send_mail does not fetch mail.force_extra_parameters).
  (Marco, Ilia)
- Fixed bug #34557 (php -m exits with "error" 1). (Johannes)
- Fixed bug #34456 (Possible crash inside pspell extension). (Ilia)
- Fixed bug #34311 (unserialize() crashes with chars above 191 dec). (Nuno)
- Fixed bug #34307 (on_modify handler not called to set the default value if
  setting from php.ini was invalid). (Andrei)
- Fixed bug #34302 (date('W') do not return leading zeros for week 1 to 9).
  (Derick)
- Fixed bug #34277 (array_filter() crashes with references and objects).
  (Dmitry)
- Fixed bug #34191 (ob_gzhandler does not enforce trailing \0). (Ilia)
- Fixed bug #34156 (memory usage remains elevated after memory limit is
  reached). (Ilia)
- Fixed bug #34148 (+,- and . not supported as parts of scheme). (Ilia)
- Fixed bug #34137 (assigning array element by reference causes binary mess).
  (Dmitry)
- Fixed bug #34068 (Numeric string as array key not cast to integer in
  wddx_deserialize()). (Ilia)
- Fixed bug #34064 (arr[] as param to function is allowed only if function
  receives argument by reference). (Dmitry)
- Fixed bug #33989 (extract($GLOBALS,EXTR_REFS) crashes PHP). (Dmitry)
- Fixed bug #33987 (php script as ErrorDocument causes crash in Apache 2).
  (Ilia)
- Fixed bug #33940 (array_map() fails to pass by reference when called
  recursively). (Dmitry)
- Fixed bug #33690 (Crash setting some ini directives in httpd.conf). (Rasmus)
- Fixed bug #33673 (Added detection for partially uploaded files). (Ilia)
- Fixed bug #33648 (Using --with-regex=system causes compile failure). (Andrei)
- Fixed bug #33558 (Warning with nested calls to functions returning by
  reference). (Dmitry, Derick)
- Fixed bug #33383 (crash when retrieving empty LOBs). (Tony)
- Fixed bug #33156 (cygwin version of setitimer doesn't accept ITIMER_PROF).
  (Nuno)
- Fixed bug #32937 (open_basedir looses trailing / in the limiter). (Adam C.)
- Fixed bug #32589 (possible crash inside imap_mail_compose() function). (Ilia)
- Fixed bug #32179 (xmlrpc_encode() segfaults with recursive references). (Tony)
- Fixed bug #32160 (copying a file into itself leads to data loss). (Ilia)
- Fixed bug #31158 (array_splice on $GLOBALS crashes). (Dmitry)
- Fixed bug #29983 (PHP does not explicitly set mime type & charset). (Ilia)
- Fixed bug #29253 (array_diff with $GLOBALS argument fails). (Dmitry)
- Fixed bug #21306 (ext/sesssion: catch bailouts of write handler during
  RSHUTDOWN). (Jani, Xuefer at 21cn dot com)

11 Jul 2005, Version 4.4.0
- Added man pages for "phpize" and "php-config" scripts. (Jakub Vrana)
- Added support for .cc files in extensions. (Brian)
- Added the sorting flag SORT_LOCALE_STRING to the sort() functions which makes
  them sort based on the current locale. (Derick)
- Changed sha1_file() and md5_file() functions to use streams instead of
  low level IO. (Uwe)
- Fixed memory corruptions when using references in a wrong way. (Marcus,
  Dmitry, Derick)
- Fixed memory corruption in pg_copy_from() in case the as_null parameter was
  passed. (Derick)
- Fixed memory corruption in stristr(). (Derick)
- Fixed bug #32685, #29423 (Segfault when using assignment by reference within
  function). (Dmitry, Derick)
- Fixed bug #33242 (Mangled error message when stream fails). (Derick)
- Fixed bug #33222 (segfault when CURL handle is closed in a callback). (Tony)
- Fixed bug #33214 (odbc_next_result does not signal SQL errors with
  2-statement SQL batches). (rich at kastle dot com, Tony)
- Fixed bug #33210 (relax jpeg recursive loop protection). (Ilia)
- Fixed bug #33200 (preg_replace(): magic_quotes_sybase=On makes 'e' modifier
  misbehave). (Jani)
- Fixed bug #33150 (shtool: insecure temporary file creation). (Jani)
- Fixed bug #33072 (Add a safemode/open_basedir check for runtime save_path
  change) (Rasmus)
- Fixed bug #33070 (Improved performance of bzdecompress() by several orders
  of magnitude). (Ilia)
- Fixed bug #33057 (Don't send extraneous entity-headers on a 304 as per
  RFC 2616 section 10.3.5) (Rasmus, Choitel)
- Fixed bug #33019 (socket errors cause memory leaks in php_strerror()).
  (jwozniak23 at poczta dot onet dot pl, Tony).
- Fixed bug #33017 ("make distclean" gives an error with VPATH build). (Jani)
- Fixed bug #33013 ("next month" was handled wrong while parsing dates).
  (Derick)
- Fixed bug #32974 (pcntl calls malloc() from a signal handler). (Wez)
- Fixed bug #32944 (Disabling session.use_cookies doesn't prevent reading
  session cookies). (Jani, Tony)
- Fixed bug #32936 (http redirects URLs are not checked for control chars). (Ilia)
- Fixed bug #32932 (Oracle LDAP: ldap_get_entries invalid pointer). (Jani)
- Fixed bug #32904 (pg_get_notify() ignores result_type parameter). (Tony)
- Fixed bug #32813 (parse_url() does not handle scheme-only urls properly). (Ilia)
- Fixed bug #32810 (temporary files not using plain file wrapper). (Ilia)
- Fixed bug #32802 (General cookie overrides more specific cookie). (Ilia)
- Fixed bugs #32800, #32830 (ext/odbc: Problems with 64bit systems). (Jani)
- Fixed bug #32773 (GMP functions break when second parameter is 0). (Stas)
- Fixed bug #32742 (segmentation fault when the stream with a wrapper
  is not closed). (Tony, Dmitry)
- Fixed bug #32730 (ext/crack.c fails to compile with cracklib-2.8.3). (Jani)
- Fixed bug #32670 (foreach() does not issue warning on unset array arg). (Ilia)
- Fixed bug #32699 (pg_affected_rows() was defined when it was not available).
  (Derick)
- Fixed bug #32682 (ext/mssql: Error on module shutdown when called from
  activescript). (Frank)
- Fixed bug #32647 (Using register_shutdown_function() with invalid callback
  can crash PHP). (Jani)
- Fixed bug #32591 (ext/mysql: Unsatisfied symbol: ntohs with HP-UX). (Jani)
- Fixed bug #32589 (Possible crash inside imap_mail_compose, with charsets).
  (Ilia)
- Fixed bug #32587 (Apache2: errors sent to error_log do not include
  timestamps). (Jani)
- Fixed bug #32567 (ext/gmp fails to compile in threadsafe mode). (Tony)
- Fixed bug #32538 (ext/swf/swf.c does not compile with gcc-3.4.x or newer).
  (adam dot greenfield at gmail dot com)
- Fixed bug #32530 (chunk_split() does not append endstr if chunklen is
  longer then the original string). (Ilia)
- Fixed bug #32491 (File upload error - unable to create a temporary file).
  (Uwe Schindler)
- Fixed bug #32311 (mb_encode_mimeheader() does not properly escape characters).
  (Moriyoshi)
- Fixed bug #32245 (xml_parser_free() in a function assigned to the xml parser
  gives a segfault). (Rob)
- Fixed bug #32116 (mysql compressed connection doesn't work under windows)
  (Georg)
- Fixed bug #31887 (ISAPI: Custom 5xx error does not return correct HTTP
  response message). (Jani)
- Fixed bug #31583 (php_std_date() uses short day names in non-y2k_compliance mode).
  (mike at php dot net)
- Fixed bug #31213 (Sideeffects caused by fix of bug #29493). (Dmitry)
- Fixed bug #30052 (Crash on shutdown after odbc_pconnect()). (Edin)
- Fixed bug #29975 (memory leaks when set_error_handler() is used inside error
  handler). (Tony)
- Fixed bug #29944 (Function defined in switch, crashes). (Dmitry)
- Fixed bug #29338 (unencoded spaces get ignored after certain tags). (Ilia)
- Fixed bug #28605 (Need to use -[m]ieee option for Alpha CPUs). (Jani)
- Fixed bug #28377 (debug_backtrace is intermittently passing args). (Dmitry)

31 Mar 2005, Version 4.3.11
- Added Oracle Instant Client support. (cjbj at hotmail dot com, Tony)
- Added checks for negative values to gmp_sqrt(), gmp_powm(), gmp_sqrtrem()
  and gmp_fact() to prevent SIGFPE. (Tony)
- Changed phpize not to require libtool. (Jani)
- Updated bundled libmbfl library (used for multibyte functions). (Moriyoshi)
- Fixed several leaks in ext/browscap and sapi/embed. (Andrei)
- Fixed several leaks in ext/filepro. (Tony)
- Fixed build system to always use bundled libtool files. (Jani)
- Fixed MacOSX shared extensions crashing on Apache startup. (Rasmus)
- Fixed bug #32373 (segfault in bzopen() if supplied path to non-existent
  file). (Tony)
- Fixed bug #32340 (insert_before($node,NULL) does not return). (Rob)
- Fixed bug #32200 (Prevent using both --with-apxs2 and --with-apxs2filter).
  (Jani)
- Fixed bug #32114 (DOM crashing when attribute appended to Document). (Rob)
- Fixed bug #32063 (mb_convert_encoding ignores named entity 'alpha').
  (Moriyoshi)
- Fixed bug #31960 (msql_fetch_row() and msql_fetch_array() dropping columns
  with NULL values). (Daniel Convissor)
- Fixed bug #31936 (set_h_errno() is redefined incompatibly). (Jani)
- Fixed bug #31911 (mb_decode_mimeheader() is case-sensitive to hex escapes).
  (Moriyoshi)
- Fixed bug #31858 (--disable-cli does not force --without-pear). (Jani)
- Fixed bug #31842 (*date('r') does not return RFC2822 conforming date string).
  (Jani)
- Fixed bug #31797 (exif_read_data() uses too low nesting limit). (Ilia)
- Fixed bug #31796 (readline completion handler does not handle empty return
  values). (Ilia)
- Fixed bug #31792 (getrusage() does not provide ru_nswap value). (Ilia)
- Fixed bug #31754 (dbase_open() fails for mode = 1). (Mehdi, Derick)
- Fixed bug #31705 (parse_url() does not recognize http://foo.com#bar). (Ilia)
- Fixed bug #31684 (dio_tcsetattr(): misconfigured termios settings).
  (elod at itfais dot com)
- Fixed bug #31699 (unserialize() float problem on non-English locales). (Ilia)
- Fixed bug #31623 (OCILogin does not support password grace period).
  (daniel dot beet at accuratesoftware dot com, Tony)
- Fixed bug #31580 (fgetcsv() problematic with "" escape sequences). (Ilia)
- Fixed bug #31527 (crash in msg_send() when non-string is stored without
  being serialized). (Ilia)
- Fixed bug #31514 (open_basedir uses path_translated rather then cwd for .
  translation). (Ilia)
- Fixed bug #31480 (Possible infinite loop in imap_mail_compose()). (Ilia)
- Fixed bug #31479 (Fixed crash in chunk_split(), when chunklen > strlen). (Ilia)
- Fixed bug #31465 (False warning in unpack() when working with *). (Ilia)
- Fixed bug #31454 (session_set_save_handler crashes PHP when supplied
  non-existent object ref). (Tony)
- Fixed bug #31444 (Memory leak in zend_language_scanner.c).
  (hexer at studentcenter dot org)
- Fixed bug #31442 (unserialize broken on 64-bit systems). (Marcus)
- Fixed bug #31440 ($GLOBALS can be overwritten via GPC when
  register_globals is enabled). (Ilia)
- Fixed bug #31413 (curl POSTFIELDS crashes on 64-bit platforms). (Joe)
- Fixed bug #31396 (compile fails with gd 2.0.33 without freetype). (Jani)
- Fixed bug #31371 (highlight_file() trims new line after heredoc). (Ilia)
- Fixed bug #31270 (missing safe_mode/open_basedir check in swf_openfile()). (Ilia)
- Fixed bug #31174 (compile warning in url.c). (Ilia, lukem at NetBSD dot org)
- Fixed bug #31159 (COM object access is not working). (Wez)
- Fixed bug #31142 (imap_mail_compose() fails to generate correct output). (Ilia)
- Fixed bug #31398 (When magic_guotes_gpc are enabled filenames with ' get cutoff).
  (Ilia)
- Fixed bug #31288 (Possible crash in mysql_fetch_field(), if mysql_list_fields()
  was not called previously). (Ilia)
- Fixed bug #31120 (mssql_query returns false on successfull inserts and
  stored procedures). (Frank)
- Fixed bugs #31107, #31110, #31111, #31249 (Compile failure of zend_strtod.c).
  (Jani)
- Fixed bug #31106 (Fixed crash in overloaded objects). (Stas)
- Fixed bug #31103 (Better error message when c-client cannot be found). (Ilia)
- Fixed bug #31101 (missing kerberos header file path with --with-openssl). (Jani)
- Fixed bug #31072 (var_export() does not output an array element with an empty
  string key). (Derick)
- Fixed bug #31060 (imageftbbox() does not use linespacing parameter). (Jani)
- Fixed bug #31056 (php_std_date() returns invalid formatted date if
  y2k_compliance is On). (Ilia)
- Fixed bug #31055 (apache2filter: per request leak proportional to the full
  path of the request URI). (kameshj at fastmail dot fm)
- Fixed bug #30726 (-.1 like numbers are not being handled correctly). (Ilia)
- Fixed bug #30609 (cURL functions bypass open_basedir). (Jani)
- Fixed bug #30573 (compiler warnings in libmbfl due to invalid type cast).
  (Moriyoshi)
- Fixed bug #30549 (incorrect character translations for some ISO8859 charsets).
  (Moriyoshi)
- Fixed bug #30446 (apache2handler: virtual() includes files out of sequence)
- Fixed bug #30430 (odbc_next_result() doesn't bind values and that results
  in segfault). (pdan-php at esync dot org, Tony)
- Fixed bug #30120 (imagettftext() and imagettfbbox() accept too many
  parameters). (Jani)
- Fixed bug #29733 (printf() handles repeated placeholders wrong).
  (bugs dot php dot net at bluetwanger dot de, Ilia)
- Fixed bug #29424 (width and height inverted for JPEG2000 files). (Ilia)
- Fixed bug #28976 (mail(): use "From:" from headers if sendmail_from is empty).
  (Jani)
- Fixed bug #28930 (PHP sources pick wrong header files generated by bison).
  (eggert at gnu dot org)
- Fixed bug #28804 (ini-file section parsing pattern is buggy).
  (wendland at scan-plus dot de)
- Fixed bug #28803 (enabled debug causes bailout errors with CLI on AIX
  because of fflush() called on already closed filedescriptor). (Tony)
- Fixed bug #28451 (corupt EXIF headers have unlimited recursive IFD directory
  entries). (Andrei)
- Fixed bug #28220 (mb_strwidth() returns wrong width values for some hangul chars). (Moriyoshi)
- Fixed bug #28086 (crash inside overload() function). (Tony)
- Fixed bug #28074 (FastCGI: stderr should be written in a FCGI stderr stream).
  (chris at ex-parrot dot com)
- Fixed bug #28067 (partially incorrect utf8 to htmlentities mapping). (Derick,
  Benjamin Greiner)
- Fixed bug #27633 (Double \r problem on ftp_get in ASCII mode on Win32). (Ilia)
- Fixed bug #18613 (Multiple OUs in x509 certificate not handled properly). (Jani)
- Fixed bug #7782 (Cannot use PATH_INFO fully with php isapi). (Unknown)

15 Dec 2004, Version 4.3.10
- Added the %F modifier to *printf to render a non-locale-aware representation
  of a float with the . as decimal separator. (Derick)
- Backported Marcus' foreach() speedup patch from PHP 5.x. (Derick)
- Fixed a bug in addslashes() handling of the '\0' character. (Ilia)
- Fixed potential problems with unserializing invalid serialize data. (Marcus)
- Fixed bug #31034 (Problem with non-existing iconv header file). (Derick)
- Fixed bug #31024 (Crash in fgetcsv() with negative length). (Ilia)
- Fixed bug #31019 (Logic error mssql library checking). (Frank)
- Fixed bug #30995 (snmp extension does not build with net-snmp 5.2). (Ilia)
- Fixed bug #30990 (allow popen() on *NIX to accept 'b' flag). (Ilia)
- Fixed bug #30826 (Certain reference relations cannot be unserialized
  properly). (Ilia)
- Fixed bug #30750 (Meaningful error message when upload directory is not
  accessible). (Ilia)
- Fixed bug #30739 (imagefill does not set back alphablending mode). (Pierre)
- Fixed bug #30672 (Problem handling exif data in jpeg images at unusual
  places). (Marcus)
- Fixed bug #30658 (Ensure that temporary files created by GD are removed).
  (Ilia)
- Fixed bug #30654 (oci8 persistent connection is deleted from hash
  if there was exclusive connection with the same credentials). (Tony)
- Fixed bug #30613 (Prevent infinite recursion in url redirection). (Ilia)
- Fixed bug #30587 (array_multisort doesn't separate zvals before
  changing them). (Tony)
- Fixed bug #30475 (curl_getinfo() may crash in some situations). (Ilia)
- Fixed bug #30442 (segfault when parsing ?getvariable[][ ). (Tony)
- Fixed bug #30388 (rename across filesystems loses ownership and
  permission info). (Tony)
- Fixed bug #30282 (segfault when using unknown/unsupported
  session.save_handler and/or session.serialize_handler). (Tony)
- Fixed bug #30281 (Prevent non-wbmp images from being detected as such).
  (Ilia)
- Fixed bug #30276 (Possible crash in ctype_digit on large numbers). (Ilia)
- Fixed bug #30229 (imagerectangle and imagefilledrectangle do work well
  with alpha channel, corners are drawn twice). (Pierre)
- Fixed bug #30224 (Sybase date strings are sometimes not null terminated).
  (Ilia)
- Fixed bug #30133 (get_current_user() crashes on Windows). (Edin)
- Fixed bug #30057 (did not detect IPV6 on FreeBSD 4.1). (Wez)
- Fixed bug #30027 (Possible crash inside ftp_get()).
  (cfield at affinitysolutions dot com)
- Fixed bug #29805 (HTTP Authentication Issues). (Uwe Schindler)
- Fixed bug #29418 (double free when openssl_csr_new fails).
  (Kamesh Jayachandran).
- Fixed bug #28598 (Lost support for MS Symbol fonts). (Pierre)
- Fixed bug #28325 (Circular references not properly serialized). (Moriyoshi)
- Fixed bug #28228 (NULL decimal separator is not being handled correctly).
  (Ilia)
- Fixed bug #27469 (serialize() objects of incomplete class). (Dmitry)

22 Sep 2004, Version 4.3.9
- GPC input processing fixes (Stefano Di Paola, Rasmus, Stefan)
- Implemented periodic PCRE compiled regexp cache cleanup, to avoid memory
  exhaustion. (Andrei)
- Fixed bug with raw_post_data not getting set (Brian)
- Fixed a file-descriptor leak with phpinfo() and other 'special' URLs (Zeev)
- Rewritten UNIX and Windows install help files. (Documentation Team)
- Updated PCRE to provide better error handling in certain cases. (Andrei)
- NSAPI: added "bucket" parameter to list of non-php.ini-keys of php4_execute
  for doing performance stats without warnings in server-log. (Uwe Schindler)
- Fixed bug preventing from building oci8 as shared.
  (stanislav dot voroniy at portavita dot nl, Tony)
- Fixed leap year checking with idate(). (Christian Schneider, Derick)
- Fixed strip_tags() to correctly handle '\0' characters. (Stefan)
- Fixed funny forking effect in FastCGI when PHP_FCGI_CHILDREN was not set.
- Fixed bug #30050 (Possible crash inside php_shutdown_config()).
  (Ilia, nw at softwarekombinat dot de)
- Fixed bug #29954 (array_reduce segfaults when initial value is array). (Tony)
- Fixed bug #29882 (isset crashes on arrays). (Marcus)
- Fixed bug #29753 (mcal_fetch_event() allows 2nd argument to be optional).
  (Ilia, Vrana)
- Fixed bug #29727 (Added missing CURL authentication directives). (Ilia)
- Fixed bug #29719 (fgetcsv() has problem parsing strings ending with escaped
  enclosures). (Ilia)
- Fixed bug #29607 (highlighting code with HEREDOC produces invalid output).
  (Ilia)
- Fixed bug #29599 (domxml_error segfaults another apache module). (Rob)
- Fixed bug #29594 (Use PHP's own tmpfile() implementation). (Ilia)
- Fixed bug #29581 (Typo inside php.ini comments for mysql.trace_mode). (Ilia)
- Fixed bug #29493 (extract(array, EXTR_REFS) misbehaves with elements referred
  twice or more times). (Moriyoshi)
- Fixed bug #29443 (Sanity check for wbmp detection). (Ilia)
- Fixed bug #29369 (Uploaded files with ' or " in their names get their names
  truncated at those characters). (Ilia)
- Fixed bug #29349 (imagecreatefromstring() crashes with external GD library).
  (Ilia, adconrad at debian dot org)
- Fixed bug #29333 (output_buffering+trans_sess_id can corrupt output). (Ilia)
- Fixed bug #29226 (ctype_* functions missing validation of numeric string
  representations). (Ilia)
- Fixed bug #29209 (imap_fetchbody() doesn't check message index).
  (Ilia, Tony)
- Fixed bug #29116 (Zend constant warning uses memory after free).
  (Marcus, jdolecek at NetBSD dot org)
- Fixed bug #29114 (Potential double free in php_stat). (Sara)
- Fixed bug #29075 (strnatcmp() incorrectly handles whitespace).
  (Curt, Ilia)
- Fixed bug #29049 (array sorting via user function/method does not
  validate it). (Ilia)
- Fixed bug #29038 (extract() with EXTR_PREFIX_SAME prefixes empty strings).
  (Andrey)
- Fixed bug #29034 (wordwrap() returns a boolean when passed empty string).
 (Ilia)
- Fixed bug #28974 (overflow in array_slice(), array_splice(), substr,
  substr_replace(), strspn(), strcspn()). (Andrey)
- Fixed bug #28897 (ibase: -1 returned as -0.000 for 64-bit scaled int). (Ard)
- Fixed bug #28879 (Implicit/Explicit array creation inconsistency when using
  Resources, Arrays, or Objects as indices). (Sara)
- Fixed bug #28878 (Setting of inikey's in obj.conf fails). (Uwe Schindler)
- Fixed bug #28868 (Internal wrapper registry not thread safe). (Sara)
- Fixed bug #28818 (Apache 2 sapis do not export st_dev).
  (xuefer at 21cn dot com, Ilia).
- Fixed bug #28800 (strings beginning with "inf" improperly converted). (Ilia)
- Fixed bug #28723 (Fixed mbstring config.m4 to work on OSes where test
  command does not support -e parameter). (Ilia)
- Fixed bug #28692 (\0 in Authenticate header passed via safe_mode). (Ilia)
- Fixed bug #28670 (WWW-Authentication header mangling with PCRE in safe_mode
  adds extra spaces). (Ilia)
- Fixed bug #28668 (glob() does not work with relative paths on Windows). (Ilia)
- Fixed bug #28649 (Proper glob() return value on Linux when there are no
  matches). (Ilia)
- Fixed bug #28633 (sprintf incorrectly adding padding to floats). (Ilia)
- Fixed bug #28627 (When multiple MySQL links are used default link is leaked).
  (gavin at ipalsoftware dot com, Ilia)
- Fixed bug #28525 (gmp_powm() does not work with hexadecimal string modulo
  represented as a string). (pickett at sumu dot org, Ilia)
- Fixed bug #28512 (Allocate enough space to store MSSQL data). (Frank)
- Fixed bug #28466 (mbstring_convert_variables() array separation problem).
  (Moriyoshi)
- Fixed bug #28175 (Allow bundled GD to compile against freetype 2.1.2).
  (Elf, Ilia)

14 Jul 2004, Version 4.3.8
- Fixed strip_tags() to correctly handle '\0' characters. (Stefan)
- Fixed memory_limit during request startup. (Stefan)
- Replace alloca() with emalloc() for better stack protection. (Ilia)
- Added missing safe_mode checks inside ftok and itpc. (Ilia)
- Fixed bug #28963 (Missing space for \0 in address allocation in IMAP). (Ilia)
- Fixed bug #28632 (Prevent open_basedir bypass via MySQL's LOAD DATA LOCAL).
  (Ilia)

03 Jun 2004, Version 4.3.7
- Upgraded bundled GD library to 2.0.23. (Ilia)
- Changed user error handler mechanism to relay to built-in error handler if it
  returns false. (Andrei)
- Fixed command line escaping routines for win32. (Ilia)
- Fixed problems with *printf() functions and '%f' formatting. (Marcus)
- Fixed possible crash inside pg_copy_(to|from) function if delimiter is more
  then 1 character long. (Ilia)
- Fixed crash inside cpdf_place_inline_image() when working with truecolor
  images. (Ilia)
- Fixed handling of return values from storred procedures in mssql_execute()
  with multiple result sets returned. (Frank)
- Fixed logic bug in session_register() which allowed registering _SESSION
  and/or HTTP_SESSION_VARS. (Sara)
- Fixed bug #28597 (xmlrpc_encode_request() incorrectly encodes chars in
  200-210 range). (fernando dot nemec at folha dot com dot br, Ilia)
- Fixed bug #28569 (informix connection id is not thread safe).
  (novicky at aarongroup dot cz, Ard)
- Fixed bug #28564 (Problem building informix as a shared extension).
  (roques at mti dot ag, Ilia)
- Fixed bug #28508 (Do not make hypot() available if not supported by libc).
  (Ilia)
- Fixed bug #28506 (Allow negative start angle in imagearc and imagefilledarc.
  (Pierre)
- Fixed bug #28456 (Problem with enclosed / in uploaded files). (Antony)
- Fixed bug #28386 (wordwrap() wraps lines 1 character too soon). (Ilia)
- Fixed bug #28374 (Possible unterminated loop inside
  _php_pgsql_trim_message()). (Ilia)
- Fixed bug #28355 (glob() does not return error on Linux when it does not
  have permission to open the directory). (Ilia)
- Fixed bug #28289 (incorrect resolving of relative paths by glob() in
  windows). (Ilia)
- Fixed bug #28229 (run-tests tripped up by spaces in names). (Marcus)
- Fixed bug #28228 (number_format() does not allow empty decimal separator).
  (Ilia)
- Fixed bug #28196 (missing error constants in cURL extension). (Ilia)
- Fixed bug #28187 (parse_url() not handling embedded IPv6 in URLs). (Sara)
- Fixed bug #28175 (build problem for people using FreeType 2.1.0-2.1.2).
  (Ilia)
- Fixed bug #28147 (Crash with drawing anti-aliased lines). (Derick)
- Fixed bug #28122 (dba_open db3: Permission denied). (Marcus)
- Fixed bug #28112 (sqlite_query() crashing apache on malformed query). (Ilia,
  Marcus)
- Fixed bug #28055 (timeout duration too long in feof()/pfsockopen() liveness
  checks). (Wez)
- Fixed bug #28087 (Do not force mysql.trace_mode to 0 on every request).
  (Ilia)
- Fixed bug #28042 (greek letters in html to entitity mapping not correct).
  (Derick)
- Fixed bug #28007 (compile mssql extension with old versions of FreeTDS
  fails). (Frank)
- Fixed bug #27995 (imagefilltoborder() stops the fill process prematurely).
  (Ilia)
- Fixed bug #27810 (don't use php's pemalloc in ext/pcre). (Joe Orton)
- Fixed bug #23220 (SSL: fatal protocol error when talking to IIS). (Wez)

15 Apr 2004, Version 4.3.6
- Updated bundled PDFLib library to version 5.0.3p1 in Windows distribution.
  (Edin)
- Fixed a crash in multi-threaded environments when a thread is shutdown by
  the web server. (Stas)
- Fixed a bug that prevented building of the GD extension against external GD
  lib 1.X. (Ilia, Edin, Nick Talbott).
- Synchronized bundled GD library with GD 2.0.22. (Ilia)
- Fixed bug #27963 (Session lifetime setting may leak between requests). (Ilia)
- Fixed bug #27849 (configure craps out on trivial syntax error). (Derick)
- Fixed bug #27822 (is_resource() returns TRUE for closed resources). (Derick)
- Fixed bug #27819 (problems returning reference to a reference parameter).
  (Ilia)
- Fixed bug #27809 (ftp_systype returns null on some ftp servers). (Ilia)
- Fixed bug #27802 (default number of children to 8 when PHP_FCGI_CHILDREN is
  not defined). (Ilia)
- Fixed bug #27780 (strtotime(+1 xxx) returns a wrong date/time). (Derick)
- Fixed bug #27769 (domxml_xmltree crashes). (Rob)
- Fixed bug #27764 (Get return value from a stored procedure not returning any
  result sets). (Frank)
- Fixed bug #27762 (SCO Openserver doesn't have S_ISSOCK). (Wez)
- Fixed bug #27743 (Make sure Money types are converted and returned
  correctly). (Frank)
- Fixed bug #27732 (Fixed compilation bug inside php_sab_info.h). (Ilia)
- Fixed bug #27731 (error_reporting() inside @ block fails to set
  error_reporting level). (Ilia)
- Fixed bug #27719 (mktime issues on and around DST changeover). (Rasmus)
- Fixed bug #27717 (Test Failures when compiled on 64-bit mode). (Ard, Derick)
- Fixed bug #27687 (Bug Adding Default Charset to 'text/*' Content-Type
  Header). (Marcus)
- Fixed bug #27663 (compile failure with cURL 7.11.1). (Ilia)
- Fixed bug #27646 (Cannot serialize/unserialize non-finite numeric values).
  (Marcus)
- Fixed bug #26757 (session.save_path default is bogus for win32). (Wez)
- Fixed bug #26589 (Crash inside mssql extension when selecting many columns
  of type money). (Frank)
- Fixed bug #25547 (error_handler and array index with function call).
  (cschneid at cschneid dot com)

26 Mar 2004, Version 4.3.5
- Fixed possible crash using an invalid color index with a palette image in
  imagecolortransparent. (Pierre)
- Fixed php-cgi to not ignore command-line switches when run in a web context.
  This fixes our test cases allowing INI with GET sections to work. (Rasmus)
- Fixed getopt() so it works without $_SERVER. (Rasmus, bfrance)
- Fixed crash in php_ini_scanned_files() when no additional INI files were
  actually parsed. (Jon)
- Fixed possible crashes inside socket extension, due to missing check inside
  allocation functions. (Ilia)
- Fixed zero bytes memory allocation when no extra ini files are found in the
  --with-config-file-scan-dir specified directory. (Eric Colinet, Derick)
- Changed "allow_url_fopen" php.ini option to be PHP_INI_SYSTEM. (Sara)
- Improved the sybase_ct module: (Timm)
  . Added ability to define a message handler not only globally, but also per
    connection.
  . Added "sybct.packet_size" php.ini option.
  . Changed "sybct.login_timeout" php.ini option changeable at runtime.
  . Fixed memory leak in sybase_set_message_handler().
- Synchronized bundled GD library with GD 2.0.17. (Ilia)
- Upgraded PCRE library to version 4.5. (Andrei)
- Updated bundled PostgreSQL library to version 7.4 in Windows distribution.
  (Edin)
- Added support for --program-prefix and --program-suffix configure options.
  (Jani)
- Added a warning when creating temp stream fails with ftp_(n)list(). (Sara)
- Fixed header handler in NSAPI SAPI module (header->replace was ignored,
  send_default_content_type now sends value from php.ini). (Uwe Schindler)
- Fixed bug #27633 (Incorrect EOL translation by ftp_get() in ASCII mode).
  (Ilia)
- Fixed bug #27600 (GCC 3.0.4 does not like __attribute__ directive). (Sascha)
- Fixed bug #27590 (crash during shutdown when freeing persistent resources in
  ZTS mode). (Ilia)
- Fixed bug #27582 (possible crashes in imagefilltoborder()). (Pierre)
- Fixed bug #27580 (pre-initialization errors in ap2 handler are not being
  written to vhost error log). (Ilia)
- Fixed bug #27559 (Corrected open_basedir resolving logic). (Ilia)
- Fixed bug #27530 (broken http auth when safe_mode is on and PCRE is disabled).
  (Ilia)
- Fixed bug #27509 (broken getaddrinfo() causes fsockopen() error). (Sara)
- Fixed bug #27505 (htmlentities() does not handle BIG5 correctly). (Ilia,
  ywliu at hotmail dot com)
- Fixed bug #27498 (bogus safe_mode error on nonexistent directories for
  chdir() and opendir() functions). (Ilia)
- Fixed bug #27460 (base64_decode() does not handle extra padding).
  (Ilia, naish at klanen dot net)
- Fixed bug #27443 (defined() returns wrong type). (Derick)
- Fixed bug #27437 (wrong freetype include inside GD library). (Ilia)
- Fixed bug #27424 (headers missing on flush() in apache 2 SAPIs). (Ilia)
- Fixed bug #27421 (mbstring.func_overload should be system ini setting).
  (Ilia)
- Fixed bug #27384 (unpack() misbehaves with 1 char string). (GeorgeS)
- Fixed bug #27383 (Potential crash inside fopen_wrapper, while
  parsing response code). (Ilia)
- Fixed bug #27354 (Modulus operator crashes PHP). (Derick)
- Fixed bug #27341 (HEAD requests fail to return data). (Ilia)
- Fixed bug #27337 (missing sapi_shutdown() in sapi/isapi causes memory leak).
  (Jani, msisolak at yahoo dot com)
- Fixed bug #27328 (ftp extension relies on 32-bit longs). (Sara)
- Fixed bug #27300 (Improved regex for pg_convert()).
  (benjcarson at digitaljunkies dot ca, Ilia)
- Fixed bug #27295 (memory leak inside sscanf()). (Ilia)
- Fixed bug #27293 (two crashes inside image2wbmp()). (Ilia)
- Fixed bug #27291 (get_browser matches browscap.ini patterns incorrectly).
  (Jay)
- Fixed bug #27278 (*printf() functions treat arguments as if passed by
  reference). (Ilia)
- Fixed bug #27238 (iptcparse() function misses some fields). (Pierre)
- Fixed bug #27235 (Interbase NUMERIC x.0 field returns empty string on 0).
  (Ard)
- Fixed bug #27196 (Missing content_length initialization in apache 2 sapis).
  (Ilia, pdoru at kappa dot ro)
- Fixed bug #27183 (userland stream wrapper segfaults on stream_write).
  (Moriyoshi)
- Fixed bug #27175 (tzset() is not being called by PHP on startup).
  (Ilia, sagawa at sohgoh dot net)
- Fixed bug #27172 (Possible floating point exception in gmp_powm()).
  (Ilia)
- Fixed bug #27171 (crash inside gmp_hamdist()). (Jani)
- Fixed bug #27157 (Compile Failure on Solaris 8). (Timm)
- Fixed bug #27149 (broken CLOB support in oci8 extension). (Antony)
- Fixed bug #27135 (Possible crash inside mb_strlen()). (Moriyoshi)
- Fixed bug #27104 (CLI/CGI SAPI module variable name conflict). (Marcus)
- Fixed bug #27058 (crash in sybase_connect() with 2 arguments). (Ilia)
- Fixed bug #27056 (ints used instead of longs inside some GD functions).
  (Ilia)
- Fixed bug #27040 (passing an array of form-fields to CURLOPT_POSTFIELDS
  does not work). (Ilia, Jani)
- Fixed bug #27037 (fixed possible crash in apache2handler output code).
  (Ilia)
- Fixed bug #27026 (Added "cgi.nph" php.ini option to allow forcing of the
  'Status: 200' header that is not normally needed). (Ilia)
- Fixed bug #27011 (64bit int/long confusion in preg_match*() functions).
  (Ilia)
- Fixed bug #27007 (missing connection closure when connect fails in pgsql).
  (Ilia)
- Fixed bug #26974 (rename() doesn't check the destination file against
  safe_mode/open_basedir). (Ilia)
- Fixed bug #26973 (*printf() '+' modifier broken). (Jani)
- Fixed bug #26969 (--with-openssl=shared build fails). (Jani)
- Fixed bug #26968 (Segfault with Interbase module built as shared). (Ard)
- Fixed bug #26949 (rand(min,max) always returns min when ZTS enabled). (Jani)
- Fixed bug #26937 (Warning in xml.c). (Jani)
- Fixed bug #26927 (preg_quote() does not escape \0). (Ilia)
- Fixed bug #26923 (ext/imap: pam and crypt libraries missing when build as
  shared extension). (Jani)
- Fixed bug #26909 (crash in imap_mime_header_decode() when no encoding is
  used). (Ilia)
- Fixed bug #26896 (ext/ftp does not work as shared extension). (Jani)
- Fixed bug #26892 (ORA-21301 in ocinewcollection() call). (Antony)
- Fixed bug #26878 (problem with multiple references to the same variable with
  different types). (Ilia)
- Fixed bug #26864 (pg_(update|delete) ignore PGSQL_DML_EXEC option). (Ilia)
- Fixed bug #26862 (ob_flush() followed by output_reset_rewrite_vars() may
  result in data loss). (Ilia, scottmacvicar at ntlworld dot com)
- Fixed bug #26847 (memory leak in mail() when to/subject contain only spaces).
  (Ilia)
- Fixed bug #26814 (When included file has a parse error, terminate script
  execution). (Ilia)
- Fixed bug #26777 (ext/interbase: Let DB handle NULL params). (Ard)
- Fixed bug #26772, #26967 (file operations return NULL instead of FALSE).
  (Wez, Ilia)
- Fixed bug #26758 (FastCGI exits immediately with status 255).
  (Ilia, tcarter at noggin dot com dot au)
- Fixed bug #26755 (CLI now overrides php.ini settings and switches off output
  buffering). (Edin)
- Fixed bug #26753 (zend_fetch_list_dtor_id() doesn't check NULL strings).
  (Jani, Markus dot Lidel at shadowconnect dot com)
- Fixed bug #26752 (Silent unterminated loop when length parameter for fgets(),
  fread() and fgetss() is 0). (Ilia)
- Fixed bug #26751 (PHP can't find the MySQL socket on a case sensitive file
  system). (Derick)
- Fixed bug #26703 (Certain characters inside strings incorrectly treated
  as keywords). (vrana [at] php [dot] net, Ilia)
- Fixed bug #26699 (mbstring doesn't identify "binary" as a valid encoding).
  (nirva-php at ishiboo dot com, Moriyoshi)
- Fixed bug #26667 (Added safety checks to ip2long()). (Ilia)
- Fixed bug #26653 (open_basedir incorrectly resolved on win32).
  (Ilia, scottmacvicar at ntlworld dot com)
- Fixed bug #26639 (mb_convert_variables() clutters variables beyond the
  references). (Moriyoshi)
- Fixed bug #26635 (fixed look up for fonts in the current directory w/ZTS).
  (Ilia)
- Fixed bug #26625 (pg_convert sets NULL incorrectly for character data types).
  (Ilia)
- Fixed bug #26604 (Apache2 SAPIs implicitly disable Keep-Alive). (Ilia)
- Fixed bug #26595 (ext/domxml: XSLT_NAMESPACE undeclared). (Christian)
- Fixed bug #26565 (strtotime("this month") resolving to the wrong month).
  (Jani)
- Fixed bug #26564 (ncurses5 has headers in PREFIX/include/ncurses/). (Jani)
- Fixed bug #26548 (ext/session: Malformed HTTP dates headers). (Derick)
- Fixed bug #26531 (ext/domxml: get_elements_by_tag_name() wildcard fails).
  (Rob Richards)
- Fixed bug #26488 (Missing declaration of CRTSCTS in ext/dio/dio.c). (Jani)
- Fixed bug #26467 (flock() does not force the "wouldblock" parameter to be
  passed by reference). (Wez)
- Fixed bug #26463 (Incorrect handling of semicolons after heredoc). (Ilia)
- Fixed bug #26462 (phpize + ext/bcmath -> compile error). (Jani)
- Fixed bug #26461 (-lssl missing from LIBS). (Jani)
- Fixed bug #26458 (var_dump(), var_export(), debug_zval_dump() not binary safe
  for array keys). (Ilia)
- Fixed bug #26447 (--with-openssl=shared causes compile errors). (Jani)
- Fixed bug #26446 (domxml_open_file() returns an empty error-Array). (Rob)
- Fixed bug #26440 (MFH missing context options). (Ilia)
- Fixed bug #26438 (error in thttpd SAPI installation). (Jani)
- Fixed bug #26415 (Updated bundled OpenSSL DLLs in the Windows distribution
  to 0.9.7c). (Edin)
- Fixed bug #26407 (Result set fetching broken around transactions). (Timm)
- Fixed bug #26391 (parse_url() destroys strings that contain a character in
  range of \x80-\xff)). (Moriyoshi)
- Fixed bug #26384 (crash in domxslt->process()). (Christian)
- Fixed bug #26381 (rand() without srand() doesn't work with certain php.ini).
  (Jani)
- Fixed bug #26376 (typo in ext/odbc/config.m4: DBMaker test fails). (Jani)
- Fixed bug #26355 (flock() doesn't initialize the wouldblock argument). (Ilia)
- Fixed bug #26309 (Fixed argument parsing for imageftbbox()). (Ilia)
- Fixed bug #26304 (Unexpected data loss when opening dba file). (Marcus)
- Fixed bug #26285 (escapeshellarg() uses wrong quotes on windows). (Ilia)
- Fixed bug #26267 (gmp_random() leaks memory and does not produce random
  numbers). (Jani)
- Fixed bug #26253 (ext/tokenizer: build as shared extension fails). (Jani)
- Fixed bug #26235 (yp_first/yp_next do not specify correct key length). (Ilia)
- Fixed bug #26216 ("getimagesize(): stream does not support seeking" when
  using remote files). (Marcus)
- Fixed bug #26201 (crash in ibase_trans() on invalid link handle). (Ilia)
- Fixed bug #26198 (strtotime() handling of M/F Y date format). (Ilia)
- Fixed bug #26194 (iconv() not properly defined with libiconv).
  (Steph, Frank, Moriyoshi)
- Fixed bug #26176 (Fixed handling of numeric keys in INI files). (Ilia)
- Fixed bug #26168 (shtool availability check in phpize).
  (robbat2 at gentoo dot org, Ilia)
- Fixed bug #26148 (Print the notice before modifying variable on type
  mismatch). (morten-bugs dot php dot net at afdelingp dot dk, Ilia)
- Fixed bug #26128 (mbstring prints out wrong information on phpinfo()).
  (Moriyoshi)
- Fixed bug #26113 (remove leftover local file when ftp_get/ftp_nb_get
  fails). (Ilia)
- Fixed bug #26105 (Compile failure on GCC version 3.0.X). (Ilia)
- Fixed bug #26103 (ext/mime_magic causes compile failure in ext/mssql). (Jani)
- Fixed bug #26097 (gdImageColorClosestAlpha() returns incorrect results).
  (sprice at wisc dot edu, Ilia)
- Fixed bug #26042 (memory leak if mcrypt_generic_deinit() is not called after
  every mcrypt_generic_init() call). (Ilia)
- Fixed bug #26025 (Segfault on glob() without GLOB_NOCHECK or GLOB_NOMAGIC
  under *BSD platforms). (Moriyoshi)
- Fixed bug #26005 (Random "cannot change the session ini settings" errors).
  (Jani, jsnajdr at kerio dot com)
- Fixed bug #26003 (Make fgetcsv() binary safe). (Ilia, Moriyoshi)
- Fixed bug #25963 (PostgreSQL error message include \n characters).
  (Marcus, Ilia)
- Fixed bug #25939 (feof() not working correctly for sockets). (Wez)
- Fixed bug #25916 (get_browser() -> PHP Fatal error: Nesting level too
  deep - recursive dependency?). (Uwe Schindler)
- Fixed bug #25794 (Cannot open existing hash db3 file with write" ext/dba).
  (Marcus)
- Fixed bug #25753 (php.ini settings "leak" from vhosts/.htaccess files).
  (Patch by: rover at tob dot ru)
- Fixed bug #25694 (round() and number_format() give inconsistent results).
  (Ilia)
- Fixed bug #25664 (calling ITypeInfo::Invoke with bogus params). (Wez)
- Fixed bug #25581 (getimagesize () return incorrect values on bitmap (os2)
  files). (Marcus)
- Fixed bug #25329 (sqlite_create_function with method and reference to
  $this). (Marcus).
- Fixed bug #24773 (unsetting string as array causes a crash). (Sara)
- Fixed bug #24773 (Unsetting string offsets crashes PHP). (Moriyoshi, Sara)
- Fixed bug #24582 (extensions can't be loaded dynamically in Solaris/iPlanet).
  (Jani)
- Fixed bug #23467 (date('T') outputs incorrect Time Zone).
  (Jani, scottmacvicar at ntlworld dot com)
- Fixed bug #22403 (PHP crashes when executing a sql procedure without
  parameters). (Timm)
- Fixed bug #22127 (Invalid response code when force-cgi-redirect safety
  mechanism is triggered). (Ilia, scottmacvicar at ntlworld dot com)
- Fixed bug #21760 (Use of uninitialized pointer inside php_read()).
  (Ilia, uce at ftc dot gov)
- Fixed bug #21513 (shutdown functions not executed if timed out). (Zeev)
- Fixed bug #21070 (ftp_genlist/ANSI-tmpfile() fail w/ some platform). (Sara)

3 Nov 2003, Version 4.3.4
- Made MCVE extension available on win32. (Jani)
- Upgraded bundled libfcgi and made FastCGI support viable on Win32. (Sascha)
- Added apache_get_version() function. (Ilia)
- Fixed disk_total_space() and disk_free_space() under FreeBSD. (Jon Parise)
- Fixed crash bug when non-existing save/serializer handler was used. (Jani)
- Fixed memory leak in gethostbynamel() if an error occurs. (Sara)
- Fixed FastCGI being unable to bind to a specific IP. (Sascha)
- Fixed multibyte regex engine to properly handle ".*" pattern under
  POSIX compatible mode. (K.Kosako <kosako at sofnec.co.jp>, Moriyoshi)
- Fixed bug #25955 (Compile failure on MacOSX 10.3 Panther). (Marko, Dan)
- Fixed bug #25923 (mail() modifies the to & subject arguments). (Ilia)
- Fixed bug #25922 (Crash in error handler when 5th argument is modified).
  (Ilia)
- Fixed bug #25918 (Possible crash in mime_content_type()). (Ilia)
- Fixed bug #25900 (document->get_elements_by_tag_name with default xmlns).
  (Rob)
- Fixed bug #25895 (Incorrect detection of safe_mode limited ini options).
  (Ilia)
- Fixed bug #25888 (Crash of php.exe when xpath_eval of a namespace). (Rob)
- Fixed bug #25836 (last key of multi-dimensional array passed via GPC not
  being escaped when magic_quotes_gpc is on). (Ilia)
- Fixed bug #25825 (tzset() was not called to reset libc environment on
  request shutdown). (Wez)
- Fixed bug #25814 (Make flock() return correct value when 3rd argument is
  used). (Ilia)
- Fixed bug #25800 (parse_url() could not parse urls with empty port). (Ilia)
- Fixed bug #25780 (ext/session: invalid "session.cookie_lifetime" makes
  session_start() to crash in win32). (Jani)
- Fixed bug #25777 (Do not rtrim() of text fields fetched from mssql). (Ilia)
- Fixed bug #25770 (Segfault with PHP and bison 1.875).
  (eggert@gnu.org, Marcus)
- Fixed bug #25764 (ldap_get_option() crashes with unbound ldap link). (Jani)
- Fixed bug #25758 (var_export does not escape ' & \ inside array keys).
  (Ilia)
- Fixed bug #25752 (ext/ncurses: ncurses.h instead of curses.h with BSD).
  (Jani)
- Fixed bug #25746 (Do not bail out when unable to chdir original dir on
  systems with broken getcwd()). (Ilia)
- Fixed bug #25745 (ctype functions fail with non-ascii characters).
  (Moriyoshi)
- Fixed bug #25744 (make ZTS build of ext/sybase compile). (Ilia)
- Fixed bug #25738 (alloca() related issues on the Darwin platform).
  (Moriyoshi)
- Fixed bug #25708 (extract($GLOBALS, EXTR_REFS) mangles $GLOBALS).
  (Moriyoshi)
- Fixed bug #25707 (html_entity_decode() over-decodes &amp;lt;). (Moriyoshi)
- Fixed bug #25703 (openssl configure check failed). (Jani)
- Fixed bug #25701 (On flush() set headers_sent in apache2handler). (Ilia)
- Fixed bug #25671 (str_replace() corrupts subarrays). (Sara)
- Fixed bug #25669 (eregi() with non-ascii characters). (Moriyoshi)
- Fixed bug #25665 (var_dump() hangs on Nan and INF). (Ilia)
- Fixed bug #25648 (xslt_set_encoding() not detected correctly). (Jani)
- Fixed bug #25636 (SNMP Session not closed on success).
  (Ilia, patch by: nesslage at mwsc dot edu)
- Fixed bug #25635 (Make "make tests" to fail due to invalid include_path).
  (Ilia)
- Fixed bug #25604 (HAVE_SNMP_PARSE_OID undefined with phpize build). (Jani)
- Fixed bug #25583 (Incorrect handling of paths starting with "/" on win32
  inside glob() function). (Ilia)
- Fixed bug #25570 (Possible crash in apache2handler when zend_bailout called
  outside of zend_try {} block). (Ilia)
- Fixed bug #25558 (ext/dbase: reverted fix for bug #23463). (Vlad)
- Fixed bug #25530 (checkdate() incorrectly handles floats). (Ilia)
- Fixed bug #25525 (ldap_explode_dn() crashes when passed invalid dn).
  (Sara, patch by: mikael dot suvi at trigger dot ee)
- Fixed bug #25504 (pcre_match_all() crashes when passed only 2 parameters).
  (Jani)
- Fixed bug #25483 (ext/informix: bogus -469 error from ifx_query()).
  (Jani, patch by: denisov at kubsu dot ru)
- Fixed bug #25463 (ext/cpdf: compile failure with bundled GD)
- Fixed bug #25429 (fix copying of stdin using copy() function). (Ilia)
- Fixed bug #25424 (ext/informix: lvarchar not supported in win32). (Jani)
- Fixed bug #25404 (ext/pgsql: open transactions not closed when script ends).
  (Marcus)
- Fixed bug #25385 (ob_gzhandler(): typo in sapi_add_header_ex() call). (Jani)
- Fixed bug #25378 (unserialize() crashes with invalid data). (Jani)
- Fixed bug #25372 (sscanf() does not work with %X). (Jani)
- Fixed bug #25348 ("make install" fails with --enable-short-tags). (Jani)
- Fixed bug #25343 (is_dir() gives warning on FreeBSD). (Jani)
- Fixed bug #25333 (Possible body corruption & crash in win32 mail()). (Ilia)
- Fixed bug #25316 (Possible infinite loop inside _php_stream_write()). (Ilia)
- Fixed bug #25314 (FTP_ASCII mode behaving like binary from Win->Unix).
  (Sara)
- Fixed bug #25308 (php -m crashes when zend extensions are loaded). (Stas)
- Fixed bug #25307 (Crash with WDDX serializer). (Sascha, Jani)
- Fixed bug #25295 (QNX6: php_ini.c:414: 'alphasort' undeclared). (Jani)
- Fixed bug #25294 (ext/ftp: NLST failure leads to crash on exit). (Sara, Rob)
- Fixed bug #25293 (Output correct EOL to error_log). (Ilia)
- Fixed bug #25239 (ftp_fopen_wrapper not RFC compliant). (Sara)
- Fixed bug #25218 ("deflate" compressed pages had a gzip header). (Stefan)
- Fixed bug #25211 (image.c compile failure with AIX). (Marcus)
- Fixed bug #25166 (WDDX serializer handler missing in win32). (Jani)
- Fixed bug #25109 (Possible crash when fetching field names in pgsql). (Ilia)
- Fixed bug #25106 (Added more stringent checks on bzopen() mode). (Ilia)
- Fixed bug #25070 (unlock session files on win32 before closing them). (Ilia)
- Fixed bug #24402 (Compile failure with gettext 0.12.x). (Jani)
- Fixed bug #23488 (zlib.output_compression overrides Vary header). (Stefan)
- Fixed bug #23326 (ext/domxml: Attributes via append_child not supported).
  (Melvyn)
- Fixed bug #21220 (Wrong Apache version shown in phpinfo() output). (Jani)
- Fixed bug #18534 (ifx_close() leaves open session). (nobbie@php.net)
- Fixed bug #14049 (realpath() returns invalid results for non-existent
  paths). (Ilia)

25 Aug 2003, Version 4.3.3
- Upgraded the bundled Expat library to version 1.95.6. (Jani)
- Upgraded the bundled PCRE library to version 4.3. (Andrei)
- Upgraded the bundled GD library to version GD 2.0.15. (Ilia)
- Improved the engine to use POSIX/socket IO where feasible. (Sascha)
- Improved the IMAP extension (Ilia)
  . Added imap_timeout() function. (bug #24161)
  . Added optional 'charset' parameter to imap_search() and imap_sort().
    (bug #22505)
- Improved the InterBase extension (Daniela)
  . Added transaction constants: IBASE_REC_VERSION, IBASE_REC_NO_VERSION,
    IBASE_WRITE, IBASE_WAIT and IBASE_CONCURRENCY. (bugs #8797, #23887)
  . Made numeric/decimal datatype handling work on any platform.
- Improved the NSAPI SAPI module (Uwe Schindler)
  . Added possibility to use PHP to generate HTTP error pages (404 Not Found..)
  . Added possibility to use PHP to generate directory listings for directories
    without index.html
  . php4_init (magnus.conf): new parameter to set alternate path to php.ini.
    (php_ini="/path/to/php.ini")
  . php4_execute (obj.conf): support for additional php.ini values.
    Allows different settings per virtual server.
    (See sapi/nsapi/nsapi-readme.txt for more information)
  . Added support for virtual().
  . Added nsapi_request_headers() and nsapi_response_headers() with aliases
    for apache compatibility.
  . Added "nsapi.read_timeout" php.ini option.
  . Synced $_SERVER variables to be similar to Apache variables.
- Added DBA handler 'inifile' to support ini files. (Marcus)
- Added a "DEBUG" note to 'php -v' output when --enable-debug is used. (Derick)
- Added long options into CLI & CGI (e.g. --version). (Marcus)
- Added a new parameter to preg_match*() that can be used to specify
  the starting offset in the subject string to match from. (Andrei)
- Fixed possible integer overflows in:
  . base64_encode(). (Moriyoshi)
  . bundled GD library. (Ilia)
- Fixed "mysql.connect_timeout" php.ini option to be settable with ini_set().
  (Rasmus)
- Fixed FastCGI IIS document root problem. (Shane)
- Fixed corruption of multibyte character including 0x5c as second
  byte in multipart/form-data. (Rui)
- Fixed possible crash in imagerotate() when an invalid color index
  is used for background color. (Pierre-Alain Joye)
- Fixed a bug that under certain circumstances could invalidate safe_mode.
  (Ilia)
- Fixed certificate version and allowed setting of the serial number in
  openssl_csr_sign(). (Stefan Roehrich)
- Fixed each() to be binary safe for keys. (Zeev)
- Fixed ext/yaz to not log if "yaz.log_file" php.ini option is not set. (Adam)
- Fixed a bug in bundled libmysql (mysql bug #564). (Georg)
- Fixed ext/exif to honor "magic_quotes_runtime" php.ini option. (Marcus)
- Fixed bug #25093 (ext/pgsql: Various leaks due to non-freed queries). (Ilia)
- Fixed bug #25084 (ext/session: Fixed session.referer_check to be independent
  on register_globals). (Ilia)
- Fixed bug #25081 (odbc_fetch_array() may mangle numeric fields). (Ilia)
- Fixed bug #25044 (header("Location:") changing HTTP status). (Marcus)
- Fixed bug #25037 (win32 mail(): Possible infinite loop inside SendText()).
  (Ilia)
- Fixed bug #25007 (rand() & mt_rand() seed RNG every call). (Jani)
- Fixed bug #24989 (external libexpat conflicts with bundled libexpat). (Jani)
- Fixed bug #24980 (array_reduce() uses first element as default running
  total). (Ilia)
- Fixed bug #24977 (Reverted mysql_select_db() optimization). (Ilia)
- Fixed bug #24958 (Apache2 SAPIs: Incorrect handling of 404s). (Ilia, Justin)
- Fixed bug #24951 (ob_flush() needlessly destroys output handler). (Ilia)
- Fixed bug #24936 (ext/fdf not linked properly as shared extension). (Jani)
- Fixed bug #24909 (Bad random numbers with ZTS builds on Solaris). (Ilia)
- Fixed bug #24897 (inconsistent behavior of shuffle() & array_multisort()).
  (Ilia, Jani)
- Fixed bug #24883 ("variables_order" and "gpc_order" being ignored). (Ilia)
- Fixed bug #24873 (incorrect handling of / inside open_basedir). (Ilia)
- Fixed bug #24871 (aggregate(): methods misidentified as constructors). (Ilia)
- Fixed bug #24827 (ob_gzhandler overrides Vary header). (Ilia)
- Fixed bug #24792 (--enable-zend-multibyte causes random segfaults with ZTS).
  (Fujimoto)
- Fixed bug #24783 (foreach($ar as $key => $val), $key not binary safe). (Zeev)
- Fixed bug #24760 (non-default SNMP port number not working). (Jani)
- Fixed bug #24752 (Unhandled "uniqueidentifier" field type).
  (Ilia, s.sonnenberg[at]coolspot.de)
- Fixed bug #24710 (Crash when $obj->{0} is used). (Zeev)
- Fixed bug #24663 (\n. sequences were not being escaped). (Ilia)
- Fixed bug #24640 (var_export() and var_dump() can not output large floats).
  (Marcus)
- Fixed bug #24629 (FreeBSD select() does not like large microseconds values).
  (Mirco Bauer).
- Fixed bug #24609 (ext/domxml: segfault when using replace node across
  different docs). (Rob Richards)
- Fixed bug #24594 (Rewrite of the imagefill() function). (Pierre-Alain Joye)
- Fixed bug #24592 (NULL related crash in session extension). (Sascha)
- Fixed bug #24573 (debug_backtrace() crashes if $this set to null). (Jani)
- Fixed bug #24560 (parse_url() incorrectly handling certain file:// based
  schemas). (Ilia)
- Fixed bug #24557 (make fclose() respect refcount on the resource).
  (Wez, Ilia)
- Fixed bug #24537 (apache2 compile misses some include directories). (Jani)
- Fixed bug #24535 (ext/mysql: crash when retrieving data from unbuffered
  result after the original connection has been changed). (Ilia)
- Fixed bug #24519 (aggregate_methods_by_list() does not increment refcount).
- Fixed bug #24313 (file_exists() warning on non-existent files when
  open_basedir is used). (Ilia)
- Fixed bug #24312 (base64_decode() does not skip 0xF0-0xFF characters).
  (gereon.steffens[at]onvista.de, Ilia)
- Fixed bug #24284 (Fixed memory leak inside pg_ping()). (Ilia)
- Fixed bug #24249 (fdf_add_doc_javascript() not available on Windows). (Edin)
- Fixed bug #24224 (ibase_blob_get() overflow). (Ard)
- Fixed bug #24223 (missing variable initialization in bundled gd). (Ilia)
- Fixed bug #24220 (range() didn't handle numeric strings correctly). (Ilia)
- Fixed bug #24210 (not detecting assume_default_colors - typo). (Sara)
- Fixed bug #24198 (Invalid recursion detection in array_merge_recurcive()).
  (Ilia)
- Fixed bug #24177 (Apache2 SAPIs: status set incorrectly after flush()).
  (Ilia)
- Fixed bug #24155 (gdImageRotate270 incorrectly use x parameter for y axis).
  (tom@gksystems.com, Ilia)
- Fixed bug #24150 (crash in imap_fetch_overview() &
  imap_rfc822_write_address()). (Ilia)
- Fixed bug #24142 (workaround for a gcc bug affecting round()). (Marcus, Ilia)
- Fixed bug #24063 (serialize() missing 0 after the . on scientific notation).
  (Marcus, Ilia)
- Fixed bug #24063 (scientific notation broken in *printf()). (Ilia)
- Fixed bug #24060 (ncurses_del_panel() causes segfault). (Georg)
- Fixed bug #24054 (Integer overflow failure with GCC/x86 for *=). (Sascha)
- Fixed bug #24028 (Reading raw post message by php://input failed). (Jani)
- Fixed bug #24009 (FastCGI handling of file not found). (Shane)
- Fixed bug #24007 (Problem with register_globals & arrays). (Ilia)
- Fixed bug #23951 (constants in static initializers clobbered by inheritance).
  (Wez, Zend Engine)
- Fixed bug #23936 (ext/interbase: fail to select and fetch). (Ard)
- Fixed bug #23913 (make rename() work across partitions on *nix). (Ilia)
- Fixed bug #23912 (Invalid CSS in phpinfo() output). (Ilia)
- Fixed bug #23902 (NULL in CGI header output). (Shane)
- Fixed bug #23898 (Proper handling of NULLs in odbc_result, odbc_fetch_into
  and odbc_result_all). (Ilia)
- Fixed bug #23897 (Fixed a check for mbfilter_ru.h). (aleks@m2media.ru, Ilia)
- Fixed bug #23894 (sprintf() decimal specifiers problem). (Moriyoshi)
- Fixed bug #23888 (Missing input validation for flags parameter). (Ilia)
- Fixed bug #23808 (broken imagecopymerge()). (Pierre-Alain Joye)
- Fixed bug #23798 (Spaces were not being stripped from Bcc header). (Ilia)
- Fixed bug #23792 (imagerotate() problems with limited platte, the function
  will always return true color image from now on). (Pierre-Alain Joye)
- Fixed bug #23779 (mysql_connect(): disable local infile option if php.ini
  option "open_basedir" is set). (Georg)
- Fixed bug #23769 (In FreeBSD glob() gives wrong result when pattern not
  found). (Hartmut)
- Fixed bug #23733 (Coredump on startup with Oracle 9+). (Edin)
- Fixed bug #23685 (fake values returned when OID value is an empty string).
  (Jani)
- Fixed bug #23664 (FastCGI socket listenting). (Shane)
- Fixed bug #23509 (exit code lost when exit() called from
  register_shutdown_function()). (Ilia)
- Fixed bug #23463 (ext/dbase: added Dbase2 version check). (Vlad Krupin)
- Fixed bug #23285 (Potential Stack overflow in zendlex). (Wez)
- Fixed bug #23104 (hash position of static arrays not being reset). (Ilia)
- Fixed bug #23038, #23574 (aggregate() related leaks and crashes). (Andrei)
- Fixed bug #22947 (Ack() inside win32/sendmail.c may stall in certain
  situations). (Ilia)
- Fixed bug #22690 (ob_start() did not work with create_function() callbacks).
  (Marcus)
- Fixed bug #22592 (Cascading assignments to strings with curly braces broken).
  (Stas)
- Fixed bug #22245 (References inside $_SESSION not being handled). (Ilia)
- Fixed bug #22154 (Possible crash when memory_limit is reached and output
  buffering in addition to session.use_trans_sid is used). (Ilia)
- Fixed bug #22072 (Apache2 sapis do not detect aborted connections). (Ilia)
- Fixed bug #21958 (workaround for unusual realpath() on AIX & Tru64). (Ilia)
- Fixed bug #21957 (serialize() mangles objects with __sleep). (Ilia)
- Fixed bug #21918 (strange behaviour of mixed type in array-keys). (Marcus)
- Fixed bug #21855 (Threading issue on HP-UX). (Roshan Naik, Andi, Moriyoshi)
- Fixed bug #21611 (version_compare() does not support "p" as suffix).
  (Stefan Walk)
- Fixed bug #21074 (Apache2: "ErrorDocument xxx /error.php" broken). (Jani)
- Fixed bug #20896 (-s -w modes with php-cli cause php to hang). (Ilia)
- Fixed bug #19613 (putenv("VAR=") does not empty VAR on win32). (Zeev)
- Fixed bug #18744 (ibase_blob_add() has max limit of 64k). (Ard)
- Fixed bug #18291 (escapeshellcmd() can now handle quoted arguments). (Ilia)
- Fixed bug #17414 (pthreads bug workaround). (timo.teras[at]iki.fi)
- Fixed bug #13142 (strtotime not handling "M d H:i:s Y" format). (Ilia)
- Fixed bug #11924 (ibase_query(), ibase_execute() mangled passed parameters).
  (Jani)
- Fixed bug #7014 (crash in _php_ibase_error() after request shutdown). (Ard)

29 May 2003, Version 4.3.2
- Syncronized bundled GD library with GD 2.0.12. (Ilia)
- Removed support for GDLIB version 1.x.x (php_gd.dll) on Windows. (Edin)
- Enabled read-only GIF support in the bundled GDLIB (php_gd2.dll) on Windows.
  (Sebastian, Edin)
- Improved dba extension (Marcus)
  . Added support for internal error handling of Berkeley db libraries.
  . Disallowed Berkeley db versions 4.1.0 to 4.1.24 due to locking problems.
  . Disallowed linkage of Berkeley db submodules against libraries with
    different major versions.
  . Disallowed configuring of more than one Berkeley db handler.
  . Reenabled dba_popen() with new persistent STDIO streams.
- Added a new Apache 2.0 SAPI module (sapi/apache2handler) based on the old
  version (sapi/apache2filter). (Ian Holsman, Justin Erenkrantz)
- Added "disable_classes" php.ini option to allow administrators to disable
  certain classes for security reasons. (Harald)
- Added man page for CLI version of PHP. (Marcus)
- Added --clean option into phpize. (Jani)
- Added --ldflags option into php-config. (Jani)
- Added imagesavealpha() and imageistruecolor() functions. (Pierre)
- Added XBM support for bundled GD library. (Marcus)
- Added session_regenerate_id() function. (Sascha)
- Added zlib_get_coding_type() function which returns the coding type used for
  output compression. (Moriyoshi)
- Added OCIPasswordChange() which allows renewing expired Oracle users. (Maxim)
- Added memory_get_usage(). Only available when PHP is configured with
  --enable-memory-limit. (Andrey)
- Added improved JPEG 2000 support for getimagesize(). (Marcus, Adam Wright)
- Added XBM and WBMP support for getimagesize(). (Marcus)
- Added KOI8-R, CP866, and CP1251 support for htmlentities().
  (Antony Dovgal, Moriyoshi)
- Added domdocument->free() to free XML-documents from memory. (Rob Richards)
- Fixed a bug in error reporting with the CLI for start-up errors. (Derick)
- Fixed spurious fsync calls during socket communication. (Sascha)
- Fixed a possible vhost issue in thttpd. (Sascha, dgl@dgl.cx)
- Fixed including from HTTP URLs. (Sascha)
- Fixed a lot of memory leaks in domxml. (Rob Richards, Chregu)
- Fixed a bug in GD's truecolor TTF handling. (Derick)
- Fixed several 64-bit problems. (Dave)
- Fixed several errors in hwapi extension. Objects weren't handled properly.
  (Uwe)
- Fixed bug #23788 (str|preg_replace() clobber the array elements). (Ilia)
- Fixed bug #23765 (file uploads ignored due to case sensitivity). (Sara)
- Fixed bug #23738 (ifx_copy_blob() crash). (Jani)
- Fixed bug #23661 (mysql_fetch_array() gives no warning when an invalid
  argument was passed as result_type). (Derick)
- Fixed bug #23619 (set_error_handler() registered handler not called for
  object instances). (Jani, waboring@qualys.com)
- Fixed bug #23606 (Unable to build --with-db4 (db4.1.25)). (Marcus)
- Fixed bug #23567 (pfsockopen() returns dead connections). (Wez)
- Fixed bug #23539 (curl_exec() produces strange results). (daniel@haxx.se)
- Fixed bug #23527 (PostScript Type 1 fonts do not render properly).
  (nid@home.se, Ilia)
- Fixed bug #23402 (crash with improper use of mssql_bind()). (Frank)
- Fixed bug #23371 (configure falsely detects c-client using SSL). (Jani)
- Fixed bug #23340 (fopen on multiple URLs causes memory corruption). (Wez)
- Fixed bug #23298 (serialize cuts off floats & doubles). (Ilia, Marcus)
- Fixed bug #23232 (safe_mode does not honor PHP_AUTH_* in apache2). (Ilia)
- Fixed bug #23225 (money_format() didn't handle erroneous return of strfmon).
  (Ilia, marcot@tabini.ca)
- Fixed bug #23201 (set_file_buffer() crashes with stdio streams). (Ilia)
- Fixed Bug #23188 (CDB databases created with 'c' mode do not work). (Marcus)
- Fixed bug #23187 (memory leaks in sybase_connect/sybase_pconnect). (Ilia)
- Fixed bug #23162 (user_error() crashs if error message > 1024 bytes).
  (Jay, Marcus, Moriyoshi)
- Fixed bug #23152 ($http_response_header empty on invalid URLs). (Ilia)
- Fixed bug #23102 (integer overflow in exif_iif_add_value()). (Ilia)
- Fixed bug #23099 (ext/interbase: libgds.so: undefined reference to 'crypt').
  (Jani)
- Fixed bug #23093 (highlight_string() crashed with __FUNCTION__). (Jani)
- Fixed bug #23080 (socket_strerror() crashes on win32). (Moriyoshi)
- Fixed bug #23071 (when DST in effect, date("T") crashed PHP).
  (Scott MacVicar, Jani)
- Fixed bug #23069 (tempnam creates readonly file [win32]). (Wez)
- Fixed bug #23009 (pg_select with timestamp). (Marcus, Jay)
- Fixed bug #23008 (ldap_start_tls() not available on Windows). (Edin)
- Fixed bug #23004 (When ftp_close() is called, send QUIT to the ftp server).
  (Ilia)
- Fixed bug #22989 (sendmail not found by configure). (igyu@ionsphere.org)
- Fixed bug #22987 (missing perror() check in configure). (Jani)
- Fixed bug #22965 (Crash in gd lib's ImageFillToBorder()). (Ilia)
- Fixed bug #22939 (crash in imap_header_info()). (Ilia)
- Fixed bug #22844 (Changing bool value via -d or ini_set(), On would be Off).
  (Ilia)
- Fixed bug #22786 (Crash when trying to call DomAttribute's
  set_namespace method). (Chregu)
- Fixed bug #22775 (Fatal errors exit with status 0 with CGI/CLI). (Jani)
- Fixed bug #22774 (PHP crashes when exiting (long XML doc)). (Rob Richards)
- Fixed bug #22751 (Compile error in gdcache.c when external libgd is used).
  (Jani)
- Fixed bug #22721 (Poor file() performance on systems without mmap). (Wez)
- Fixed bug #22709 (Crash in interbase when database unavailable).
  (Vladimir Michl)
- Fixed bug #22681 (Crash when reading from invalid file pointer). (Ilia)
- Fixed bug #22672 (User not logged under Apache2). (Ian)
- Fixed bug #22616 (Wrong order of -lssl and -lcrypto with IMAP). (Jani)
- Fixed bug #22613 (imagettfbox() does not add the kerning distance to the
  running position). (Ilia)
- Fixed bug #22585 (Do not terminate the script on minor errors). (Ilia)
- Fixed bug #22550 (overflow protection for upload_max_filesize ini option).
  (Ilia)
- Fixed bug #22544 (writing transparency to truecolor png images). (Ilia)
- Fixed bug #22538 (failed stat on stdio/stdin/stderr streams). (Wez, Ilia)
- Fixed bug #22530 (append_child does not unlink node). (Chregu)
- Fixed bug #22520 (mcrypt_generic_deinit() was not available on Windows).
  (Edin)
- Fixed bug #22508 (Added protection against circular HTML redirects). (Ilia)
- Fixed bug #22473 (ISAPI Secure Server variables not available).
  (Christian Swoboda)
- Fixed bug #22402 (opening of ftp for read/write could fail due to invalid
  return code handling). (Ilia)
- Fixed bug #22384 (FNM_CASEFOLD is not available). (Hartmut)
- Fixed bug #22382 (fgetcsv() did not handle \" correctly). (Ilia)
- Fixed bug #22376 (wrong httpd.conf modified when using INSTALL_ROOT). (Jani)
- Fixed bug #22363 (combinations of fwrite(), fread() and fseek() produce
  unexpected results). (Wez)
- Fixed bug #22355 (PHP would remove folding from Subject & To fields). (Ilia)
- Fixed bug #22330 (overloaded strrpos() gives wrong results).
  (david@santinoli.com, Moriyoshi)
- Fixed bug #22312 (crash on failed connection when curl_getinfo() was called).
  (Phil Oleson <poleson@verio.net>)
- Fixed bug #22308 (optimized passthru, code is now ~40 times faster). (Ilia)
- Fixed bug #22306 (pg_lo_seek($h, 0, PGSQL_SEEK_SET) succeeds but
  returns false). (Jani)
- Fixed bug #22301 (htmlspecialchars() crashes Apache on Tru64). (Ilia)
- Fixed bug #22299 (gethostbyname() with non-existing domain crashed on MacOSX).
  (Jani)
- Fixed bug #22283 (possible crash when opening relative URLs). (Ilia)
- Fixed bug #22238 (stream_select() clobbers fifos under win9x). (Wez)
- Fixed bug #22234 (copy() fails if source file has 0 length). (Moriyoshi)
- Fixed bug #22227 (printf() field limiters broke between 4.2.3 and 4.3.0).
  (Moriyoshi)
- Fixed bug #22224 (implode() changes object references in array). (Moriyoshi)
- Fixed bug #22221 (bad rows count in the result object for postgresql). (Marc)
- Fixed bug #22207 (e notation in *printf would be missing a 0 when there is
  no exponent). (Ilia)
- Fixed bug #22220 ("php_admin_value open_basedir none" does not work). (Jani)
- Fixed bug #22191 (frontbase build broken with old version of frontbase).
  (Ilia)
- Fixed bug #22187 (spprintf function did not handle floats correctly). (Ilia)
- Fixed bug #22149 (incorrect insertion of session id when tabs are used to
  separate tag elements). (Ilia)
- Fixed bug #22141 (removed undocumented Boyer str_replace() method). (Sara)
- Fixed bug #22103 (Added gdImageEllipse and replaced old gdImageFilledEllipse
  with a better implementation). (Pierre)
- Fixed bug #22088 (array_shift() left next index to be +1 too much). (Jani)
- Fixed bug #22083 (MySQL charset directory problem on Windows). (Edin)
- Fixed bug #22059 (ftp_chdir() causes segfault). (Sara)
- Fixed bug #22048 (crash in imap_header() when the e-mail contains an
  abnormally large number of special characters). (Ilia)
- Fixed bug #22042 (pg_result_seek() would never seek to the 1st row in the
  result due to always seeking to row next to the one requested). (Ilia)
- Fixed bug #22031 (Made curl_write() & curl_write_header() binary safe).
  (Ilia)
- Fixed bug #22022 (Crash in imap_mail_compose() if the body is an empty array).
  (Ilia)
- Fixed bug #22017 (date() does not support negative timestamps on win32).
  (Ilia)
- Fixed bug #22008 (strip_tags() eliminates too much). (Moriyoshi)
- Fixed bug #21007 (html_errors off text-only output in phpinfo). (Marcus)
- Fixed bug #22004 (Overload extension and _call() breaks classes). (Shane)
- Fixed bug #21998 (array_pop() did not reset the current array position).
  (Jani)
- Fixed bug #21978, #21036 (win32 mail(), bcc: gets interpreted as cc:). (Sara)
- Fixed bug #21885 (move_uploaded_file() does not ignore open_basedir). (Wez)
- Fixed bug #21820 ("$arr['foo']" generates bogus E_NOTICE, should be E_PARSE).
  (Jani)
- Fixed bug #21815 (fpassthru() ignored buffered data but complained anyway).
  (Wez)
- Fixed bug #21809 (select would not always timeout during socket shutdown).
  (Wez)
- Fixed bug #21751 (default output buffer could not be deleted). (Marcus)
- Fixed bug #21725 (return behaviour differs between include and require).
  (Zeev)
- Fixed bug #21713 (include remote files leaks descriptors on Solaris). (Wez)
- Fixed bug #21708 (ucwords() trouble again). (Moriyoshi)
- Fixed bug #21689 (fgetcsv() suppresses some characters before a separator).
  (Masahiro, Moriyoshi)
- Fixed bug #21912, #21676 (getimagesize() failed for remote files). (Wez)
- Fixed bug #21597 (made glob() understand Windows paths). (Edin)
- Fixed bug #21549 (problem with Ingres II persistent connections). (Jani)
- Fixed bug #21544 (Extended checks for where FreeTDS is installed). (Frank)
- Fixed bug #21534 (typo in gmp_gcdext() causes incorrect results). (Sara)
- Fixed bug #21531 (file_exists() and other filestat functions report errors
  when the requested file/directory does not exists). (Sara)
- Fixed bug #21529 (memory corruption by fsockopen()). (Ilia)
- Fixed bug #21525 (bind_textdomain_codeset() now available on Windows). (Edin)
- Fixed bug #21523 (number_format() could cause a memory allocation for a
  negative memory size in situations where the sprintf implementation of the
  host system generated less decimal places than were requested). (Wez)
- Fixed bug #21518 (imagecreatefromstring() crashed with invalid image files).
  (Ilia)
- Fixed bug #21511 (config.status warning). (Jani)
- Fixed bug #21498 (mysql_pconnect connection problems). (Georg)
- Fixed bug #21453 (improper handling of non-terminated < by strip_tags()).
  (Ilia)
- Fixed bug #21445 (gd unable to open fonts). (Ilia)
- Fixed bug #21443 (improper handling of ? surrounded by spaces
  in get_browser()). (Ilia)
- Fixed bug #21442 (crash in mail() on Windows when 1st parameter is empty).
  (Edin)
- Fixed bug #21410 (fixed handling of NULL or "" files on Win32). (Ilia)
- Fixed bug #21378 (COM code crashes after update 4.2.1 to 4.3.0). (Harald)
- Fixed bug #21338 (html_entity_decode() crashed when "" is passed). (Ilia)
- Fixed bug #21310 (Solaris has issues with getcwd() needing read permissions
  on directories instead of just execute). (Wez, jflemer)
- Fixed bug #21297 (in CLI/CGI on the #! it would leave a \n when the code
  encounters \r\n). (Ilia)
- Fixed bug #21268 (session_decode() returned FALSE on success). (Ilia)
- Fixed bug #21267 (opening URLs that result in redirection to a relative
  path was failing). (Ilia)
- Fixed bug #21229 (missing 3rd argument to php_module_startup). (Ilia)
- Fixed bug #21228 (broken check for ob_gzhandler and made ob_start() return
  the correct value). (Ilia)
- Fixed bug #21226 (parse_url handling of urls without a path). (Ilia)
- Fixed bug #21224 (apache configure fails when using --enable-versioning).
  (Jani)
- Fixed bug #21169 (Compile Failure and lots of warnings on UnixWare). (Derick)
- Fixed bug #21131 (fopen() with mode 'a+' and rewind() doesn't work). (Wez)
- Fixed bug #20857 (snmpset() failed always, patch by: rs@epost.de). (Jani)
- Fixed bug #20802 (PHP would die silently when memory limit reached). (Ilia)
- Fixed bug #20715 (odbc could not be compiled as shared extension). (Jani)
- Fixed bug #20641 (Numeric/decimal datatype overflow in ext/interbase
  on Win32). (Daniela)
- Fixed bug #20503 (imagesetbrush() not available on Windows). (Edin)
- Fixed bug #20282 (COM memory leak). (Harald)
- Fixed bug #20256 (snprintf() not defined on some systems). (Jani)
- Fixed bug #19919 (crash in sapi_apache_header_handler under heavy load).
  (George)
- Fixed bug #19795 (Problems with strnatcmp() / strnatcasecmp()). (Moriyoshi)
- Fixed bug #17868 (multiple <!--include--> used to include PHP files crashes).
  (Ilia)
- Fixed bug #17448 (Print the message when OCI_SUCCESS_WITH_INFO is returned).
  (Maxim)
- Fixed bug #17098 (make Apache2 aware that PHP scripts should not be cached).
  (Ilia)
- Fixed bug #16798 (Compile failure with LOB support for Oracle version < 8.1).
  (Maxim)
- Fixed bug #14532 (fixed connection_status() to return 2 for timeouts). (Jani)
- Fixed bug #14245 ('make install' fails on AIX when using --with-apxs). (Jani)
- Fixed bug #13757 (CGI: passing query string on command line broken). (Shane)
- Fixed bug #13561 (--without-pear disabled phpize/php-config install). (Jani)
- Fixed bug #13551 (bcmath functions applying scale incorrectly). (Sara)

17 Feb 2003, Version 4.3.1
- Fixed serious security vulnerability in CGI SAPI. (Shane)

27 Dec 2002, Version 4.3.0
- If you don't specify building any other SAPI "make install" will install the
  CGI SAPI binary in {PREFIX}/bin/php. If you want to install CLI SAPI in that
  location use "make install-cli" after "make install" or add --disable-cgi
  to your configure options. In the Windows distribution CLI SAPI is included
  in the "cli" folder. (Edin)
- Removed extensions: (Jan, Jani, Sebastian)
  . ext/aspell
  . ext/ccvs
  . ext/icap
  . sapi/fastcgi
  . sapi/fhttpd
- Moved extensions to PECL (http://pear.php.net/): (James, Derick, George)
  . ext/vpopmail
  . ext/cybermut
  . ext/cybercash
- Make PHP_AUTH_* variables not available in safe mode under Apache when an
  external basic auth mechanism is used. (Philip)
- Aliased dba_popen() to dba_open() until 4.3.2 when persistent STDIO streams
  are introduced. (Andrei)
- Fixed a security bug in the bundled MySQL library. (Georg, Stefan)
- ZLIB extension is now built-in in the Windows distribution.
  External extension (php_zlib.dll) has been removed. (Edin)
- Fixed a bug in ISO-8601 week calculation
- Fixed a crash when using invalid color index with imagecolortransparent().
  (Pierre-Alain Joye)
- Fixed bug #20987 (no handling for client certificates). (Ilia)
- Fixed bug #21039 (crash when not supplying an IV to mcrypt_generic_init).
  (Derick)
- Fixed bug #20936 (openssl_pkey_get was broken). (jeroen@derks.it, Wez)
- Fixed bug #20927 (wordwrap crash). (Ilia)
- Fixed bug #20796 (when register_globals is on & arrays with same names are
  passed via get/post/cookie the data inside $_GET/$_POST/$_COOKIE can would be
  corrupted). (Ilia)
- Fixed bug #20725 (if the upload directory cannot be written to, the POST data
  after the uploaded file is lost). (Ilia)
- Fixed bug #20865 (array_key_exists() fails to find NULL key). (Ilia)
- Fixed bug #20812 (ftp_get returned NULL on success, instead of TRUE). (Ilia)
- Fixed bug #20785 (crash when using pdf_open_memory_image() to load a
  true-color image). (Ilia)
- Fixed a crash when converting between true-color images (png/jpeg) and
  gd1/gd2 image formats, png/jpeg -> gd1/gd2 -> png/jpeg conversion now
  works correctly. (Ilia, Pierre-Alain Joye)
- Fixed a memory leak in the bundled GD library inside
  gdImageTrueColorToPalette(). (Ilia)
- Fixed bug #12776 (array_walk crash). (Moriyoshi)
- Fixed bug #20934 (htmlspecialchars returns latin1 from UTF-8). (Moriyoshi)
- Fixed bugs #20270, #15702, #18600 (segfaults in ext/java). (Tony J. White)
- Made bcmath extension thread safe. (Sander)
- Fixed bug #19566 (get_declared_classes() segfaults). (Moriyoshi, Marcus, Andi)
- Fixed bug #20381 (array_merge_recursive mangles input arrays). (Moriyoshi)
- Added -n command switch to cli and cgi version which allows to skip php.ini
  parsing at startup. (Marcus, Wez)
- Fixed bug #19689 (absolute paths like /test/dir/ not working correctly).
  (Ilia)
- Added "neutral" language entry to mbstring spec. (Moriyoshi)
- Changed bundled gd library to consider php.ini option memory_limit. (Marcus)
- Modified log() to accept multiple bases. (Jason)
- Fixed bugs #16190/18746 (ext/db: flatfile support with windows). (Marcus)
- Added gd_info() which returns an array of gd support information. (Marcus)
- Implemented features/changes requested in Bug #16960 (Timm):
  . Added a new function sybase_unbuffered_query()
  . Added a new function sybase_fetch_assoc()
  . Added sybase_set_message_handler() which enables users to handle
    server messages in a callback function
  . Added an ini entry for deadlock retries - retrying deadlocks can cause
    transaction state to break (sybct.deadlock_retry_count,
    defaults to -1 "forever").
  . Fixed sybase_fetch_object() not to return objects with numeric members
  . Fixed issues with identical fieldnames
  . Made sybase_fetch_*() functions return correct datatypes
  . Made phpinfo() section more verbose
  . Made sybase_query() error messages more verbose
- Fixed bug #19935 (made OpenSSL file system operations abide by safe_mode
  & open_basedir restrictions). (Ilia)
- Fixed bug #18868 (improved the check for availability of realpath()). (Ilia)
- Fixed width/height detection of bmp images using getimagesize() function on
  big endian systems and added code to retrieve bmp bit depth. (Ilia)
- Fixed bug #20035 (line counting error when script starts with #! in
  cgi/cli/fastcgi sapis). (Ilia)
- Fixed bug #20235 (incorrect handling of symlinks on ZTS build). (Ilia)
- Added sanity checks to headers_sent() & image_type_to_mime_type(). (Ilia)
- Added an aditional parameter to the jdtojewish() function which makes
  the function return the symbolic hebrew name. (Moshe Doron, Derick)
- Fixed bug #20169 (implode() clobbers first argument). (Moriyoshi)
- Improved dba extension (Marcus)
  . Added dba_handlers() that returns an array of installed handlers and
    dba_list() that returns an associative array of open database files.
  . Added bundled cdb support wich can be activated by --with-cdb without a
    path. The bundled version supports cdb_make that allows writing cdb files.
  . Added optional skip parameter to dba_fetch() to support multiple key-value
    pairs with the same key for cdb handler.
  . Added locking for those handlers that do not have their own locking.
  . Added support for magic_quotes_runtime php.ini option.
  . Added flatfile support what finally makes ext/db deprecated.
- Added imagerotate() which is available only when bundled libgd is used.
  (Pierre-Alain Joye, Ilia)
- Fixed bug #17497 (mssql extension crashes if magic_quotes_runtime is on).
  (Sterling)
- Remove $_FILES from $_REQUEST (import_request_variables is not modified),
  this didn't work properly in the first place, and added confusion. (Sterling)
- Fixed the socket_read() function on win32 to work in normal mode (reading to
  the end of a line), as well as binary mode. (Sterling)
- Fixed bug #20110 (added sanity check to prevent include/require functions
  from trying to include directories). (Ilia)
- Fixed bug #20108 (segmentation fault on printf("%1.1s", "string")). (Ilia)
- Added dbx_escape_string() function to dbx module. (Marc)
- Added Oracle (oci8) support to dbx module. (Marc)
- Updated FDF extension to work with Adode fdftk 5.0. (Hartmut)
- Added mb_strtolower() and mb_strtoupper(). (Moriyoshi)
- Fixed an infinite loop in setlocale() when only invalid locale names
  were passed in the array. (patch by Pal Loberg, pallo@initio.no)
- Fixed bugs #19156 and #19544 (COM extension leaks memory and keeps
  components referenced). (Harald)
- Added fribidi_get_charsets() and fribidi_charset_info() functions. (Tal)
- Added Oracle TIMESTAMP type to oci8 extension. (Thies)
- Fixed fgets($fp) to read until EOL when length parameter is not set. (Wez)
- Changed registry entries under "HKLM\SOFTWARE\PHP\Per Directory Values" to
  work also with administrative directives such as safe_mode, open_basedir,
  etc. (Claudio Felber)
- Added str_word_count() function which counts words inside a string. (Ilia)
- Added PGSQL_CONNECT_FORCE_NEW option to pg_connect() (Yasuo)
- Added ICONV_IMPL and ICONV_VERSION constants to iconv extension to
  indicate which iconv implementation is used. (Moriyoshi)
- Fixed bug #4232 (Added %e & %E support to printf/sprintf). (Ilia)
- Fixed bug #17580 (Allow ini parser to parse files >16K). (Ilia)
- Fixed bug #19649 (Sanity checks for browscap.ini parser). (Ilia)
- Added experimental patch to address problem with floats on various locales.
  (Bug #17079). (Ilia)
- Fixed bug #19280 (imap_header fails with many To: addresses). (Ilia)
- Added mb_regex_set_options(). The Options parameters of various mbregex
  functions are now deprecated. (Moriyoshi)
- Fixed bug #19482 (Segfault with PCRE and locale). (Andrei)
- Made ImageTruecolorToPalette() in bundled GD2 library actually work. (Rasmus)
- Fixed ImageCopy() in bundled GD2 library to handle copying from truecolor to
  palette-based. (Wez, Rasmus)
- Added read-only GIF support for bundled GD2 library. (Rasmus)
- Made several adjustments to xslt extension (David Viner, Lehnar, Melvyn)
  . Added xslt_set_object and xslt_setopt function
  . Changed backend interaction with Sablotron library
  . Fixed leak with error_print
  . Made xslt_make_array() always set NULL on last index to signal array end.
- Changed the glue argument in implode() to be optional. If not specified,
  defaults to "". (Sterling)
- Fixed fields argument to contain correct info for xslt_set_error_handler().
  (Patch by Lenar Lohmus)
- Added --with-config-file-scan-dir compile-time switch which specifies a
  directory which will be scanned for *.ini files. (Rasmus)
- Added ob_get_clean() and ob_get_flush(). (Yasuo)
- Added ftp_ssl_connect() to ext/ftp for FTP over SSL support. (Stefan Esser)
- Made a few additions and changes to Apache 2 sapi. (Ilia)
  . Added apache_response_headers(), apache_note(), apache_getenv() and
    apache_setenv() functions.
  . Added more detailed error reporting to apache_lookup_uri() and virtual().
  . Renamed getallheaders() to apache_request_headers() and made an alias for BC.
  . Added php_apache_sapi_getenv() and php_apache_sapi_get_stat().
  . Added syntax-highlighting handling (.phps)
- Fixed strstr(), strchr() and strrchr() to be binary safe. (Andrey)
- Added array_diff_assoc() and array_intersect_assoc(). (Andrey)
- Fixed bug #17825 (ob_start() chunk size option didn't work well). (Yasuo)
- Fixed output buffer infinite loop when buffer_size became 0. (Marcus, Wez)
- Added getopt() for parsing command line options and arguments. (Jon)
- Added pg_fetch_assoc(), pg_fetch_all(), pg_ping(), pg_meta_data(), pg_convert(),
  pg_insert(), pg_select(), pg_update(), pg_delete(), pg_result_seek(),
  pg_unescape_bytea(), pg_get_notify() and pg_get_pid(). (Yasuo)
- Fixed bug #17281 (Sanity checks for encoding sessions). (Ilia)
- Fixed bug #16995 and #19392 (Prevent crash if $HTTP_SESSION_VARS != ARRAY).
  (Ilia)
- Fixed bug #19292 (open_basedir restriction problem). (Rasmus)
- Fixed bug #19366 (gdImageFill crashes when x & y are outside of
  the image's boundries). (Ilia)
- Fixed bug #13936 (__FILE__ constant didn't contain full path). (Ilia)
- PHP now has a new stream system that allows it to do some clever stuff with
  fopen() and fsockopen(). As a result:
  . URL wrappers natively supports https:// URLs if you have compiled
    OpenSSL support into PHP (shared extension does not support this).
  . Added support for fopen("ftps://...", ...) which allows to connect to FTP
    servers via SSL. (Stefan Esser)
  . fsockopen() adds support for ssl:// and tls:// connections via TCP/IP
  . copy($srcfilename, $destfilename) can now be used with URL wrappers
  . zlib wrappers/streams can be used even on systems without fopencookie()
  . Changed 'zlib:' fopen wrapper to 'compress.zlib://' and deprecate
    'zlib:' to avoid ambiguities when filenames have ':' characters. (Wez)
  . Added 'compress.bzip2://' stream and wrapper support.
  . Added user-space streams - it is now possible to define a class in PHP
    code and register it as a URL wrapper. (stream_register_wrapper)
  . Most extensions now support streams when passing files, which means
    that those extensions will now also support URL wrappers. (Wez)
  . Added URL-wrapper support to exif. (Marcus)
  . Added memory stream support. (Marcus)
  . Renamed:
      socket_set_timeout() -> stream_set_timeout()
      socket_set_blocking() -> stream_set_blocking()
      set_file_buffer() -> stream_set_write_buffer()
      socket_get_status() -> stream_get_meta_data()
    As these functions can (in theory) work on any type of stream. (Wez)
  . Raw POST data is now available as "php://input" stream. (Hartmut)
  . fopen("php://output", "wb") returns a stream that writes to the output
    buffer (like echo and print). (Wez)
  . Added stream_context_create(), stream_context_set_params() and
    stream_context_set_option and added an optional fourth parameter to
    fopen() which accepts a stream context. Contexts allow sharing of
    information between streams (a kind of "session") and setting
notification callbacks. (Wez)
  . Made the "User-Agent" header sent by http:// and https:// wrappers
configurable in php.ini or via a stream context. (Sterling)
  . Added stream_filter_prepend() and stream_filter_append() which apply
    a filter to either the top or the bottom of a stream filter stack.
    Implemented "string.rot13" filter as an example; more filters are
expected to follow in later releases and other extensions. (Wez)
  . Added stream_select() which works like socket_select but works on
    streams returned by fopen(), fsockopen() and pfsockopen() instead. (Wez)
  . Added STDIN, STDOUT and STDERR constants for CLI sapi reflecting opened
    streams to their respective standard I/O counterparts. (Edin)
  . Added php.ini option "auto_detect_line_endings" which enables PHP to
    detect Macintosh, Unix and Dos end-of-line characters in fgets() and
file(). Fixes bugs #16521 and #16708. (Wez)
  . Fixed include(), require() and GD functions to work with remote files
    under win32.
Fixed bug #18609 (ImageCreateFromJPEG can't fetch from a URL). (Wez)
- Fixed bug #18022 (fopen does not work with php://stdin anymore on Solaris).
  (Wez)
- Added php.ini option "default_socket_timeout" to set the timeout limit for
  PHP network streams. (kalowsky, ilia@prohost.org, Wez)
- Added file_get_contents() which returns the contents of a file as a string.
  This function also supports the URL wrappers. (Wez)
- Fixed bug #19595 (Missing functions for GD2 format handling). (Edin)
- Fixed bug #19633 (Wrong directories in ext/ldap/config.m4). (Derick)
- Fixed bugs #17274 and #19627 (segfault in sem_remove). (Wez)
- Added mb_convert_case() function to the mbstring extension which can convert
  strings between upper, lower and title case using Unicode mappings.
  Fixed bug #19257 (strtolower & strtoupper does not work for UTF-8 strings).
  (Wez)
- Fixed bug #18521 (htmlentities didn't warn about unsupported charsets). (Wez)
- Fixed bug #11643 (Session related, fix SID redefinition). (Ilia)
- Fixed bug #18556 (Scripting Engine, problem with locales like tr_TR). (Ilia)
- Changed y2k_compliance to default to 1 now. (Sascha)
- Added platform independent socket error constants for better error handling. (Jason)
- Update output of phpinfo() to use more CSS to reduce the file size, do
  proper HTML escaping, and make it XHTML compliant. (Colin)
- Fixed compile errors in the FriBidi extension (Bug #16414). (Tal)
- Fixed bugs #7472, #12120 and #12989 as well as other potential problems
  with strip_tags() function. (Ilia)
- Fixed bugs #17570 and #17957 (Regexps related). (Andrei, Ilia)
- Fixed bugs #18167 and #16859 (SEGV with session_decode). (Ilia)
- Fixed bugs #19573 and #13472 (Session, XHTML compliance and trans_sid).
  (Sascha)
- Fixed bug #19570 (last character was missing in get_html_translation_table).
  (Wez)
- Upgraded PCRE to version 3.9. (Wez)
- Fixed bug in OCIResult() which returned garbage when called on
  empty result-sets. (Thies)
- Added ability to use Perl-style ${n} subpattern references in the
  replacement string for preg_replace() (bug #18442). (Andrei)
- Fixed array_merge_recursive() to avoid problems with merging cyclical
  arrays (bug #16064). (Andrei)
- Made function_exists() work properly with disabled functions. (Andrei)
- Added ability to extract() variables as references via OR'able EXTR_REFS
  flag. (Andrei)
- Fixed a build failure with the OCI8 extension on Tru64.
  (Patch by Michael Mauch, micahel.mauch@gmx.de)
- Added --disable-all configure option. (Jani)
- Backported debug_backtrace() from ZendEngine2. (Thies)
- Added html-free phpinfo() output for CLI. (Jan)
- Fixed socket_recvfrom() to be binary safe. (Jason)
- Changed mail() to use escape_shell_cmd() to allow multiple extra parameters
  to the invocation of the mailer as used in the fifth parameter. (Derick)
- Changed cURL extension to require cURL version 7.9.8 (Derick)
- Added zend_execute_internal which is called like zend_execute but for
  internal functions. (Thies)
- Changed pg_connection_status(), pg_connection_reset(), pg_connection_busy(),
  pg_result_status() and pg_result_error() to silently return FALSE when
  resource is not passed to them. (Yasuo)
- Fixed some mysql compile failures on 64 bit-OS. (Georg)
- Added warnings for deprecated mysql functions:
  . mysql_create_db()
  . mysql_drop_db()
  . mysql_escape_string()
- Added XsltObject->result_dump_mem($result) for returning xslt-result directly
  into a string and XsltObject->result_dump_file($result,$file[,$compression])
  for dumping into a file. (morus.walter@web.de, chregu)
- Made mime_magic and ZIP extensions available on Windows. (Edin)
- Added xslt_backend_version() and xslt_backend_name() for getting
  information about the processor backend. (chregu)
- Added ImageColorMatch() and ImageLayerEffect() functions which are only
  available when using the bundled GD library. (ttoohey)
- Made major improvents to the pcntl extension. (Jason)
  . Greatly improved performance (signal callback mechanism uses ticks)
  . Implemented object signal callback ability by using array($obj, $method)
  . Added a restart parameter to pcntl_signal, which allows you to disable
    the default of system call restarting
- Changed DomNode->next_sibling() and DomNode->previous_sibling() to return
  NULL instead of false (W3C specs). (chregu)
- Changed DomNode->insert_before() and DomNode->append_child() to conform to
  W3C specs (moving not copying nodes, accepting NULL as 2nd param). (chregu)
- Added DomNode->set_namespace(uri[,prefix]) (chregu)
- Fixed shuffle() to properly generate all possibilities. (Patch provided by
  Adam <adam@trachtenberg.com>)
- Fixed DomNode->insert_before() to behave according to W3C spec
  ie. new_child is moved, not copied. (chregu)
- Added some namespace support with DomNode->add_namespace(uri, prefix)
  and DomDocument->create_element_ns(uri, nodename) (chregu)
- Added optional parameter to DomElement->node_name() for retrieving fully
  qualified name (ie. namespace prefix). (chregu)
- Changed DomNode->child_nodes() to return empty array instead of false if no
  child nodes are found. (chregu)
- Fixed a bug with handling the Expect header. (Patch by ilia@prohost.org)
- Fixed a bug in ODBC where closing the module caused a crash in the Windows
  executable. (kalowsky)
- Fixed memory leaks in pack() and unpack(). (Patch by ilia@prohost.org)
- Added URLs to error messages which direct to a page describing the error or
  function in question. (Derick, Wez, Marcus)
- Added odbc_data_source() functionality to identify DB ServerName, and a
  description of it gathered from the DSN. (kalowsky)
- Fixed copy() to return TRUE with 0 byte files. (Patch by ilia@prohost.org)
- Added ob_list_handlers() which returns an array of all active output
  handlers. (Marcus)
- Added mbstring encoding/decoding "HTML-ENTITIES". (Marcus)
- Added parameter 'L' for mb_http_input() to retrieve input encoding as a
  comma separated string. (Marcus)
- Added the ability for declare() compiler modifications to occur globally
  by using an empty statement. (Jason, Zend Engine)
  i.e.
        //Globally enables the ticks modifier for the whole program
        declare (ticks=1);

        //Enables the ticks modifier for just the lexical block containing
        //"statement".
        declare (ticks=1) {
           statement;
        }
- Brought strtotime() "next" keyword handling in line with documentation and
  its glibc cousin. (Rasmus)
- Fixed str_rot13() to not mangle source string. (Rasmus)
- Fixed imap_get_quota() to work with multiple returned resources as per
  the RFC 2087 and bug #14673. (kalowsky, Sander Steffann)
- Added MarkerNote decoding to exif_read_data() for several Cameras. (Marcus)
- Disabled zlib.output_compression for "image/" content-type
  headers which can be changed during script execution. (Stefan)
- Added new asynchronous FTP functions. (Stefan)
- Added optional 5th parameter to FTP functions to support resuming. (Stefan)
- Added optional 2nd parameter to print_r() to make it return the variable
  representation instead of echoing it. (Derick)
- Added mysql_ping(), mysql_real_escape_string(), mysql_character_set_name(),
  mysql_thread_id(), mysql_stat() and mysql_list_processes(). (Zak, Georg)
- Added safe_mode & open_basedir checks for pg_lo_export(). (Yasuo)
- Added open_basedir check for pg_lo_import(). (Yasuo)
- Fixed infinite recursion crash bug in ticks. (Jason)
- Added php.ini option "mysql.connect_timeout" to set the timeout limit for
  mysql_connect() and mysql_pconnect(). (Georg)
- Added optional parameter "flags" to mysql_connect() and mysql_pconnect()
  which can be used to set usage of idle timeout and different protocols,
  SSL and compressed. (Georg)
- Added automatic rollback to ext/mysql for non committed transactions. (Georg)
- Fixed cases where preg_split() incorrectly terminated final element if it
  contained null bytes. (Andrei)
- Added persistent connections/pipelining to thttpd. (Sascha)
- Fixed two potential blocking issues in thttpd. (Sascha)
- Fixed broken header file detection on Solaris. (Sascha)
- Improved nss/socket-related symbol/library detection. (Jani, Sascha)
- Made iconv() work well with both libiconv and libgconv. (Moriyoshi, Yasuo)
- Fixed socket_set_timeout() on win32. (Jason, Edin, Jani)
- Added domxml_node_namespace_uri(). (Rui Lopes)
- Fixed win32 memory leak in /ext/sockets that would occur on any error
  condition. Also fixed host resolution error messages on win32. (Jason)
- Added optional 3rd parameter 'recursive' to ftp_rawlist() which will
  do 'LIST -R' instead of 'LIST'. (Jani)
- Changed getimagesize() to always set unknown fields to 0 and added support
  for iff imagetype. (Marcus)
- Added runtime Apache2 thread check to ensure we don't run a non-threaded
  PHP inside a threaded Apache2 MPM. (Rasmus)
- Made getimagesize() and exif_read_data() to return also the mime-type and
  exif_thumbnail() to return also the image-type. (Marcus)
- Added image_type_to_mime_type() which converts image-types to mime-types.
  (Marcus)
- Made GD functions to only exist if they are available in libgd. Now the
  availability can be tested with function_exists(). (Derick)
- Added an optional parameter to the header() function which overrides the HTTP
  response code. (Derick)
- Changed the order of which modules are unloaded to the reverse order of
  which they were loaded. (Derick, Zend Engine)
- Added preliminary SAX-Input support. It's now possible to build a DomDocument
  with SAX-Events. (chregu)
- Bundled GD library 2.0.1 with php (ext/gd/libgd) (Rasmus, Jani, Markus, Edin)
- Fixed bzopen() crash in thread-safe mode. (Andrei)
- Added better error-messages (3rd parameter) and validating of DTDs (2nd
  parameter) to domxml_open_mem() and domxml_open_file(). (Christian)
- Added domxml_doc_validate() for validating existing DomDocuments with a DTD.
  (Christian)
- Added ability to capture string offsets in preg_match_*() results.
  (David Brown, Andrei)
- Fixed set_error_handler() to accept methods as callbacks and also report
  invalid callbacks. (Andrei)
- Fixed a memory corruption bug in overload extension. (Andrei)
- Fixed error handling in fsockopen() on win32. (Jason)
- Added win32 support for the timeout parameter of fsockopen(). (Jason)
- Fixed shuffle() to provide equal distribution of values. (Andrei)
- Added --with-mysql-sock configure option which can be used to override
  the unix socket location. (e.g. NFS compiles, etc.) (James Cox)
- Fixed is_a() to properly work on extension registered classes. (Andrei)
- Added new constants: PHP_PREFIX and PHP_SHLIB_SUFFIX. (Stig)
- Added pctnl_alarm() function. (Edin)
- If zlib.output_compression is enabled and a page is compressed
  a "Vary: Accept-Encoding" header is now added. (Stefan)
- Renamed getallheaders() to apache_request_headers() and kept getallheaders()
  as an alias to it. Also added apache_response_headers() which returns the
  current response headers from Apache. (Rasmus)
- Added missing AddRef() calls in the COM extension. This should fix weird
  behaviour (in particular with ADODB). (Harald)
- Fixed segfault in version_compare(). (Stig)
- Added compressed Flash MX files support to getimagesize(). (Derick)
- Added ability to capture string offsets in preg_split() results.
  (David Brown, Andrei)
- Fixed a crash bug in token_get_all(). (Andrei)
- Implemented glob() for Unix/Win32. (Hartmut, Edin, Markus)
- Added domxml_doc_set_root() to change the root node. (Lukas Schroeder)
- Fixed a crash bug in stripslashes() when working in sybase mode. (Rasmus)
- Added experimental support for Simplified Chinese, Traditional Chinese and
  Korean encodings into mbstring. (Rui)
- Misc. Win32 mail() enhancements: support 'From:' header (msisolak@yahoo.com),
  support Bcc header, case-insensitive headers, enhanced error reporting,
  automatic proper line ending conversion, fixed crash with Cc, fixed buffer
  overflows with $header. (Markus)
- Improved IMAP extension performance. (adam.kauffman@mindspring.com,
  rjs3@andrew.cmu.edu, Jon)
- Added optional 5th parameter to domxml_xslt_process(). When set, profiling
  information is saved to the specified file. (chregu)
- Added MD5 support for crypt() on Windows. (Edin)
- Fixed resource bug in LDAP extension. (Stig Venaas)
- Fixed crash in output buffering when buffer is overwritten in a callback.
  (Yasuo)
- Added output_add_rewrite_var() and output_remove_rewrite_var() to inject
  and remove variables from the URL-Rewriter. (Thies)
- The Windows build can now be configured more comfortably, for example
  when dealing with built-in extensions. (Sebastian)
- Added large OID value (2^31 to 2^32) support for pg_lo_import(),
  pg_lo_unlink(), pg_lo_open() and pg_lo_export(). (Yasuo)
- Fixed mixing OCIPlogon() and OCINLogon() to not leak Oracle-Sessions. (Thies)
- Added php.ini options for EXIF extension to encode and decode Unicode/JIS
  user comments. (Marcus)
- Changed the "-c" CLI/CGI option to allow both 'filename' and
  'path to php.ini'. (Yasuo)
- Added version information to the .dll and .exe files created under Windows.
  (jtate)
- Added __FUNCTION__ and __CLASS__ constants. (Jani, Zend Engine)
- Added optional 2nd parameter for pg_result_status() to specify return type.
  (Yasuo)
- Added "log_errors_max_len" php.ini option which controls maximum length for
  error messages. (Marcus)
- Added "ignore_repeated_errors" and "ignore_repeated_source" php.ini options
  which can be used to disable logging of repeated error messages. (Marcus)
- Made pg_last_notice() work correctly. (Yasuo)
- Added "pgsql.ignore_notice" and "pgsql.log_notice" php.ini options. (Yasuo)
- Added "zlib.output_compression_level" php.ini option. (Stig)
- Added support for --with-apxs build on Mac OS X / Darwin. (markonen)
- Added support for dynamically loaded extensions on OS X / Darwin.
  NOTE: This requires Apache 1.3.25 or later. (kalowsky, markonen)
- Fixed CR/LF processing in quoted_printable_decode() on Win32. (kir)
- Made crack extension available on Win32. Cracklib libraries for Win32 are
  available at http://www.jtatesoftware.com/cracklib/. (jtate)
- Added mysql_info() function. (Jan)
- Added mysql_list_processes() and mysql_stat() functions. (Georg)
- Fixed memory allocation problem on systems that have iconv() support in libc.
  (Yasuo)
- Made var_dump() handle recursive structures better. (Yasuo, Derick)
- Added exif_imagetype() function. (Marcus)
- New improved build system. Among other improvements, replaces the slow
  recursive make with one global Makefile and eases the integration of proper
  dependencies. Automake is only needed for its aclocal tool. The build
  process is now more portable and less resource-consuming. (Sascha)

06 Sep 2002, Version 4.2.3
- Disabled the fifth parameter in mail() when safe-mode is turned on. (Derick)
- Enable UTF8 modifier support for PCRE on win32. (Wez, Edin)
- Enabled strcoll() on win32. (Markus)
- Fixed possible ASCII control char injection in mail(). (Stefan Esser)
- Fixed a potential crash bug in import_request_variables() (Zeev)
- Fixed several problems with directory functions on Windows. (Steph)
- Fixed xbithack bug in Apache module. (Rasmus)
- Fixed a bug that prevented touch() from working on various platforms. (Steph)
- Fixed ob_gzhandler()'s handling of requests that do have the Accept-Encoding
  header, but do not allow compression. (Zeev)
- Fixed several bugs in the multithreaded version that could cause random parse
  errors, especially on machines with multiple CPUs. (Zeev, Zend Engine)
- Fixed a build problem in bcmath. (Alan)
- Fixed several bzip2 issues. (Andrei, kalowsky)
- Fixed several COM issues. (Harald)
- Various exif fixes. (Marcus)
- Fixed domxml_xslt_process() and domxml_get_element_by_id() and several
  other issues in DOMXML. (Christian)
- Fixed DOMXML crash on removing previously created attributes. (Christian)
- Fixed crash when converting $GLOBALS to an object. (Zeev, Zend Engine)
- Fixed ImageCreateFromGD2Part() (Jani)
- Fixed a build issue in the IMAP extension under IRIX. (kalowsky)
- Fixed a bug in imap_last_error() (Jani)
- Various mbstring fixes. (Yasuo, Rui)
- Fixed a build problem in the mcal extension. (Jani)
- Made MySQL rollback open transactions when the request ends. (Georg)
- Fixed a crash in the shutdown order of the ODBC module. (kalowsky)
- Fixed PCRE build problems. (troels@arvin.dk)
- Fixed a crash in pg_lo_write() (Yasuo)
- Fixed posix_isatty() and posix_ttyname(). (Markus)
- Fixed accidental pg_lo_import() API change. (Yasuo)
- Fixed ereg_replace() crash when the backreference number was greater than the
  number of captured subpatterns. (oliver@billix.franken.de)
- Fixed array_rand() on thread-safe platforms such as Windows. (Edin)
- Report the right exit code after a call to exit(). (Edin)

22 Jul 2002, Version 4.2.2
- Fixed serious security vulnerability. (Stefan Esser)

13 May 2002, Version 4.2.1
- Added safe-mode checks to show_source(), parse_ini_file() and rmdir(). Also
  fixed security problems with safe_mode_include_dir directive. (Rasmus)
- Changed HTTP upload code to accept 0 byte file uploads. (Zeev)
- Major update of domxml. New functions, better DOM compliance and bug fixes:
  * Changed the old $node->append_child() to $node->append_sibling() since
    the new append_child() behaves correctly (= W3C standard).
  * Added domxml functions:
    . domxml_elem_get_elements_by_tagname()
    . domxml_doc_get_elements_by_tagname()
    . domxml_doc_get_element_by_id()
    . domxml_elem_remove_attribute()
    . domxml_elem_get_attribute_node()
  * Fixed a segfault in domxml_unlink().
  * Added formatting option to domxml_dump_mem().
  (Uwe, jtate, Chregu)
- Fixed a bug in socket_select() that could cause unexpected behavior when
  using a statement like $w = $e = array($sock); This change unfortunately
  prevents the use of constant values (e.g. NULL) for the socket array
  paramaters. Instead, use a temporary variable or an expression with the
  leftmost member being a temporary variable. ex.:
  socket_select($w, $r, $e = NULL, 10); (Jason)
- Fixed crashes in the session serializer. (Stas)
- Fixed malformed atime/mtime with touch(). (Yasuo)
- Fixed a couple of bugs in array_sum() and array_merge(). (Andrei)
- Fixed SJIS directory name handling under Windows. (Rui)
- Fixed empty mb_output_handler() output when Content-Type is specified.
  (Yasuo)
- Fixed the false logic in ext/session which made SID constant not to be
  defined when cookies are disabled. (Sascha)
- Fixed possible crash bug in HTTP uploads. (Patch: Lucas Schroeder)
- Fixed possible NULL-pointer dereferencing in the COM extension which
  caused 'Error in php_OLECHAR_to_char()' warnings on various places.
  Also modified the API to consistently return NULL in case of an error.
  (Alan, Harald)
- Fixed a bug in the COM extension that caused outproc servers to 'hang'
  because of a missing Release() call. (Alan, Harald)

22 Apr 2002, Version 4.2.0
- ATTENTION!! register_globals defaults to 'off' now !!!
- Note: Apache2 support is EXPERIMENTAL.
- PostgreSQL functions are renamed, but all old function names are available.
  Old function names will be available long enough. User can safely use old
  function names. (Yasuo)
- Moved ext/mailparse to PECL. See http://thebrainroom.com/opensource/php/
  for more information and to download the extension. (Wez/Jim)
- Fixed pg_last_notice() crash. (Yasuo)
- Modified the mysql extension to disable 'LOAD LOCAL' when safe mode is
  enabled. (Jason)
- Added CLI (command line interface) sapi which is more suitable for writing
  shell scripts. Some of the differences to CGI sapi are: no HTTP headers,
  plain text error messages, does not change working directory, have a new -r
  option which executes a piece of PHP code directly from the commmand line, etc.
  (Edin)
- Fixed HTTP file upload support to handle big files better. (Jani)
- Major modifications to the Sockets Extension and its API (Jason):
  . Fixed numerous bugs.
  . Added automatic host lookup capability to all functions that take addr's.
    example: socket_connect($sock, 'www.yahoo.com', 80);
  . Corrected and standardized host lookup errors
  . Modified socket_recv() behavior. [$r=socket_recv($sock, $buf, $len, $flags)]
  . Added socket_set_block() which changes a socket into blocking IO mode
  . Modified socket_last_error() to not clear the last error
  . Added socket_clear_error() which clears the last error on a socket
  . Removed all code pertaining to fd_sets (socket_fd_*)
  . Modified/Improved socket_select() to accept array of resources instead of
    fd_sets. example:
    <?php
          $wfds=$rfds=array($sock1, $sock2, $sock3, $sock7);
          $r=socket_select($rfds, $wfds, NULL, 1);
          print "Ready to read:\n"; var_dump($rfds);
    ?>
- Fixed segfault in ibase_close() if user does not free the resultset.
  Bugs #15419, #15992. (daniela)
- Added optional 3rd parameter "int encoding_mode" to gzencode() and fixed
  parameters to conform documentation. (Stefan)
- Changed read_exif_data() to be an alias of exif_read_data(). (Marcus)
- Added exif_tagname() function which returns the names of tags and
  exif_thumbnail() function to extract embedded thumbnails. (Marcus)
- Fixed iconv support with FreeBSD. (kalowsky)
- Cleaned up the posix extension: (Markus)
  . Removed unwanted warning messages
  . Added posix_errno() and posix_strerror() for fetching error messages
  . Changed the way posix_getgrnam() and posix_getgrgid() return their values
    (breaks BC but makes more sense)
  . Does not include functions in symbol table which aren't supported on host
    system.
- Added TIFF support for getimagesize() and read_exif_data(). (Marcus)
- Changed the Velocis extension namespace to Birdstep to reflect new product
  name. Added aliases for BC. (James)
- Added safe_mode checks for opendir(). (jflemer)
- Changed the 2nd parameter in pgsql_fetch_*() functions to support NULL if
  all 3 parameters are supplied, but you do not want to provide a row number.
  (Derick)
- Improved iconv() when using libc's iconv. (Yasuo)
- Added PHP_SAPI constant which contains the name of running SAPI. (Edin)
- Added ob_get_status() which returns an array of buffers with their status.
  (Yasuo)
- Fixed a crash bug in ob_end_*() functions. ob_end_*() will not delete
  buffers that may not be deleted. (Yasuo)
- Added 3rd parameter "bool erase" to ob_start(). If FALSE, the buffer may not
  be deleted until script finishes. (Yasuo)
- Changed ob_*() functions to return TRUE for success, FALSE for failure.
  (Yasuo)
- Added sybase_ct support to dbx module. (Marc)
- Fixed error message handling with PostgreSQL 7.2. (Rui)
- Added object aggregation capability, see aggregation_*() functions. (Andrei)
- Added debug_zval_dump() which works similarly to var_dump, but displays
  extra internal information such as refcounts and true type names. (Jason)
- Added Andrei's tokenizer extension. (Stig)
- Fixed a bug in the COM extension which caused php to crash in
  php_COM_get_ids_of_names(). (Paul, Harald)
- Removed ext/satellite. It is now part of PEAR. (eriksson)
- Changed php.ini directive 'safe_mode_include_dir' to accept a (semi)colon
  separated path (like 'include_path') rather than a single directory.
  (jflemer)
- Added is_a() function that can be used to test whether object is of a certain
  class or is derived from it. (Andrei, Zend Engine)
- Added optional parameter to highlight_string() and highlight_file() which
  makes these functions to return a highlighted string instead of dumping
  it to standard output. (Derick)
- Added EXTR_IF_EXISTS and EXTR_PREFIX_IF_EXISTS flags to extract(). (Rasmus)
- Fixed a segfault in pg_pconnect(). If PostgreSQL server is restarted, broken
  connection is detected and reconnected. (Yasuo)
- Fixed --enable-safe-mode configure option. (Yasuo)
- Added function domxml_dump_node($doc,$node). Dumps a node plus all children
  into a string. (chregu)
- Added function domxml_node_get_content(). (chregu)
- Added function domxml_dump_file($filename,[$compression]). Dumps XML to
  a file and uses compression, if specified. (chregu)
- Added exslt integration to domxml extension (http://exslt.org for details).
  Configure with --with-dom-exslt[=DIR] (and --with-dom-xslt).
  (chregu,jaroslaw)
- Fixed session_unset() to not touch any globals if register_globals is off.
  (Thies)
- Added 3 new optional parameters to OCIFetchStatement(). They control
  the number of rows to skip at the beginning of the cursor, the
  maximun numer of rows that should be fetched and the format of the
  returned array. (Thies)
- Updated the XSLT extension to support Sablotron 0.8. (Petr Cimprich)
- Fixed a bug in preg_match() and preg_match_all() when matching strings
  contain null bytes. (Andrei)
- Added xpath_register_ns() function. This makes it possible to issue XPath
  queries with namespaces like for example: "//namespace:sampletag".
  (Chris Jarecki)
- Added multi-byte enabled regular expression functions. (Rui)
- Added optional second parameter to count() which can be used to specify
  either normal or recursive counting. (patch by Vlad Bosinceanu <glipy@fx.ro>)
- Added mb_get_info() to get internal settings of mbstring. (Rui)
- Added async query functions to PostgreSQL module. (Yasuo)
- Added pg_copy_to()/pg_copy_from() for PostgreSQL module. (Youichi, Yasuo)
- Added IPv6 support for FTP extension. (Stig Venaas)
- Improved the speed of wordwrap() significantly. (Jim)
- Fixed pow()'s incorrect behaviour when dealing with powers of 0. (Jim)
- Added is_finite(), is_infinite() and is_nan(). (Jim)
- Fixed segfault in wordwrap() when wrapping to zero width and using
  multi-character break or trying to force cut (bug #12768). (Jim)
- Fixed several bugs in dbase extension (dbase_pack() truncate file to right
  size, fix 6852 #1 and 6852 #2). (Vlad)
- Fixed bug in krsort() where an extra character was being compared. (Andi)
- Fixed bug that made pspell include pspell.h from a wrong location. (Vlad)
- Added function overload in mbstring to add multibyte support for
  string and mail functions. (Rui)
- Added flags parameter to preg_grep(). The only flag currently is
  PREG_GREP_INVERT that will make the function return entries that
  did not match. (Andrei)
- Fixed several crash bugs in the xslt extension. (Markus, Derick)
- Fixed problem with dbase not returning very large (larger than long)
  integers properly. (Vlad)
- Added concepts to IRCG: bailout-on-trivial issue, write output to
  files, fetch a resource upon connection end. (Sascha)
- Fixed POST-related bugs in thttpd, added QUERY_STRING, HTTP_HOST,
  HTTP_ACCEPT_LANGUAGE to the script environment, improved patch
  to send correct MIME types, and added support for /nocache/. (Sascha)
- Fixed several bugs and memleaks in the domxml extension. (Markus)
- Added var_export() which outputs a representation of a variable as reusable
  PHP code. (Derick)
- Added -w option to the CGI-version to strip all comments and whitespace
  from the script. (Thies)
- Added support for SO_RCVTIMEO and SO_SNDTIMEO to ext/sockets. (Jason)
- Added ob_get_level() which returns the nesting level of the output buffering
  mechanism. (Yasuo, Derick)
- Added ob_flush() and ob_clean() functions which flush and clean an output
  buffer without destroying the buffer. (Derick)
- Added new optional parameter to mysql_connect() which forces a new database
  link to be created. (Markus, Derick)
- Added ldap_sort() function. (Stig Venaas)
- Added md5_file() function which calculates the MD5 sum of a file.
  Patch by Alessandro Astarita <aleast@capri.it> (Derick)
- Added support for parsing recordsets contained in WDDX packets. (Andrei)
- Renamed key_exists() to array_key_exists(). (Derick)
- Fixed ImageColorsForIndex() and ImageColorAt() to work for TrueColor
  images. (Rasmus)
- Added support for bind_textdomain_codeset(). (rudib@email.si)
- Added generic Win 32 API extension. (jmoore)
- Removed warning message about NONEXISTENT character set from mysql_connect()
  when the server's default character set != latin1. (Mysql Team)
- Added Direct I/O extension for lowlevel access to the POSIX layer. (Sterling)
- Added SAPI module for the WebJames server on RISC OS. (Alex Waugh)
- Fixed ldap_add() and ldap_modify() functions to throw a warning with illegal
  value arrays. Previously segfaulted or added wrong value. (Stig Venaas)
- Added udm_check_charset() function into mnoGoSearch extension. (gluke)
- Fixed mnoGoSearch extension to support mnogosearch-3.2.x. (gluke)
- Made fbsql_num_rows() to return the correct value on all select statements.
  (Frank)
- Added array_chunk() function which splits an array into chunks of specified
  size. (Andrei)
- Fixed $HTTP_RAW_POST_DATA to be populated on a missing content-type when
  always_populate_raw_post_data is on. (Rasmus)
- Added session_cache_expire() function. (patch by anuradha@gnu.org) (Andrei)
- Added array_fill() function. (Rasmus)
- Made Authorization header to be hidden from phpinfo() output in safe_mode.
  (Rasmus)
- Re-instated safe-mode realm mangling. (Rasmus)
- Fixed a bug in preg_replace() that would change the type of the replacement
  array entries to string. (Andrei)
- Added user-space object overloading extension. (Andrei)
- Added ldap_start_tls() function. (Stig Venaas, patch by kuenne@rentec.com)
- Changed rand() and mt_rand() to be seed automatically if srand() or
  mt_srand() has not been called. (Sterling)
- Changed the seed options to srand() and mt_srand() to be optional. If the
  seed is not specified the most random seed possible is generated. (Sterling)
- Added array_change_key_case() function which returns an array with all
  string keys lowercased or uppercased. (Edin)
- Added parameter to ircg_pconnect to suppress treating non-fatal errors
  as fatal, and added conversion of Windows quotes to &quot;. (Sascha)
- Added pcntl_exec() function which behaves similar to the system execve.
  (Jason)
- Fixed segfault and check for truecolor image in ImageColorAt(). (Rasmus)
- Fixed nl2br() to handle all styles of line-endings in one string.
  (Boian, Derick)
- Added mcrypt_generic_deinit() to replace mcrypt_generic_end(). (Derick)
- Added apache_setenv() function for injecting variables into Apache's
  subprocess_env table. (Rasmus)
- Added support for 'int', 'bool', 'float' and 'null' in settype(). (Jeroen)
- Added IPv6 support to gethostbyaddr().
  (Patch by Matthias Wimmer <matthias@charente.de> and venaas)
- Fixed LONG_VARCHAR type crashing in ODBC extension. Patch by Walter Franzini.
  (kalowsky)
- Changed in_array() and search_array() to allow the needle to be an array
  in itself. (Andrei)
- Added ini_get_all() function which returns all registered ini entries
  or entries for the specified extension. (Jani)
- Added mailparse_uudecode_all() which extracts all uuencoded attachments.
  (Wez)
- Added support for chinese encodings in htmlentities() and htmlspecialchars().
  (Patch by Alan Knowles <alan_k@hklc.com> and Wez)
- Improved support for autoconf-2.50+/libtool 1.4b+. (Jan Kneschke, Sascha)

27 Feb 2002, Version 4.1.2
- Fixed start up failure when mm save handler is used and there are multiple
  SAPIs working at the same time. (Yasuo)
- Fixed the Roxen SAPI. (Yasuo)
- Fixed a buffer overflow in the RFC-1867 file upload code. (Stefan)
- Fixed a crash bug in the session module. (Yasuo)
- Fixed a crash bug in the pspell module. (Yasuo)
- Changed the default output encoding of mbstring 'pass' to fix
  initialization problem. (Rui)

26 Dec 2001, Version 4.1.1
- Fixed incompatibility with Windows .NET / IIS 6 - may improve stability
  under other versions of IIS. (Zeev)
- Fixed bug that caused crashes or error notices on shutdown on threaded
  platforms. (Zeev)
- Fixed several crash bugs in the xslt extension. (Markus, Derick)
- Fixed problem with dbase not returning very large (larger than long)
  integers properly. (Vlad)
- Fixed several bugs and memleaks in the domxml extension. (Markus)
- Fixed bug in gmmktime() which was one hour off during standard time -
  bug #9878. Patch by bfoddy@mediaone.net. (jmoore)
- Fixed bug in gmdate() timezone handling on Windows - bug #13885. (jmoore)
- Fixed several crash bugs in the mcrypt extension. (Derick)
- Made the mcrypt extension compile with the libmcrypt 2.2 series again.
  (Sterling)
- Fixed a bug where the is_file() family of functions would in-correctly give
  an error when they were given filenames that didn't exist. (Sterling)
- Fixed a bug in the strtotime() function where it was incorrectly recognizing
  GMT +0100 and GMT -0100. (Derick)

10 Dec 2001, Version 4.1.0
- Fixed return values for strtok (Bug #13866) (jmoore)
- Worked around a bug in the MySQL client library that could cause PHP to hang
  when using unbuffered queries. (Zeev)
- Fixed a bug which caused set_time_limit() to affect all subsequent requests
  to running Apache child process. (Zeev)
- Removed the sablotron extension in favor of the new XSLT extension.
  (Sterling)
- Fixed a bug in WDDX deserialization that would sometimes corrupt the root
  element if it was a scalar one. (Andrei)
- Make ImageColorAt() and ImageColorsForIndex() work with TrueColor images.
  (Rasmus)
- Fixed a bug in preg_match_all() that would return results under improper
  indices in certain cases. (Andrei)
- Fixed a crash in str_replace() that would happen if search parameter was an
  array and one of the replacements resulted in subject string being empty.
  (Andrei)
- Fixed MySQL extension to work with MySQL 4.0. (Jani)
- Fixed a crash bug within Cobalt systems. Patch by tomc@tripac.com. (Jani)
- Bundled Dan Libby's xmlrpc-epi extension.
- Introduced extension version numbers. (Stig)
- Added version_compare() function. (Stig)
- Fixed pg_last_notice() (could cause random crashes in PostgreSQL
  applications, even if they didn't use pg_last_notice()). (Zeev)
- Fixed DOM-XML's error reporting, so E_WARNING errors are given instead of
  E_ERROR error's, this allows you to trap errors thrown by DOMXML functions.
  (Sterling)
- Fixed a bug in the mcrypt extension, where list destructors were not
  properly being allocated. (Sterling)
- Better Interbase blob, null and error handling. (Patch by Jeremy Bettis)
- Fixed a crash bug in array_map() if the input arrays had string or
  non-sequential keys. Also modified it so that if a single array is passed,
  its keys are preserved in the resulting array. (Andrei)
- Fixed a crash in dbase_replace_record. (Patch by robin.marlow@dps-int.com)
- Fixed a crash in msql_result(). (Zeev)
- Added support for single dimensional SafeArrays and Enumerations.
  Added com_isenum() function to check if a component implements an
  enumeration. (Alan, Harald)
- Fixed a bug in dbase_get_record() and dbase_get_record_with_names().
  boolean fields are now returned correctly.
  Patch by Lawrence E. Widman <widman@cardiothink.com> (Jani)
- Added --version option to php-config. (Stig)
- Improved support for thttpd-2.21b by incorporating patches for all known
  bugs. (Sascha)
- Added ircg_get_username, a roomkey argument to ircg_join, error fetching
  infrastructure, a tokenizer to speed up message processing, and fixed
  a lot of bugs in the IRCG extension. (Sascha)
- Improved speed of the serializer/deserializer. (Thies, Sascha)
- Floating point numbers are better detected when converting from strings.
  (Zeev, Zend Engine)
- Replaced php.ini-optimized with php.ini-recommended. As the name implies,
  it's warmly recommended to use this file as the basis for your PHP
  configuration, rather than php.ini-dist. (Zeev)
- Restore xpath_eval() and php_xpathptr_eval() for 4.0.7. There
  are still some known leaks. (Joey)
- Added import_request_variables(), to allow users to safely import form
  variables to the global scope (Zeev)
- Introduced a new $_REQUEST array, which includes any GET, POST or COOKIE
  variables. Like the other new variables, this variable is also available
  regardless of the context. (Andi & Zeev)
- Introduced $_GET, $_POST, $_COOKIE, $_SERVER and $_ENV variables, which
  deprecate the old $HTTP_*_VARS arrays. In addition to be much shorter to
  type - these variables are also available regardless of the scope, and
  there's no need to import them using the 'global' statement. (Andi & Zeev)
- Added vprintf() and vsprintf() functions that allow passing all arguments
  after format as an array. (Andrei)
- Added support for GD2 image type for ImageCreateFromString(). (Jani)
- Added ImageCreateFromGD(), ImageCreateFromGD2(), ImageCreateFromGD2part(),
  ImageGD() and ImageGD2() functions. (Jani)
- addcslashes now warns when charlist is invalid. The returned string
  remained the same (Jeroen)
- Added optional extra argument to gmp_init(). The extra argument
  indicates which number base gmp should use when converting a
  string to the gmp-number. (Troels)
- Added the Cyrus-IMAP extension, which allows a direct interface to Cyrus'
  more advanced capabilities. (Sterling)
- Enhanced read_exif_data() to support multiple comment tags. (Rasmus)
- Fixed a crash bug in array_map() when NULL callback was passed in. (Andrei)
- Change from E_ERROR to E_WARNING in the exif extension (Rasmus)
- New pow() implementation, which returns an integer when possible,
  and warnings on wrong input (jeroen)
- Added optional second parameter to trim, chop and ltrim. You can
  now specify which characters to trim (jeroen)
- Hugely improved the performance of the thread-safe version of PHP, especially
  under Windows (Andi & Zeev)
- Improved request-shutdown performance significantly (Andi & Zeev, Zend
  Engine)
- Added a few new math functions. (Jesus)
- Bump bundled expat to 1.95.2 (Thies)
- Improved the stability of OCIPlogon() after a database restart. (Thies)
- Fixed __FILE__ in the CGI & Java servlet modes when used in the main script.
  It only worked correctly in included files before this fix (Andi)
- Improved the Zend hash table implementation to be much faster (Andi, Zend
  Engine)
- Updated PHP's file open function (used by include()) to check in the calling
  script's directory in case the file can't be found in the include_path (Andi)
- Fixed a corruption bug that could cause constants to become corrupted, and
  possibly prevent resources from properly being cleaned up at the end of
  a request (Zeev)
- Added optional use of Boyer-Moore algorithm to str_replace() (Sascha)
- Fixed and improved shared-memory session storage module (Sascha)
- Add config option (always_populate_raw_post_data) which when enabled
  will always populate $HTTP_RAW_POST_DATA regardless of the post mime
  type (Rasmus)
- Added support for socket and popen file types to ftp_fput (Jason)
- Fixed various memory leaks in the LDAP extension (Stig Venaas)
- Improved interactive mode - it is now available in all builds of PHP, without
  any significant slowdown (Zeev, Zend Engine)
- Fixed crash in iptcparse() if the supplied data was bogus. (Thies)
- Fixed return value for a failed snmpset() - now returns false (Rasmus)
- Added hostname:port support to snmp functions (nbougues@axialys.net, Rasmus)
- Added fdf_set_encoding() function (Masaki YATSU, Rasmus)
- Reversed the destruction-order of resources. This fixes the reported OCI8
  "failed to rollback outstanding transactions!" message (Thies, Zend Engine)
- Added option for returning XMLRPC fault packets. (Matt Allen, Sascha
  Schumann)
- Improved range() function to support range('a','z') and range(9,0) types of
  ranges. (Rasmus)
- Added getmygid() and safe_mode_gid ini directive to allow safe mode to do
  a gid check instead of a uid check. (James E. Flemer, Rasmus)
- Made assert() accept the array(&$obj, 'methodname') syntax. (Thies)
- Made sure that OCI8 outbound variables are always zero-terminated. (Thies)
- Fixed a bug that allowed users to spawn processes while using the 5th
  parameter to mail(). (Derick)
- Added nl_langinfo() (when OS provides it) that returns locale.
- Fixed a major memory corruption bug in the thread safe version. (Zeev)
- Fixed a crash when using the CURLOPT_WRITEHEADER option. (Sterling)
- Added optional suffix removal parameter to basename(). (Hartmut)
- Added new parameter UDM_PARAM_VARDIR ha in Udm_Set_Agent_Param() function to
  support alternative search data directory. This requires mnogoSearch 3.1.13
  or later.
- Fixed references in sessions. This doesn't work when using the WDDX
  session-serializer. Also improved speed of sessions. (Thies)
- Added new experimental module pcntl (Process Control). (Jason)
- Fixed a bug when com.allow_dcom is set to false. (phanto)
- Added a further parameter to the constructor to load typelibs from file when
  instantiating components (e.g. DCOM Components without local registration).
  (phanto)
- Added the possibility to specify typelibs by full name in the typelib file
  (Alan Brown)
- Renamed the ZZiplib extension to the Zip extension, function names have also
  changed accordingly, functionality, has stayed constant. (Sterling)
- Made the length argument (argument 2) to pg_loread() optional, if not
  specified data will be read in 1kb chunks. (Sterling)
- Added a third argument to pg_lowrite() which is the length of the data to
  write. (Sterling)
- Added the CONNECTION_ABORTED, CONNECTION_TIMEOUT and CONNECTION_NORMAL
  constants. (Zak)
- Assigning to a string offset beyond the end of the string now automatically
  increases the string length by padding it with spaces, and performs the
  assignment. (Zeev, Zend Engine)
- Added warnings in case an uninitialized string offset is read. (Zeev, Zend
  Engine)
- Fixed a couple of overflow bugs in case of very large negative integer
  numbers. (Zeev, Zend Engine)
- Fixed a crash bug in the string-offsets implementation (Zeev, Zend Engine)
- Improved the implementation of parent::method_name() for classes which use
  run-time inheritance. (Zeev, Zend Engine)
- Added 'W' flag to date() function to return week number of year using ISO
  8601 standard. (Colin)
- Made the PostgreSQL driver do internal row counting when iterating through
  result sets. (gvz@2scale.net)
- Updated ext/mysql/libmysql to version 3.23.39; Portability fixes, minor
  bug fixes. (tim@mysql.com)
- Added get_defined_constants() function to return an associative array of
  constants mapped to their values. (Sean)
- New mailparse extension for parsing and manipulating MIME mail. (Wez)
- Define HAVE_CONFIG_H when building standalone DSO extensions. (Stig)
- Added the 'u' modifier to printf/sprintf which prints unsigned longs.
  (Derick)
- Improved IRIX compatibility. (Sascha)
- Fixed crash bug in bzopen() when specifying an invalid file. (Andi)
- Fixed bugs in the mcrypt extension that caused crashes. (Derick)
- Added the IMG_ARC_ROUNDED option for the ImageFilledArc() function, which
  specified that the drawn curve should be rounded. (Sterling)
- Updated the sockets extension to use resources instead of longs for the
  socket descriptors. The socket functions have been renamed to conform with
  the PHP standard instead of their C counterparts. The sockets extension is
  now usable under Win32. (Daniel)
- Added disk_total_space() to return the total size of a filesystem.
  (Patch from Steven Bower)
- Renamed diskfreespace() to disk_free_space() to conform to established
  naming conventions. (Jon)
- Fixed #2181. Now zero is returned instead of an unset value for
  7-bit encoding and plain text body type. (Vlad)
- Fixed a bug in call_user_*() functions that would not allow calling
  functions/methods that accepted parameters by reference. (Andrei)
- Added com_release($obj) and com_addref($obj) functions and the related class
  members $obj->Release() and $obj->AddRef() to gain more control over the used
  COM components. (phanto)
- Added an additional parameter to dotnet_load to specify the codepage (phanto)
- Added peak memory logging. Use --enable-memory-limit to create a new Apache
  1.x logging directive "{mod_php_memory_usage}n" which will log the peak
  amount of memory used by the script. (Thies)
- Made fstat() and stat() provide identical output by returning a numerical and
  string indexed array. (Jason)
- Fixed memory leak upon re-registering constants. (Sascha, Zend Engine)

23 Jun 2001, Version 4.0.6
- Fixed memory fragmention problem which could lead to web server processes
  growing much more than they should. (Andi, Zend Engine)
- Made $HTTP_SESSION_VARS['foo'] and $foo be references to the same value
  when register_globals is on. (Andrei)
- Fixed disk_free_space() and disk_total_space() under FreeBSD. (Jon)
- Fixed readfile/passthru losing resources during connection abort (Sascha)
- Fixed bug in the mcrypt extension that caused segfaults when using a key
  that is too large for the used algorithm, and a bug that caused
  mcrypt_generic() to segfault PHP (Derick)
- Fixed getopt so that it accepts command line arguments in the form
  -<opt><arg> and -<opt> <arg>. (Jmoore)
- Fixed race in writing session files (Sascha)
- Fixed a possible crash in the PHP CGI when no input file is
  specified (Zeev)
- Added is_callable() function that can be used to find out whether
  its argument is a valid callable construct. (Andrei)
- Fixed a rare possible crash when generating extended information. (Dmitri
  Dmitrienko, Zend Engine)
- Improved virtual() to support PHP-enabled URIs. (Zeev)
- Fixed undefined behavior when using floating point keys in array()
  expressions. (Zeev, Zend Engine)
- Fixed a possible crash in case of parse errors in include files or eval
  statements. (Zeev, Zend Engine)
- Added --with-layout configure option. (Stig)
- Improved interactive mode - supports function calls, and works in
  multithreaded builds. (Zeev, Zend Engine)
- Fixed a crash bug in interactive mode. (Zeev, Zend Engine)
- Added pg_last_notice() function. (Rasmus from suggestion by Dirk@rackspace.com)
- Fixed a bug in preg_split() that would incorrectly limit the number of
  results when used along with PREG_SPLIT_NO_EMPTY flag. (Andrei)
- Added connection error support to mysql_error() and mysql_errno(). (Jason)
- Added support to getimagesize to return dimensions of BMP and PSD
  files. (Derick)
- Added heuristic to kill stale IRC connections, message scanner caching, and
  nickname escaping to IRCG, suppress option to ircg_msg(), and statistics to
  IRCG phpinfo() output. (Sascha)
- Added Japanese multibyte string functions support. (Rui)
- Added Mac OS X "\r" line ending support. (Andi, Zend Engine)
- Fixed a bug regarding the $PHP_SELF being incorrectly registered when
  force-cgi-redirect was not enabled. (Sterling)
- pfpro extension now supports version 3 of the Verisign SDK. (John Donagher)
- Udm_Cat_List and Udm_Cat_Path functions has been added.
- Added key_exists() to check if a given key or index exists in an
  array or object. (David Croft)
- Modify the cURL extension to compile only with the latest cURL release.
  Backwards compatibility with regards to the extension api has not been
  broken. (Sterling)
- Added the ability to use user-defined callbacks with cURL. (Sterling)
- Added the SSL_VERIFYPEER, CAINFO, MAXREDIRS, FILETIME, RANDOM_FILE, EGDSOCKET
  and CONNECTTIMEOUT options to curl_setopt(). (Sterling)
- Added support for persistent connections with cURL. (Sterling)
- Fixed a problem in cURL with file descriptors being allocated, but never
  closed. (Sterling)
- Fixed interactive mode (-a). It works again with the same limitations it
  has always had. (Andi, Zend Engine)
- Improved memory manager to use less memory and provide better memory overflow
  detection abilities in debug mode. (Andi, Zend Engine)
- Fixed resource leaks when resources were being cast to numbers. (Zeev, Zend
  Engine)
- Fixed foreach() to not crash when being sent an invalid argument. (Andi, Zend
  Engine)
- Fixed a bug in opendir() under Windows when trying to open a non-exisiting
  directory. (Andi)
- Fixed popen() and the exec family under Win32 (Unable to fork issue). (Daniel)
- Make the printf family of functions binary clean. (Rasmus)
- Fixed WDDX serialization to HTML-escape key/variable names so as not to
  break the XML packet. (Andrei)
- Made WDDX extension enabled by default. (Andrei)
- Added -C command-line option to avoid chdir to the script's directory. (Stig)
- Fixed a bug with /e modifier in preg_replace(), that would not correctly
  replace two-digit references if single digit references were present
  before them. This fixed bug #10218. (Andrei)
- Added temporary LOB support in OCI8. (Patch by David Benson)
- Fixed crash in pathinfo()
- OCI8 now supports binding of collections. (Patch by Andy Sautins
  <asautins@veripost.net>)
- Added GD 2.0.1 support for truecolor and alpha channels, plus some other gd
  functions, both old and new - see docs for more info. (Wez)
- Added S/MIME sign/verify encrypt/decrypt functions to openssl extension,
  along with some other certificate manipulation and interrogation functions.
  See docs for more info. (Wez)
- printf argnum (parameter swapping) support. (Morten Poulsen, Rasmus)
- Add DIRECTORY_SEPARATOR constant ('/' on UNIX, '\' on Windows). (Stig)
- Added small change to php_odbc module, to check for failed SQLDisconnects
  and to close any outstanding transactions if the call fails, then disconnect
  again. (lurcher)
- Modified get_parent_class() and get_class_methods() to accept a class name as
  well as a class instance. (Andrei, Zend Engine)
- Added support for UNC style paths. (\\server\share\file,
  //server/share/file). (Daniel, TSRM)
- Added dbx module (database abstraction) to the repository. (Marc)
- Using ITypeInfo instead of IDispatch if possible. This makes DCOM calls
  and even COM calls much faster.
  All ini settings are now prefixed by 'com.'.
  Now you need not provide a path to the file containing the typelib, you can
  also provide the GUID of the TypeLib - entry or an IID for preloading
  type - information. (Harald)
- Rewrite of domxml. It's now mostly DOM Level 2 conform. (Uwe)
- Added array_map() function that applies a callback to the elements
  of given arrays and returns the result. It can also be used with a
  null callback to transpose arrays. (Andrei)
- Added array_filter(), which allows filtering of array elements via
  the specified callback. (Andrei)
- Fixed all relevant array functions to avoid moving the internal array
  pointer during operations. (Andrei)
- Added mysql_unbuffered_query(), which is useful for very large result sets.
  (Zeev)

30 Apr 2001, Version 4.0.5
- Added new php.ini directive: arg_separator.input which is used to tell
  PHP which characters are considered as argument separators in URLs.
  Renamed php.ini directive: arg_separator -> arg_separator.output (Jani)
- Added FastCGI SAPI module. (Ben Mansell)
- Added array_reduce(), which allows iterative reduction of an array
  to a single value via a callback function. (Andrei)
- The imageloadfont function of the gd extension should be not platform
  dependent after this fix. (alex@zend.com)
- Fixed a compatibility problem in some file functions (fgets, fputs, fread,
  fwrite). The ANSI standard says that if a file is opened in read/write
  mode, fseek() should be called before switching from reading to writing
  and vice versa. (alex@zend.com)
- Fixed argument checking for call_user_func* functions and allowed
  specifying array($obj, 'method') syntax for call_user_func_array. (Andrei)
- Fixed parent::method() to also work with runtime bindings.
  (Zeev, Zend Engine)
- Implemented high-performance zlib-based output compression - see
  zlib.output_compression INI directive. (Zeev)
- Improved ob_gzhandler() to support chunked output buffering - it's
  recommended to use it with 4KB chunks. (Zeev)
- Fixed chunked output buffering. (Zeev)
- Forced call_user_method() and call_user_method_array() to take the
  object argument by reference. (Andrei)
- Fixed binding of ROWIDs in OCI8. (Thies)
- Added PEAR/Cache as a generic Caching System. (Sebastian, PEAR/Cache)
- Added IMAP quota support (imap_set_quota, imap_get_quota), enabled/added via
  c-client2000. (kalowsky)
- Upgraded PCRE to version 3.4. (Andrei)
- Added array_search which works similar to in_array but returns
  the key instead of a boolean. (jason@php.net)
- Fixed pgsql transaction support. (Stig, PEAR/DB)
- Added new object VARIANT() to encapsulate values for use with
  the COM and DOTNET module. Therefore it is now possible to pass
  values by reference, convert php values to extended variant types (currency,
  date, idispatch, iunknown, ...) and define the codepage that should
  be used for unicode - conversion.
- Improved overall speed of IRCG, added URL handling to message scanner.
  (Sascha)
- Fixed some modules to allow using output-buffering. (Thies)
- Added the chroot() function. (Derick)
- PostgreSQL now does a rollback at the end of a request on every
  persistent connection. This is done by doing an "empty" transaction
  on the connection. This was advised by someone from the PostgreSQL
  core-team. (Thies)
- Fixed PostgeSQL pg_connect() bug. We would sometimes close the default
  link by accident. (Patch by: aja@nlgroup.ca)
- Improved OCI8 dead-session detection. (Patch by: George Schlossnagle)
- Fixed get_meta_tags() multiline bug #4556. (Sean)
- Prefer random() over *rand48(). (JimJag)
- Sped up WDDX serialization 2x. (Andrei)
- Added a new parameter to mail() which appends aditional command line
  parameters to the mail program. (Derick)
- Added Udm_Clear_Search_Limits mnoGoSearch extension function. (gluke)
- Fixed mnogosearch protos. Fixed mnogosearch functions return values.
  A bug with capital letters break search has been fixed. (gluke)
- Static methods can now be called via call_user_method_* functions, e.g.
  call_user_method('method', 'class'), and also array('class', 'method')
  constructs (for array_walk(), for example). (Andrei, Zend Engine)
- microtime() under Windows now returns accurate values. (James)
- Added PREG_SPLIT_DELIM_CAPTURE flag to preg_split() that allows for Perl-like
  functionality of capturing parenthesized delimiter expression. (Andrei)
- Fixed strip_tags() to not strip a lone > character. (Rasmus)
- When using the ob_gzhandler() PHP now automagically also sets the
  Content-Lengh correctly which enables browsers to use the HTTP
  Keep-Alive feature. (Thies)
- Improved handling of preg_replace() /F modifier so that it's possible to
  specify array($obj, 'method') construct as a replacement function. (Andrei)
- Added mysql_get_client_info(), mysql_get_server_info(),
  mysql_get_proto_info(), and mysql_get_host_info() functions. (Sean)
- Major change of the php pdf api. It could break some functions though
  backwards compatibility was tried to maintain. Adding some still
  missing functions as well. (Uwe)
- Added mnoGoSearch extension - http://search.mnogo.ru. (Sergey K)
- Allow URL encoding in DB usernames and passwords. (Stig, PEAR)
- Added raiseError and setErrorHandling methods to PEAR class. (Stig, PEAR)
- Added support for converting images from JPG/PNG on the fly with the GD
  extension, which is usefull for creating dynamic WAP-sites. (Derick)
- Updated ext/mysql/libmysql to version 3.23.32; bug fixes. (tim@mysql.com)
- Fixed possible crash in all (non-pcre) regex functions. (Thies)
- Improved str_replace() to accept an array for any parameter - similar
  to preg_replace(). (Andrei)
- Fixed extract() to properly prefix numeric keys when EXTR_PREFIX_ALL is
  used. (Andrei)
- Added EXTR_PREFIX_INVALID flag to extract() to automatically prefix
  string keys that do not constitute valid variable names. (Andrei)
- BeOS patch from svanegmond@bang.dhs.org, modified somewhat by Rasmus.
- Fixed the Apache module to overwrite PATH_TRANSLATED with SCRIPT_FILENAME,
  only if PATH_TRANSLATED is not previously set. (Zeev)
- Fixed crash bug in highlight_string(). (Rasmus)
- Added URL support for getimagesize() function. (Jani)
- Added xslt_set_scheme_handler() function. (carmelo@akooe.com)
- Added the pg_lolseek and pg_lotell functions. (Derick)
- Fixed wrong breaking with the wordwrap function. (Derick)
- Fixed 'O' and 'r' flags of date() to have correct sign for timezone
  offset. (Andrei)
- Changed 'Z' flag to date() to always return timezone offset with
  negative sign if it's west of UTC. (Andrei)
- Added the HTML_Processor class which provides common functions for
  processing HTML. (Sterling)
- Added localeconv() and strcoll() functions for localization. (Sean)
- Added the xslt_set_base function. (Sterling)
- Added support for Zeus 3.3.8.
- Added odbc_error() and odbc_errormsg() functions. (Stig)
- New extension for vpopmail - http://www.inter7.com/vpopmail,
  give it a try, but keep in mind that it is not ready for production
  environments. (David Croft, Boian Bonev)
- Added sybase_get_last_message() to the Sybase CT module. (Jan Fedak)
- Made ldap_list(), ldap_read() and ldap_search() do parallel search when
  first parameter is an array of link identifiers. (Stig Venaas)
- Made fopen() of HTTP URL follow redirects, $http_response_header will
  contain all headers with empty string as delimiter. (Stig Venaas)
- Added Console_Getopt class for parsing command-line args. (Andrei, PEAR)
- Added an experimental version of the ZZipLib extension which provides the
  ability to read zip files. (Sterling)
- Allow access to uploaded files in safe_mode. Beware that you can only
  read the file. If you copy it to new location the copy will not have the
  right UID and you script won't be able to access that copy. (Thies)
- Changed extract() to check that prefixed name is a valid one. (Andrei)
- Changed extract() to return the number of variables extracted. (Andrei)
- Added ldap_rename() function. (Stig Venaas)
- Made ldap_set_option() support controls. (Stig Venaas)
- Changed ldap_search() and added functions ldap_parse_result(),
  ldap_first_reference(), ldap_next_reference() and ldap_parse_reference()
  to cope with LDAPv3 stuff like referrals and references. (Stig Venaas)
- Fixed date('r') overflow.
- Made the php.ini path reported in phpinfo() always point to the absolute
  path that was opened. (Zeev)
- Made the INI mechanism thread safe. (Zeev, Zend Engine)
- Changed setlocale() to use LC_* constants. (Jani)
- ctype functions now follow the extension naming conventions. (Hartmut)
- Added iconv() function (using libc or libiconv). (Stig)
- Added ODBC_TYPE constant. (Stig)
- Added the call_user_method_array function which allows you to call a method
  with an arbitrary number of parameters. (Sterling)
- ext/odbc: IBM DB2 patch by Walter Franzini. <walter@sys-net.it>
- Added extension for the cracklib library. (Alexander Feldman)

19 Dec. 2000, Version 4.0.4
- Allow assigning a newly created object by reference. This is needed only if
  your constructor makes other data structures reference the $this object (for
  example, $GLOBALS["foobar"] =& $this;)
  The new syntax is $obj =& new MyClass(); (Andi, Zend Engine)
- Allow for three expression types to be sent to functions which are requesting
  the function argument to be passed by reference (only c. was previously
  supported):
  a. func(new myclass());
  b. func(func2()); where func2() returns a reference, i.e. is defined as
     function &func2(...)
     {
      ...
     }
  c. func($var); where func() is defined as function func(&$var) {...}
  You CAN'T count on any other expressions to be passable by reference.
  (Andi, Zend Engine)
- Made ldap_get_entries() return an array even if there are no entries
  in search result. (Jani)
- Fixed bad mod_perl interaction which caused segfaults when using LFS (Sascha)
- const CONSTNAME now gets recognized. Before the patch only @const CONSTNAME
  description was recognized.
- Added the is_null() function that will return true if a variable is of
  type null. (Sterling)
- Fixed a bug which made readdir() unusable in some systems. (Jani)
- Added the get_defined_functions() function which returns a list of all
  currently defined functions. (Sterling)
- Added the get_defined_vars() function which returns an associative array
  of all variables defined in the current scope and their subsequent values.
  (Sterling)
- Added the call_user_func_array() function which gives you the ability to
  call a user function by passing an array of parameters as the second
  argument. (Sterling)
- Added the constant() function which returns the value of a constant given
  the constant's name. (Sterling)
- Implemented support for Perl-style matching regexp delimiters in PCRE.
  You can use <{[( and )]}> to delimit your expressions now. (Andrei)
- Introduced new 'F' modifier in PCRE that lets you specify a function
  name in the replacement argument to preg_replace() that will be called
  at run-time to provide the replacement string. It is passed an array of
  matched pattern and subpatterns. (Andrei)
- Put an end to BUG#4615 (kalowsky & Eric Veldhuyzen)
- Added the IRCG extension (Sascha)
- Fixed realpath() in Virtual Directory mode (Daniel)
- Integrated the Phil Nelson's bc math library routines into PHP, now that
  the license allows it (Phil Nelson <phil@cs.wwu.edu>)
- Added the xslt_set_error_handler() function to the Sablotron extension.
  (Sterling)
- Improved Sablotron's error handling system allowing you to catch all
  errors before they are outputted to the screen. (Sterling)
- Added OpenSSL extension (Stig Venaas)
- Fixed/created support for Solid 3.0 databases (kalowsky)
- Fixed support for Solid 2.3 databases (kalowsky)
- quoted_printable_decode() function is made RFC-2045 compliant. (Kir)
- Modified preg_grep() to always return the results with keys from the original
  array. (Andrei)
- Modified preg_replace() to accept Perl-style $n backreferences in addition
  to \\n ones. (Andrei)
- Modified preg_replace() to ignore backreferences that refer to
  non-existing subpatterns. (Andrei)
- Fixed column-title buffer-overflow in OCIFetchStatement(). (Thies)
- Added 'output_handler' INI directive (Zeev)
- Fixed some buglets in the output buffering mechanism (Zeev)
- Added transparent gzip compression support (Jade Nicoletti, Zeev)
- Major overhaul of domxml. Added basic XPath support as well (Uwe)
- Added 'r' flag to date() which generates an RFC822 formatted date, e.g.
  "Thu, 9 Nov 2000 16:33:01 -0500" (Colin)
- In CGI mode, $HTTP_SERVER_VARS now includes all of the environment variables
  as well (Zeev)
- Allow user to use mysql_use_result in mysql queries (Stas)
- Fixed a memory leak that would occur when restarting Apache often
  (mookid@sigent.ru)
- Fixed a bug that prevented $argv and $argc from being defined in the command
  line version of PHP (Stas)
- Fixed a bug that prevented a changed compile-time extension_dir from
  affecting modules that were loaded via php.ini (Zeev)
- Fixed a bug in ftp_mkdir() when used on ftp server which doesn't return
  the full path (Jani)
- Added ImageCreateFromString() which creates an image stream out of
  e.g. a MySQL blob. (Mathieu)
- Fixed a crash bug in imagewbmp() (Jani)
- Changed the sablot configuration file so that if you use any version of
  Sablotron below 0.44 you must use Sablotron's built-in Expat libraries.
  (Sterling)
- Added basic authentication support to thttpd (Sascha)
- Added support for the Caudium webserver (http://caudium.net/). It's based
  on the Roxen SAPI module. Many bugs have been identified and fixed. (David)
- Fixed mysql_close(), pg_close(), msql_close() and sybase_close() - they
  weren't properly closing the SQL connections (Zeev)
- Fixed crypt() to supply random seed if none is given (Andi)
- Made print_r() support recursive data structures, e.g. $GLOBALS. (Zeev)
- Fixed a bug that caused PHP not to properly flush its output buffer, if more
  than one output buffer was used. (Zeev)
- Fixed a bug that could draw the shutdown sequence of the PHP Apache module
  into an endless loop, under certain circumstances. It could cause Apache
  processes under Solaris to get stuck, especially when using output
  buffering. (Zeev)
- Added support for serializing references (Stas)
- Fixed conflict with OpenLDAP and Oracle 8.1.x (Jani)
- parse_ini_file() supports a new optional 2nd argument that instructs it
  to divide the directives to arrays according to the sections in which they
  reside (Zeev)
- parse_ini_file() is now thread-safe, and supported under Windows (Zeev)
- Unified aborted-connection semantics of all SAPI modules (Sascha)
- URL-opened files now store the HTTP response header in $http_response_header
  (Zeev)
- Fixed array_rand() to shuffle results when the number of requested
  elements is the same as the number of elements in the array. (Andrei)
- Added replace parameter to header() (Sascha)
- Fixed handling of single quotes in transparent session-id mode (Sascha)
- Fixed "php://*" fopen handler (Sascha)
- Made rename work in threadsafe enviroments (Daniel)
- Made session_destroy() close files before unlinking (Daniel)
- Added array_sum() function. (Andrei)
- Fixed a bug in session.c. The php_session_save_current_state did not check
  if mod_data is NULL and such situation is possible if the user calls
  session_module_name with a parameter. (alex@zend.com)
- Added IIS Admin extension. (Frank)
- OCIBindByName() now does better parameter-checking. (Thies)
- Made read() binary-safe in sockets.c (Chris Vandomelen)
- Made array_intersect() and array_diff() not alter order (Stig Venaas)
- Made ldap_connect() accept URL in host parameter when using OpenLDAP
  2.x. To use SSL, use ldaps://host/ as URL. (Stig Venaas)
- Made resource type names visible, e.g. var_dump() and
  get_resource_type() display "file" for file resources. (Andrei)
- Added the curl_getinfo() function to find out information about a CURL
  transfer. This function requires cURL 7.4.0 or above. (Sterling)
- Added the CURLOPT_KRB4, CURLOPT_INTERFACE, CURLOPT_QUOTE, CURLOPT_POSTQUOTE,
  CURLOPT_QUOTE and CURLOPT_HTTPPROXYTUNNELL options. (Sterling)
- Renamed the shm_* functions to shmop_* (Derick)
- Updated ext/mysql/libmysql to version 3.23 (tim@mysql.com)
- Added ldap_get_option() and ldap_set_option() functions (Stig Venaas)
- Fixed a crash in CGI mode, in case no file was provided
  (Daniel Beulshausen& Zeev)
- Fixed possible crash bug in imap_fetchstructure() (Jani)
- Fixed possible crash bug in imap_open() (Jani & Mark Musone)
- Added url_rewriter.tags configuration directive (Sascha)
- Added CORBA client extension, ready for use (eriksson@php.net)
- Fixed memory leak in x-httpd-source mode (Jason Greene)
- Changed ext/gd not to be enabled by default (Jani)
- Make increment of empty string ("") behave like in PHP 3 and result in "1"
  (Andi, Zend Engine)
- Added POST handler for Adobe FDF format (Hartmut)
- Added transparent read and write .gz-files on glibc based systems
  using the 'zlib:' fopen wrapper (Hartmut)
- Fixed a problem in the configuration parser (two null bytes were added
  to each ENCAPSULATED TC_STRING) (alex@zend.com)
- Added HMAC support in the mhash module (nmav@altera.gr)
- Added module for Ovrimos sql server (nmav@altera.gr)

11 Oct 2000, Version 4.0.3
- Fixed a possible crash in -a interactive mode (Zeev, Zend Engine)
- Added mysql_escape_string() (Peter A. Savitch and & Brian Wang)
- Fixed many possible crash bugs with improper use of the printf() family of
  functions (Andi)
- Fixed a problem that allowed users to override admin_value's and admin_flag's
  (Zeev)
- Fixed PostgreSQL module to work when the link handle is omitted (Zeev)
- Fixed returning of empty LOB fields in OCI8. (Thies)
- Added Calendar module to default Win32 build (Andi)
- Added FTP module to default Win32 build (Andi)
- Fixed crash in the POSIX getrlimit() function (alex@zend.com)
- Fixed dirname() under certain conditions (Andi)
- Added --with-imap-ssl to support SSL'ized imap library in RH7 and others
  (Rasmus)
- Fixed possible crash bug in parse_url() (Andi)
- Added support for trans sid under Win32 (Daniel)
- Added IPv6 support in fopen (Stig Venaas)
- Added the shmop extension. It allows more general ways of shared memory
  access. (thanks to Ilia Alshanestky <iliaa@home.com> and Slava Poliakov
  <slavapl@mailandnews.com> (Derick)
- Added the ability for CURLOPT_POSTFIELDS to accept an associative array of
  HTTP POST variables and values. (Sterling)
- Added the CURLOPT_HTTPHEADER option to curl_setopt(). (Sterling)
- Added the curl_error() and curl_errno() functions. (Sterling)
- Changed ext/db not to be enabled by default (Jani)
- Fixed building Apache SAPI module on SCO UnixWare (Sascha)
- Fixed writing empty session sets to shared memory (tcarroll@chc-chimes.com)
- Added support for BSD/OS make (Sascha)
- Added improved URL rewriter (Sascha)
- Fixed readdir_r() use on Solaris (Sascha)
- Improved HTTP headers for private-caching (jon@csh.rit.edu, Sascha)
- Added new function session_cache_limiter (jon@csh.rit.edu, Sascha)
- Added ftp_exec to the ftp functions (thanks to <jhennebicq@i-d.net>)
  (Derick)
- PEAR: add last executed query as debug info in DB errors (Stig)
- PEAR: allow multiple modes in PEAR_Error (Stig)
- Made the Sybase CT module thread safe (Zeev)
- Added second argument to array_reverse() that indicatese whether
  the original array keys should be preserved. (Andrei)
- Clean up htmlspecialchars/htmlentities inconsistencies. (Rasmus)
- PEAR: renamed DB_GETMODE_* to DB_FETCHMODE_*, added setFetchMode()
  in DB_common to set the default mode, added some MySQL tests (Stig)
- Made eval() and several other runtime-evaluated code portions report the
  nature and location of errors more accurately (Stas)
- Added an optional parameter to wordwrap that cuts a string if the length of a
  word is longer than the maximum allowed. (Derick)
- Added functions pg_put_line and pg_end_copy (Dirk Elmendorf)
- Added second parameter for parse_str to save result (John Bafford)
- Fixed bug with curl places extra data in the output. (medvitz@medvitz.net)
- Added the pathinfo() function. (Sterling)
- Updated sybase_ct module and its sybase_query to use high performance API.
  (Joey)
- Added a more configurable error reporting interface to DB. (Stig)
- Added is_uploaded_file() and move_uploaded_file() (Zeev)
- Added several directives to php.ini - post_max_size, file_uploads,
  display_startup_errors - see php.ini-dist for further information (Zeev)
- Worked around a bug in the libc5 implementation of readdir() (Stas)
- Fixed some potential OpenBSD and NetBSD crash bugs when opening files. (Andi)
- Added EscapeShellArg() function (Rasmus)
- Added a php.ini option session.use_trans_sid to enable/disable trans-sid.
  (Sterling)
- Added the Sablotron extension for XSL parsing. (Sterling)
- Fixed a bug in checkdate() which caused < 1 years to be valid (Jani)
- Added support for an optional output handler function for output
  buffering. This enables transparent rendering of XML through XSL,
  transparent compression, etc. (Zeev)
- Added support for user defined 'tick' callback functions. This helps
  emulate background processing. (Andrei)
- Fixed problem with having $this as the XML parser object. (Andrei)
- Internal opened_path variable now uses the Zend memory manager so that full
  paths of files won't leak on unclean shutdown (Andi)
- Removed support of print $obj automatically calling the __string_value()
  method. Instead define yourself a method such as toString() and use
  print $obj->toString() (Andi, Zend Engine)

29 Aug 2000, Version 4.0.2
- Added PHP API for Zend's ticks. (Stig)
- PHP 3 regression testing framework re-born (Stig)
- Added php_uname() function (Stig)
- Made a minor change to allow building with OpenLDAP 2.0 (Stig Venaas)
- Fixed a bug in preg_replace() that would truncate subject string if the
  first argument was en empty array. (Andrei)
- Added ob_get_length function (Stig)
- Fixed a bug that did not respect limit parameter in preg_replace() when
  using /e modifier. (Andrei)
- Added ability for each xml_set_*_handler() function to take the
  array($obj, 'method') syntax for the handler argument as well
  as the normal function name. (Andrei)
- Updated array_walk() to be able to accept array($obj, 'method')
  syntax for the walk function. (Andrei)
- Fixed segfault with fgets(), fgetcsv(), fgetss(), and fread() when
  called with negative length argument. (Torben)
- Fixed by-reference parameters passing for xml_ functions and for scanf
  functions (Stas)
- Added experimental Oracle LDAP SDK support. 8.1.6 or later needed. Configure
  with something like --with-ldap=/usr/local/oracle/product/8.1.6 (Stig Venaas)
- Fixed memory leaks in eval(); A script that used eval() extensively, could
  end up consuming very large amounts of memory during execution (Zeev, Zend
  Engine)
- Fixed memory_limit feature, which did not work properly in previous versions
  (Zeev, Zend Engine)
- Fixed stdout support with the swf extension. (Sterling)
- Fixed byte order for ip2long and long2ip (Stas)
- Fixed dbase_add_record. (Sterling)
- Added support for libmcrypt 2.4.4 (Derick)
- Added strncasecmp function (Andi, Zend Engine)
- Fixed FTP module to accept multiline server replies (Jani)
- Fixed switch which only has a single default rule. (Andi, Zend Engine)
- Fixed problem with nested foreach()'s. (Andi, Zend Engine)
- The CCVS module is now stable and compiling. It compiles as a CGI and into
  Apache cleanly without warnings. (Brendan W. McAdams)
- Fixed mSQL_close(). (nick@loman.net)
- Made return() in a require()'d file work like return() in an include()'d
  file (Andi & Zeev, Zend Engine)
- Changed require_once() to work using the same table as include_once()
  (Andi & Zeev, Zend Engine)
- Fixed PostgreSQL module to work when the link handle is omitted (Zeev)
- Fixed the Sybase modules to work properly with PHP 4.0 (Zeev)
- Fixed CLOB handling in OCI8 driver when using variable-width
  character sets. (Thies)
- Added 4th optional parameter to sybase_[p]connect to specify the charset
  for the connection (alf@alpha.ulatina.ac.cr)
- Fixed support for current thttpd releases. (Sascha)
- Added support for kerberized IMAP library using --with-kerberos
  (Rasmus, Sascha)
- Virtualize realpath, chmod, chown and utime (Stas)
- Support content-encoding headers in file upload MIME parts
  (Ragnar Kjørstad)
- Fixed warning when shutting down OCINLogon() connections. (Thies)
- Fixed \n in session variables bug on Win32 (Stas)
- OCIError() would sometimes not report failed connections. (Thies)
- Fixed HEAD request bug on an Apache ErrorDocument redirect and preserve
  the status code across the redirect as well. (Rasmus)
- Added Olympus-specific tags to read_exif_data() (Rasmus)
- Fixed bug in imap_fetchheader() where using FT_PREFETCHTEXT didn't return
  the body. Bug #4447. (Jani)
- Fixed exec() returning "\0" when output is empty
- Added XML_Parser class in PEAR (Stig)
- Added "make test" target in pear/ and added some regression tests (Stig)
- Fixed bug in strip_tags function as per bug #5857 (Rasmus)
- Fixed reading of IPTC via GetImageInfo() for certain JPEG files. (Thies)
- Improved the output-buffering functions to be re-entrant (Zeev)
- Made ldap_add(), ldap_modify(), ldap_mod_add(), ldap_mod_replace()
  binary-safe. Original patch: Terrence Miao <terrence_miao@email.com> (Jani)
- CGI aka. command line version has now an option '-l' for syntax check
  without execution (Hartmut)
- Fixed bug in ldap_get_values_len() which makes it NULL-safe. (Jani)
- Bug-report and fix submitted by Michel Alexeline <alexel@dr15.cnrs.fr>
- Make ext_skel create a Makefile.in set up to handle shared extension
  support automatically (Rasmus)
- Fixed php_realpath not to die on non-existing files (needed for touch())
  (Stas and china@thewrittenword.com)
- Fixed get_browser() function (Stas)
- Fixed symbol clash which caused a DSO problem on OpenBSD (Rob Black and
  anil@recoil.org)
- Added new function: ldap_compare(). (Jani)
- Fixed a bug in ldap_get_entries() and ldap_get_attributes(). (Jani)
- Ported DB to new error reporting scheme in PEAR. (Stig)
- Added sybase and ibase DB backends in PEAR. (Sterling)
- New PEAR package Payment_Verisign for use with the Payflow Pro
  (pfpro) extension. (David Croft)
- Added CURL support. (Sterling)
- Catch users trying to set "compatibility" parameter in PDF, which is not
  supported from user-land. (Joey)
- Fixed dbase_add_record. (Sterling)
- Added new function wordwrap() to wordwrap long strings from Chris
  Russel <russel@yorku.ca> (David Croft)
- Added four additional arguments: attrsonly, sizelimit, timelimit, deref which
  were missing in ldap_search(), ldap_list() and ldap_read() functions (Jani)
- Fixed a bug in ldap_search/list/read() which prevented returning the partial
  results when 'Sizelimit exceeded' error occurred. (Jani Taskinen)
- Fixed preg_replace() to automatically escape quotes in matched
  strings when using /e modifier. (Andrei)
- Itanium patch (Steve Robb)
- Set default include_path so PEAR files can be reached (Stig)
- Added "pear" executable, requires CGI version installed (Stig)
- Added extension ii for Ingres II native support. See README in ext/ingres_ii
  directory. (David H)
- Added Win32 project for the Interbase module (Zeev)
- Added ability to perform calls to the parent class without explicitly
  specifying its name, using parent::func_name(...) (Zeev, Zend Engine)
- You can now call Ora_Error() without prameters to get the reason
  for a failed connection attempt. (Kirill Maximov)
- New extension "pfpro" for interface with Verisign Payflow Pro (David Croft)
- Added IMG_GIF, IMG_JPG, IMG_JPEG, IMG_PNG and IMG_WBMP constants for
  imagetypes() function (Rasmus)
- Added ImageTypes() function which returns a bitfield with the supported
  image formats. 1=gif, 2=jpeg, 4=png and 8=wbmp (Rasmus)
- Make it possible to specify an empty string as a thousands-seperator
  in number_format() (Rasmus)
- Shared module support for LDAP extension (Troels Arvin)
- Fixed a bug with imap_mail where apache would segfault if the rpath
  parameter was specified.
- Use dashes and short day name in cookies since some browsers seem picky
  about this (Rasmus)
- Added pspell module. (Vlad)
- Added 3 additional arguments to the user-defined error handler - the file
  name and line number in which the error occured, and the context (local
  variables) of the code in which the error occured (Zeev, Zend Engine)
- Improved the error handling code to handle an error in a user-defined error
  handling function (Zeev, Zend Engine)
- Fixed leak when using string offsets in the array() construct.
  (Andi, Zend Engine)
- Fixed corruption problem when changing deeply nested values in objects.
  (Andi & Zeev, Zend Engine)
- Improved array_multisort() to be able to specify sort type as well sort
  order. Incidentally, it can be used to sort multi-dimensional arrays
  as well. (Andrei)
- Fixed a possible data corruption in case of a huge amount of aborted requests
  (Zeev)
- Apache module would sometimes close a wrong file-descriptor. (Sascha)
- Fixed use of alternative storage handlers in the session module. (Sascha)
- Updated str_pad() to be able to pad on left/right/both sides. (Andrei)
- Fixed crash in gzopen(). (Thies)
- Multiple character set support in gdttf.c (Rob Goodwin)
- When using HTTP auth from PHP, fill in the %u custom log field so the
  authenticated used id will get logged in the Apache access_log (Rasmus)
- Support for pdflib 3.01. (Uwe)
- FDF Data is handled properly and can be accessed by reading
  HTTP_RAW_POST_DATA. (Uwe)
- Added new 'O' format modifier that will output the GMT offset as "[+-]HHMM"
  (eg: Pacific time is -0700). This is useful for things such as Date: mail
  headers. (Mike W)
- Fixed crash on OCI?Logon() failure. (Thies)
- Make the special Header("http/...") response be case insensitive like 3.0
  (Rasmus)
- Allow cybercash to compile as a DL module. (Sterling)
- Fixed the dbase_create function. (Sterling)
- Fixed a problem under some versions of Windows that could cause PHP to hang
  on startup if errors occured, e.g. in the php.ini file (Zeev)
- Fixed opendir() again. It should actually work well continuously now (Zeev)
- Added three additional arguments to be sent to a user-defined error handler -
  the filename and line number in which the error occured, and the context
  (the local variables) of the error (Zeev, Zend Engine)
- Improved the error handling code to handle an error in a user-defined error
  handling function (Zeev, Zend Engine)
- Added an optional parameter to preg_replace() that can be used to
  specify how many replacements to make. (Andrei)

28 Jun 2000, Version 4.0.1
- Fixed a possible crash in the LDAP modify code. (Eric Kilfoil)
- Fixed a bug in opendir(), which prevented readdir() from working properly if
  the $dir argument wasn't explicitly specified (Zeev)
- Made --enable-discard-path work again. (Andi)
- Removed 8KB limit on line length of the file() function (Zeev)
- Disabled dl() when PHP is being used as a module inside a multithreaded web
  server - it didn't work before, and caused weird results (Zeev)
- Added the ImageColorClosestHWB(), ImageCopyMerge() and ImagePaletteCopy()
  functions. (Sterling)
- Added ImageCreateFromWBMP() function. (Jouni)
- Fixed problems with POST requests under the NSAPI module. (Roberto Biancardi)
- Added spliti() function. (Thies)
- Fixed serializer behaviour with regards to serializing objects whose class
  definition was not available in the deserializing context. (Sascha)
- Improve memory cache performance and increase cache size. (Stas, Zend Engine)
- Added a crc32 checksum function - used by the UdmSearch search engine
  and currently run through a system call. This will speed up the UdmSearch
  php frontend significantly. (Rasmus)
- Modified in_array() to not touch array pointer. (Andrei)
- Added restore_error_handler(). (Zeev, Zend Engine)
- Fixed erroneous file names and line numbers in error situations under the
  multithreaded version of PHP - most noticeably Win32 (Zeev, Zend Engine)
- Fixed problem with CGI crashing on certain servers especially Windows Apache
  & O'Reilly website (Andi)
- Added Pi3Web SAPI module; run ./configure --with-pi3web to enable this.
  (Holger; zimpel@t-online.de)
- Enhanced WDDX functions to call __sleep() and __wakeup() when working on
  objects. (Andrei)
- Changed WDDX to serialize arrays as structs only if needed. (Thies)
- Implemented max_execution_time under Win32 (Zeev)
- Updated strtotime() to handle many more formats. It now has complete
  feature parity with GNU date command. (Andrei)
- Added support for multiple arguments in unset(). (Faisal, Zend Engine)
- Functions that expect a resource but are passed something else now return
  NULL instead of FALSE. (Thies, Zend Engine)
- Fixed gmmktime(), on certain systems it incorrectly adjusted for the timezone
  offset and daylight savings time. (Andrei)
- Moved VC++ Win32 project and workspace files to the win32 directory
  (Zeev)
- Fixed checkdate() to not return true on non-numeric arguments (Rasmus)
- Added --enable-c9x-inline option for compilers which support the new C9x
  standard. If you encounter undefined references to i_zend_is_true and
  other symbols, you should enable this. (Sascha, Zend Library)
- Fixed a problem in ldap_add() and ldap_modify(), sometimes added trailing
  garbage to the values (Stig Venaas)
- Fixed a problem with dbmopen() not handing 'c' correctly with dbm/db/ndbm
  databases. (JimJag)
- Fixed a crash in number_format() when used with locales. (Andrei)
- Fixed an initialization problem in the MS-SQL problem that could cause
  a crash in mssql_query() (Zeev)
- Upgraded PCRE to version 3.2 and fixed a bug when anchored pattern
  matched an empty string. (Andrei)
- Fixed a bug that prevented PHP from paying attention to the extension_dir
  directive with extensions that were loaded from the php.ini file (Zeev)
- Changed set_error_handler() to return the name of the previously defined
  error handler, if any (Zeev, Zend Engine)
- Declared <?php_track_vars?> officially dead. It didn't work in PHP 4.0.0
  either, but now it's gone for good (Zeev)
- Make convert_cyr_string() binary safe and stop it from corrupting other
  PHP variables. (Andi)
- Added functions array_unique, array_intersect and array_diff (Stig Venaas)
- Fixed problem when using uninitialized values in comparisons with strings.
  They behave as empty strings again just like in PHP 3.
  (Andi & Zeev, Zend Engine)
- Fixed 'Z' flag in date() to adjust for daylight savings time. (Andrei)
- Fixed var_dump() not to modify the internal order of array elements (Zeev)
- Fixed stripcslashes() to remove to strip \ in unknown escapes instead of
  leaving it. (Andrei)
- Changed WDDX to always serialize arrays as structs. (Andrei)
- Fixed include_once() to issue a warning in case the supplied file name is
  not found (Zeev, Zend Engine)
- Fixed a bug in get_declared_classes() which could return the same class
  multiple times under certain circumstances (Zeev, Zend Engine)
- Fixed a bug in rawurldecode() that would cause in rawurldecode() corrupting
  its argument (Zeev)
- Parse errors (or other errors) in the php.ini files under Windows will no
  longer mess up the HTTP headers in CGI mode and are now displayed in a
  message box (Zeev)
- Fixed a crash in OCIFetchStatement() when trying to read after all data
  has already been read. (Thies)
- fopen_wrappers() are now extensible via modules (Hartmut Holzgraefe)
- Make trim strip \0 to match php 3 (Rasmus)
- Added function imagecreatefromxbm(). (Jouni)
- Added function imagewbmp(). (Jouni, based on patch from Rune Nordbøe
  Skillingstad)
- Added str_pad() for padding a string with an arbitrary string on left or
  right. (Andrei)
- Made the short_tags, asp_tags and allow_call_time_pass_reference INI
  directives work on a per-directory basis as well, e.g. from .htaccess
  files. (Zeev)
- Added fflush() function. (Eric Huss)
- Fixed a problem with static variables, default function arguments and class
  member variables, that contained array values. (Andi & Zeev, Zend Engine)
- Fixed virtual() when used with output buffering (Marc Pohl)
- Clean up constants in flock() function and add optional 3rd arg which
  is set to true on EWOULDBLOCK (Rasmus)
- Added functions pg_loimport(), pg_loexport(). (Jouni)
- Added SWF support to getimagesize() function (Derick Rethans)
- Added support for both indexed and non-indexed arrays of file uploads
  eg. name="file[]" type="file" (Rasmus)
- Added create_function(), which gives the ability to create functions
  on-the-fly (Zeev, Zend Engine)
- Added support for comparisons of arrays (with arrays) and objects (with
  objects); The equality operator (==) performs an unordered comparison,
  whereas the identity operator (===) performs an ordered comparison (Zeev,
  Zend Engine)
- Allow all functions that receive user-defined function callbacks to accept
  an array that contains an object and a method name, in place of a function
  name, e.g. usort($array, array($obj, "ObjSort")) (Zeev, Zend Engine)
- Added set_error_handler() to allow custom error handling functions,
  instead of the built-in error handling code (Zeev, Zend Engine)
- Renamed user_error() to trigger_error(); user_error() remains
  defined for compatibility (Zeev, Zend Engine)
- Fixed the global/static statements to require a trailing terminating
  semi-colon ';'. (Andi, Zend Engine)
- Cleaned up PCRE extension and made it binary-safe. (Andrei)
- Added third argument to in_array(). If it's true, then in_array()
  will use strict comparison instead of the default one. (Andrei)
- Added pg_trace() and pg_untrace (Dominic J. Eidson & Zeev)
- ignore_user_abort=Off is now default. (Thies)
- Added array_merge_recursive() that will recursively merge values
  under the same keys. (Andrei)
- fixed crash in OCIParse when parsing invalid SQL. (Thies)
- Fixed a bug in mysql_connect() that made it ignore the socket argument, in
  case of non-persistent connects (Zeev)
- Added disable_functions php.ini directive, to allow administrators to disable
  certain functions for security reasons (Zeev)
- Fixed sessions on Win32. When setting the directory depth parameter in
  save_path you need to now delimit it with a ';' instead of ':', e.g
  "5;/tmp" instead of "5:/tmp" (Andi)
- Changed the Apache handler's return status to 'Declined' when a requested
  PHP file could not be found. Returning 'Not Found' caused problems
  in the ErrorDocument handler stage in that $REDIRECT_REDIRECT_ERROR_NOTES
  was not getting set at all. Moving to 'Declined' should fix this and I
  can't see any other side effects. (Rasmus)
- Fixed scanning decimal numbers in internationalized environments. They should
  always be in standard US format e.g. 23.3. (Andi, Zend Engine)
- Added second argument to preg_quote() which allows quoting of
  one additional character, usually the regex delimiter. (Andrei)
- Uncommitted outstanding OCI8 transactions are now rolled back
  before the connection is closed. (Thies)
- ignore_user_abort() & friends should now work in CGI mode as well.
  (Patch by daniel.braun@ercom.fr)
- Added extension YAZ (dickmeiss).
- Fixed a crash bug triggered by certain cases of class redeclarations
  (Stas & Zeev, Zend Engine)
- Fixed min()/max() segfault. (Andrei)
- New module for reading EXIF header data from JPEG files. Most digital
  cameras will embed all sorts of information about a picture inside the
  jpeg images it generates. (Rasmus)
- Fixed basename() bug where "file.ext///" would not return the same
  as "/path/file.ext///" (Rasmus)
- Added the swf_ortho function. (Sterling)
- Moved to virtual current working directory support. This highly improves the
  functionality and stability of multi-threaded versions of PHP (Andi, Sascha)

22 May 2000, Version 4.0.0 Release
- Allow the writing of flash files to stdout.
- Fixed a crash bug in .phps syntax-highlighted files (Andi)
- Improved round() to allow specification of rounding precision.
  (Andrei, Todd Kirby <kirbyt@yahoo.com>)
- Added SORT_REGULAR, SORT_NUMERIC, SORT_STRING flags that can be used with
  non-user sort functions for precise sorting behavior. (Andrei)
- Fixed two 64-bit issues (startup crash, gethostbyaddr). (Sascha)
- NULL values are now preserved in the return value of mysql_fetch_array()
  and mysql_fetch_object(). (Andrei)
- Ported InterBase module finally from PHP 3 to PHP 4. Full support for
  InterBase 6. (Jouni)
- Added swf_definepoly for drawing polygons to the SWF functions. (Sterling)
- Ported imagegammacorrect from PHP3 to PHP4. (Sterling)
- Added array_rand() function. (Andrei)

8 May 2000, Version 4.0 Release Candidate 2
- NSAPI WIN32 Module compilable, untested (Shane)
- Apache WIN32 Module compilable and lightly tested. (Shane)
- Enabled assert() by default in php.ini-dist. (Andrei)
- Put in safeguards in case dynamic code evaluation in assert() and
  preg_replace() with /e modifier fails. (Andrei)
- Fixed infinite recursion when serializing $GLOBALS[] in WDDX. (Andrei)
- Made WDDX serialization properly escape <, >, and &. Also speeded up
  the serialization in general. (Andrei)
- Moved install-local to install-sapi for clarity. (Joey)
- Improved extension build framework. Refer to README.SELF-CONTAINED-EXTENSIONS
  for an introduction. (Sascha)
- ImagePolygon() is no longer limited by a maximum number of polygons.
  (Marc Pohl)
- Added configure time checking for bcmath package. (Joey, Sascha)
- Added get_declared_classes(). (Andrei, Zend Engine)
- Added initial NSAPI module from Jayakumar Muthukumarasamy. (Rasmus)
- Added the SWF module which allows you to create Macromedia Flash files via
  libswf. (Sterling)
- Improved UNIX build system to support more vendor make tools (Sascha)
- Updated natural comparison/sorting algorithm by Martin Pool
  <mbp@humbug.org.au>. (Andrei)
- Fixed a crash in array_multisort() that happened when empty arrays
  were passed to it. (Andrei)
- Added substr_count() from Peter Kovacs. (Andrei)
- Added an optional third argument to fseek to indicate where to seek from.
  (Andrei)
- OCIBindByName() will no longer complain about bindlength beeing zero. (Thies)
- Converted the IMAP module to the high performance API (Zeev)
- The fgetcsv() function now handles embedded end-of-line in a quoted field
  (Nick Talbott)
- Added user_error(), to allow explicitly generate error messages from scripts
  (Zeev, Zend Engine)
- Fixed a problem in long2ip() that occasionally returned incorrect IP address.
  (Evan, Andrei)
- Fixed many memory leaks in the IMAP module (Stas, Andi, Zeev)
- Fixed bug in number_format (Jon Forsberg)
- Make error_prepend_string and error_append_string work (Rasmus)
- array_walk() now automatically resets the array. (Andrei)
- Added natural comparison/sorting routines strnatcmp(), strnatcasecmp(),
  natsort(), and natcasesort(). These are useful for comparing and sorting
  strings that contain numbers. Based on the code from Martin Pool
  <mbp@humbug.org.au>. See http://www.linuxcare.com.au/projects/natsort/
  for more info on natural sorting. (Andrei)
- Zeus Webserver support (version 3.3.6+) for ISAPI (Ben Mansell)
- Fixed several problems with the PATH_TRANSLATED and PHP_SELF under Apache
  (Paul Gregg & Zeev)
- Ported ldap_get_values_len() function from PHP3 to PHP4. (Sterling)
- Fixed a problem in include_once() with non constant arguments (Andi & Zeev,
  Zend Engine)
- Added php.ini-optimized (Zeev)
- Ported ldap_errno(), ldap_err2str() and ldap_error() from PHP3 to PHP4.
  (Sterling)
- WDDX now defaults to ISO-8859-1. (Thies)
- Fixed crash resulting from IMAP's error handling (Stas)
- Added $HTTP_POST_FILES[filename][tmp_name] - it was previously impossible to
  retrieve the temporary name of an uploaded file using $HTTP_POST_FILES[]
  (Zeev)
- Made the IMAP and LDAP modules compilable under Windows and thread-safe
  (Zeev)
- Fixed a problem when dealing with large POST blocks in CGI mode (Zeev)
- Added session_get_cookie_params() function. (Sterling)
- Fixed return of stristr() to no longer always be lowercased. (Andrei)
- Changed the Windows version of PHP so that a php.ini file is no
  longer mandatory (Zeev)
- session_start() is now more verbose if headers cannot be send. (Thies)
- Fixed a memory leak when using assign-op bitwise operators on strings (Zeev,
  Zend Engine)
- Added support for reading properties that require arguments in the COM
  module - writing to them will only be supported in PHP 4.1 (Zeev)
- Fixed a very old legacy memory leak in the COM module (Zeev)
- Fixed problems with object-overloading support - noteably, COM and Java
  (Zeev, Zend Engine)
- Fixed an overrun in WDDX. (Thies)
- Fixed a crash bug with modules loaded through dl() not properly freeing their
  resources (Zeev, Zend Engine)
- Added localtime() function. (Sterling)
- Added the 'I' format option for the date function, this option will return
  true or false depending on whether or not daylight savings time is in effect.
(Sterling)
- Added gmstrftime() function. (Sterling)
- snmp_walkoid is now an alias for snmp_realwalk. (Sterling)
- Fixed a bug that could cause a crash when using 'global' inside large include
  files (Stas, Zend Engine)
- Added --enable-libgcc switch to force linking against libgcc (Sascha)
- Fixed dynamic loading where extension_dir had no trailing slash (Sascha)
- Fixed dynamic loading on OpenBSD (Sascha)
- Improved POSIX threads check. ZTS works now on at least Linux, Solaris,
  FreeBSD and OpenBSD (Sascha, TSRM)
- Added !== operator support. (Torben, Zend Engine)

27 March 2000, Version 4.0 Release Candidate 1
- Added support for UCD-SNMP 4.1.x (Sascha)
- Fixed a data corruption bug in mysql_result(), if used in table.fieldname
  mode (Zeev)
- Fixed a crash problem in func_num_args(), func_get_arg() and func_get_args()
  when used as function arguments (Andi, Zend Engine)
- Added get_class_methods(string classname) function. (Andrei)
- Added 'I' switch to test whether or not DST is active. (Sterling)
- Fixed a data corruption bug in mysql_result(), if used in table.fieldname
  mode (Zeev)
- Modified the registry INI entry reader (Win32) to work with drive letters.
  For example, if you wish to wish to specify INI entries for C:\foo\bar, you
  should create HKLM\PHP\Per Directory Values\C\foo\bar in the registry, and add
  string values for each directive you want to override in this directory (Zeev)
- Fixed extract() for EXTR_PREFIX_SAME and EXTR_SKIP cases. (Andrei)
- stristr() no longer modifies it's arguments. (Thies)
- Don't default to iso-8859-1 since this confuses some browsers. (Rasmus)
- Make it possible to specify both a port and a socket
  in mysql_[p]connect. (Rasmus)
- Added --disable-pic for disabling generating PIC for shared objects
  on platforms which support it (i.e. Linux) (Sascha)
- serialize()/unserialize() now call __sleep() and __wakeup() when
  working on objects. (Thies)
- renamed to_string() method to __string_value() for consistency.
  (Thies, Zend Engine)
- Fixed a bug in the third argument to define()
- Added is_numeric() that returns true if the argument is a number
  or a numeric string. (Andrei)
- domxml now supports libxml 2.0 Beta and drops support for older versions,
  due to massive changes in libxml
- fixed possible crash in unserialize() if serialized data was
  corrupted. (Thies)
- Changed $HTTP_STATE_VARS to $HTTP_SESSION_VARS. Use only the latter
  version now! (Andrei)
- Added GD-JPEG Support (Rasmus)
- Prevent from loading dynamic PHP modules which were compiled with different
  debug and thread safety modes than PHP, which resulted in a crash (Andi)
- connection_aborted() and friends work again (Thies)
- Upgraded to libtool 1.3.4 (Sascha)
- UNIX configure creates config.nice in the build directory now which allows
  easy reuse of configuration options (Sascha)
- Added support for embedded MySQL client library. Unless you specify a path
  to --with-mysql, the bundled MySQL client library will be used (Sascha)
- Added include_once() and require_once() functionality (Andi, Zend Engine)
- Removed support for pdflib < 3.0 (Uwe)
- Added auto-registration of everything in $HTTP_SESSION_VARS[] if
  register_globals is turned off. (Andrei)
- Cleaned up extension namespace (Stig)
- OCINLogon() sessions are now closed again. (Thies)
- Added ip2long() and long2ip(),
  courtesy of Faisal Nasim <faisal@nasim.org> (Andrei)
- Added ftruncate() and fstat(),
  courtesy of Faisal Nasim <faisal@nasim.org> (Andrei)
- Added parse_ini_file(). Currently implemented in non thread safe version
  of PHP, and currently lacks section support (Zeev)
- "none" is now equivalent with "" in Apache config directives (Stig)
- OCINLogon no longer crashes. (Thies)
- Fixed comparisons of (string) "nan" with (string) "nan". (Thies, Zend Engine)
- Switched back to the old $HTTP_*_VARS[] behavior - $HTTP_GET_VARS["foo"]
  and $foo are no longer references to each other, but separate variables
  like they were prior to PHP 4.0 Beta 4 (Zeev)
- Fixed Sybase-DB compilation (Zeev)
- Fixed a (fairly common) situation where error_reporting values would not be
  properly restored after a call to error_reporting(), in between requests
  (Zeev)
- The various $HTTP_*_VARS[] are now protected, and cannot be manipulated by
  user input (Zeev)
- Added ini_set() as an alias to ini_alter() (Zeev)
- The string None is now recognized as a keyword by the php.ini processor, and
  can be used to denote an empty string (Zeev)
- Added get_class_vars(string class_name) and get_object_vars(object obj)
  functions. (Andrei, Zend Engine)
- Added pdf_set_parameter(), pdf_skew(), pdf_show_boxed() (Uwe)
- Fixed comparison of (string) "inf" with (string) "inf", which was erroneously
  returning false (Zeev)
- Implemented default_charset and default_mimetype config directives (Stig)
- Ported T1lib support from PHP3. (Jouni)
- Fixed -DEAPI inheritance from APXS. (Sascha)
- Fixed possible crash in module-shutdown. (Thies)
- Fixed safe_mode_protected_env_vars INI directive (Zeev)
- Fixed getrusage() (Sascha)
- Fixed OCI8 crash when returning cursors from stored-procedures. (Thies)

21 February 2000 Version 4.0 Beta 4 patch level 1
- Fixed crash when magic_quotes were switched off. (Thies)
- Support for pdflib 2.30 (Uwe)

20 February 2000, Version 4.0 Beta 4
- Introduced $HTTP_POST_FILES[], that contains information about files uploaded
  through HTTP upload (Zeev)
- Made PHP work under Microsoft Personal Web Server, under both Windows NT
  workstation and Windows 95 (Zeev)
- Made multipart/form-data content obey to the variables_order directive (Zeev)
- Updated the browscap module to work with PHP 4.0 (Zeev)
- Recover gracefully in ISAPI after the client prematurely presses STOP (Andi)
- Fixed bug in unset() on array offsets which are referenced more than once
  (Andi, Zend Engine)
- Improved ISAPI module - it should no longer be necessary to set PHP as
  an ISAPI filter, only as an ISAPI extension, unless you wish to perform
  authentication using PHP. This didn't yet get enough testing, but it
  should work (Zeev)
- Fixed RFC1867 file upload under Windows (Zeev)
- Initital support for pdflib 2.20 (Uwe)
- Added PostgreSQL support for DB (Rui Hirokawa <louis@cityfujisawa.ne.jp>)
- Re-introduced "none" for disabling auto_prepend/append_file (Stig)
- Added DB/storage (Stig, PEAR)
- Introduced DB warnings (Stig, PEAR)
- Fixed overrun in strip_tags (Stas)
- Fixed crash in strip_tags() and related functions. (Thies)
- Workaround for bogus POST-Data from IE/Mac. (Thies)
  Patch by Alain Malek <alain@virtua.ch>
- Finished the server abstraction layer; All of the PHP code is now shared
  across different servers (Apache, CGI, IIS, etc.), except for thin
  interface modules (Zeev)
- Added NULL-support in gettype(). (Thies)
- base64_decode() will decode POST data correct. (Thies)
  Patch submitted by: Turadg Aleahmad <turadg@wise.berkeley.edu>
- Much more work on domxml. Build xml tree, create xml doc works (Uwe)
- Made foreach() work on objects. (Thies, Zend Engine)
- Added domxml extension based on libxml, still little functionality (Uwe)
- Fixed memory corruption in fgetss(), strip_tags() and gzgetss() (Zeev)
- Updated calendar dynamic library to work with PHP 4. (Evan)
- Added strncmp() function, courtesy of Walter. (Andrei)
- Made the output of var_dump() more informative. (Thies)
- Fixed some OCIBindByName() problems. (Thies)
- Protect the ISAPI module against exceptions. Stack overflows in scripts are
  now nicely detected and handled (Zeev)
- Fixed possible buffer-overflow in base64_decode. (Thies)
- Fixed possible buffer-overflow in setcookie(). (Thies)
- Fixed signal() bug that could cause the Apache master process to
  die. (Thies)
- Added session_set_cookie_params() function. (Andrei)
- If header information is sent after output has already been sent, the warning
  message will now state the filename and line number at which the first output
  was made (Zeev)
- Added the XML Expat library to the standard PHP source distribution thanks
  to its author James Clark (Andi & Zeev)
- Added XML support to the default Win32 build (Andi & Zeev)
- Added socket_get_status() function. Renamed:
    set_socket_timeout() -> socket_set_timeout()
    set_socket_blocking() -> socket_set_blocking(). (Andrei)
- Added realpath() function. (Andrei)
- mktime interprets years in the range 0-70 now as 2000-2070. You can
  continue to specify the complete year (i.e. 1920) (Sascha)
- Added the ability to control the environment variables the user is allowed
  to change in Safe Mode, using INI directives (Zeev)
- Fixed a crash bug in strtr() working on large input strings (Zeev)
- Ora_GetColumn()/Ora_FetchInto() now return NULL for NULL-Columns. (Thies)
- OCI8 now supports binding of NULL-values. Module cleanups. (Thies)
- Added ability to set timeout on socket read operations through
  set_socket_timeout() function. (Andrei)
- Added implicit_flush INI directive (Zeev)
- Added implicit_flush() to control whether flush() should be called
  implicitly after any output (Zeev)
- Fixed a crash in pfsockopen() (Zeev)
- Fixed a possible crash in phpinfo() (Zeev)
- Added register_argc_argv INI directive, to allow to selectively disable
  the declaration of the $argv and $argc variables for increased
  performance (Zeev)
- Added $HTTP_ENV_VARS[] and $HTTP_SERVER_VARS[] support, which similarly
  to $HTTP_GET_VARS[], contain environment and server variables. Setting
  register_globals to Off will now also prevent registration of the
  environment and server variables into the global scope (Zeev)
- Renamed gpc_globals INI directive to register_globals (Zeev)
- Introduced variables_order that deprecates gpc_order, and allows control
  over the server and environment variables, in addition to GET/POST/Cookies
  (Zeev)
- new function cpdf_set_document_limits() (Uwe)
- Applied safe-mode patch to popen(). (Patch by Kristian Köhntopp)
- str_repeat() now returns correct length. (Thies)
- Don't assume libz and libpng are installed for the GD checks (Rasmus)
- Implemented support for <boolean> and <null> types according
  to WDDX version 1.0 (Andrei)
- Made var_dump()/serialize()/unserialize() NULL aware. (Thies)
- Added new NULL constant (Zeev, Zend Engine)
- Fixed -c support in the standalone CGI binary (Zeev)
- Increased PHP's performance by 5-15% using a new memory cache (Andi & Zeev,
  Zend Engine)
- Improved the php.ini reader to support constants and bitwise operators (Zeev)
- Fixed strrev() to no longer modify arg1. (Thies)
- Fixed buffer overruns in iptcembed(). (Thies)
- Fixed a bug in ODBC error reporting (Zeev)
- Added PHP_Logo_GUID() and Zend_Logo_GUID() functions, that return the GUIDs
  of the PHP and Zend logos used in phpinfo() (Zeev)
- Added GNU Pth support (Sascha, TSRM library)
- Removed select(), fd_set() and fd_isset() - will be reimplemented soon! (Thies)
- Improved Win32 performance significantly by using different mutexes (Zeev,
  TSRM library)
- Made quotemeta() and preg_quote() binary-safe. (Andrei)
- Added UDP support in fsockopen(). (Evan)
- Added --disable-pear option (Andrei)
- Renamed libzend repository to Zend (Zeev)
- Added support for thttpd (Sascha)
- Added session.cache_limiter and cache_expire options (Sascha)
- Restored the PHP_VERSION and PHP_OS constants (Zeev)
- Added get_loaded_extensions(), extension_loaded(), and
  get_extension_funcs() functions. (Andrei)
- Added date/time stamping to PHP error log file. (Andrei, Joey)
- Added is_subclass_of() function (Andrei, Zend Engine)
- Implemented count_chars(). (Thies)
- Added class_exists() function (Andrei, Zend Engine)
- Made strspn() and strcspn() binary-safe. (Andrei)
- Added array_multisort() function. (Andrei)
- Made pageinfo.c thread-safe (Sascha)
- Made implode() binary-safe (Andrei)
- Made strstr(), stristr(), and ucwords() binary-safe() (Andrei)
- Made strtoupper(), strtolower(), substr_replace() binary-safe. (Andrei)
- Fixed a crash in the Apache syntax highlighting mode (Zeev)
- Report all ODBC error's not just the one on the top of the stack (lurcher)
- OCI8 now returns NULL values in LONG columns correct. (Thies)
- Added support for a C-like assert() function. (Thies)
- Added CyberCash support. (Evan)
- Made explode() binary-safe. (Thies)
- Made strpos() binary-safe. (Thies)
- Added XML_Set_Object() function, now you can use the XML-Parser from
  within an object. (Thies)
- Session vars are now decoded into $HTTP_STATE_VARS[] array and the
  globals, depending on track_vars and gpc_globals settings (Andrei)
- Added get_used_files() function - returns a hash mapping the use()'d files
  to their full path (Zeev)
- PHP 4 scripts will now obey the max_execution_time setting and actually
  time out (Rasmus)
- Added configure command to phpinfo() output (Stig)
- Added optional socket path to the mysql_?connect() functions (Rasmus)
- Made mysql and gd work as shared extensions again (Stig)
- Make the global GET/POST/Cookie variables and their $HTTP_*_VARS[] counterparts
  be references to each other (Zeev)
- Added support for the 'use' keyword - behaves like 'require', but will not
  use the same file more than once (Andi & Zeev, Zend Engine)
- Added check to see if a persistent connection is still valid with the
  ODBC interface before reusing (nick@easysoft.com)
- Added DBMaker support (patch by Pax Tsai <paxtsai@lion.syscom.com.tw>)
- Renamed "PECL" to "PEAR" (PHP Extension and Add-on Repository) (Stig)
- buildconf now uses build.mk (Stig)
- Disable symlinks to urls (Rasmus)
- Informix driver now reflects version of ESQL/C used (Danny)
- Modified session_register() to take variable number of arguments (Andrei)
- Fixed file descriptor leak in thread safe mode (Zeev, Zend Engine)
- Added select(), fd_set() and fd_isset() (Evan)
- cpdf support has been ported from php3, needs ClibPDF 2.x (Uwe)
- Fixed a leak when using automatic output buffering (Zeev)
- Introduced PECL - PHP Extension and Code Library
  (prounounced "pickle") (Stig)
- Fixed inconsistencies in the implementation of here-docs (Andi & Zeev, Zend
  library)
- Fixed a problem with constant class-member initializations (Andi & Zeev,
  Zend Engine)
- Fixed float-compare in min(),max(),a[r]sort(),[r]sort() (Thies)
- Implemented get_html_translation_table() function (Thies)
- Implemented array_flip() function. Returns input-array with key, value
  flipped (Thies)
- Added Berkeley DB3 support in DBA (Sascha)
- Implemented 2-Arg version of strtr($str,$translation_array). This can be used
  to revert what htmlspecialchars() did (Thies)
- Fixed mem-overwrite in XML_Parse_Into_Struct (Thies)
- Added substr_replace() function (Andrei)

November 16 1999, Version 4.0 Beta 3
- ucfirst()/ucwords() no longer modify arg1 (Thies)
- Fixed strtr() not to modify arg1 (Thies)
- Added Win32 build files for Informix driver and make it
  compile with ZTS (danny)
- Added tmpfile() function (Stig)
- Upgraded regex library to alpha3.8 (Sascha)
- Fixed selecting nested-tables in OCI8. (Thies)
- RFC-854 fix for internal FTP-Code. Commands have to end in "\r\n" (Thies)
- Fixed OpenLink ODBC support (Stig)
- min(),max(),a[r]sort(),[r]sort(),k[r]sort() now work consistent with the
  language-core. (Thies)
- tempnam() now uses mkstemp() if available (Stig)
- serialize() and var_dump() now honor the precision as set in php.ini
  for doubles. (Thies)
- Improved the Win32 COM module to support [out] parameters (Boris Wedl)
- Fixed garbage returned at the end of certain Sybase-Columns (Thies)
  Patch submitted by: neal@wanlink.com
- Added Microsoft SQL Server module for Win32 (Frank)
- Added support for forcing a variable number of internal function arguments
  by reference. (Andi & Zeev, Zend Engine)
- Implemented getprotoby{name,number} (Evan)
- Added array_pad() function. (Andrei)
- Added new getservby{name,port} functions. (Evan)
- Added session.cookie_path and session.cookie_domain (Sascha)
- Continue processing PHP_INI_SYSTEM knownDirectives after extension=
  (Sam Ruby)
- Enable IBM DB2 support - Tested against DB2 6.1 UDB on Linux (Rasmus)
- Added new str_repeat() function. (Andrei)
- Output-Buffering system is now Thread-Safe. (Thies)
- implemented OCI8 $lob->WriteToFile() function - very useful for streaming
  large amounts of LOB-Data without to need of a huge buffer. (Thies)
- Added session.use_cookies option (Sascha)
- Added getcwd() function. (Thies)
- XML_Parse_Into_Struct no longer eats data. (Thies)
- Fixed parse_url('-') crash. (Thies)
- added === operator support. (Andi & Thies, Zend Engine)
- unserialize() now gives a notice when passed invalid data. (Thies)
- Fixed shuffle() so that it no longer breaks on Solaris. (Andrei)
- Added is_resource(), is_bool() functions. (Thies)
- Cleaned up File-Module (Thies)
- Upgraded math-funtions to use new Zend function API (Thies)
- Fixed zombie problem in shell_exec() and $a = `some_command`
  constructs. (Thies)
- Thies introduced ZEND_FETCH_RESOURCE2 (Danny).
- Added Informix driver to list of maintained extensions. (Danny).
- Informix driver : Changed ifx.ec to use the new high-performance
  ZEND API. (Danny)
- IXF_LIBDIR environment variable specifies alternate Informix library
  path for configure (Danny).
- Fixed gmmktime() so that the following should always be true:
  gmmktime([args]) == mktime([args]) + date('Z', mktime([args])) (Jouni)
- setlocale doesn't anymore screw up things if you forgot to change it back
  to the original settings. (Jouni)
- Switched to new system where ChangeLog is automagically updated from commit
  messages. NEWS file is now the place for public announcements. (Andrei)
- Fixed refcount problem in XML module. (Thies)
- Fixed crash in HTTP_RAW_POST_DATA handling (Thies)
- You can use resources as array-indices again (Thies, Zend Engine)
- Fixed pg_fetch_array() with three arguments (Sascha)
  Patch submitted by: brian@soda.berkeley.edu
- Upgraded a lot internal functions to use new Zend function API (Thies)
- fdf support ported; not completely tested with latest version 4.0 for
  glibc (Uwe)
- OCI8 connections are now kept open as long as they are referenced (Thies)
- Cleaned up Directory-Module (Thies)
- Small fix in Ora_Close (Thies)
- Ported range() and shuffle() from PHP 3 to PHP 4 (Andrei)
- Fixed header("HTTP/..."); behaviour (Sascha)
- Improved UNIX build system. Now utilizes libtool (Sascha)
- Upgrade some more internal functions to use new Zend function API. (Thies,
  Zend Engine)
- Fixed backwards incompatibility with ereg() (Thies)
- Updated Zend garbage collection with a much more thorough method.
  (Andi, Zend Engine)
- Added the ability to use variable references in the array() construct.
  For example, array("foo" => &$foo). (Andi, Zend Engine)
- Added array_reverse() function (Andrei)
- Some more XML fixes/cleanups (Thies)
- Updated preg_replace() so that if any argument passed in is an array
  it will make a copy of each entry before converting it to string so that
  the original is intact. If the subject is an array then it will preserve
  the keys in the output as well (Andrei)
- Updated OCI8 to use the new high-performance Zend function API. (Thies)
- Configure speedup (Stig)
- Fixed LOB/Persistent-Connection related OCI8-Crash (Thies)
- Generalized server-API build procedure on UNIX (Stig)
- Added '--disable-rpath' option (Sascha)
- Added AOLserver SAPI module (Sascha)
- Fixed XML Callbacks. (Thies)
- Updated ODBC to use the new high-performance Zend function API (kara)
- Updated zlib to use the new high-performance Zend function API. (Stefan)
- Updated preg_split() to allow returning only non-empty pieces (Andrei)
- Updated PCRE to use the new high-performance Zend function API (Andrei)
- Updated session, dba, mhash, mcrypt, sysvshm, sysvsem, gettext modules to use
  the new high-performance Zend function API (Sascha)
- Extended var_dump to handle resource type somewhat (Andrei)
- Updated WDDX to use the new high-performance Zend function API (Andrei)
- Updated XML to use the new high-performance Zend function API. (Thies)
- Updated Oracle to use the new high-performance Zend function API. (Thies)
- Improved the performance of the MySQL module significantly by using the new
  high-performance Zend function API. (Zeev)
- Added support for the Easysoft ODBC-ODCB Bridge (martin@easysoft.com)
- Fixed bug in odbc_setoption, getParameter call incorrect (martin@easysoft.com)
- Ora_Fetch_Into now resets the returned array in all cases (Thies)
- Fixed NULL-Column problem in Oracle-Driver (Thies)
- Added extra metadata functions to ODBC, SQLTables etc (nick@easysoft.com)
- Fixed SEGV in mcal make_event_object() and
  typo in mcal_list_alarms() (Andrew Skalski)
- Fixed Ora_PLogon (Thies)
- Resourcified Oracle (Thies)
- Implemented object serialization/deserialization in WDDX (Andrei)
- Added krsort() function (Thies)
- Added func_num_args(), func_get_arg() and func_get_args() for standard
  access to variable number of arguments functions (Zeev)
- Added FTP support (Andrew Skalski)
- Added optional allowable_tags arguments to strip_tags(), gzgetss() and
  fgetss() to allow you to specify a string of tags that are not to be
  stripped (Rasmus)
- Upgraded var_dump() to take multiple arguments (Andrei)
- Resourcified XML (Thies)
- Fixed a memory leak in the Apache per-directory directives handler (Zeev)
- Added array_count_values() function. (Thies)
- snmp, pgsql, mysql and gd modules can be built as dynamically loaded
  modules (Greg)
- OCI8 fix for fetching empty LOBs (Thies)
- Added user-level callbacks for session module (Sascha)
- Added support for unknown POST content types (Zeev)
- Added "wddx" serialization handler for session module (Sascha)
  (automatically enabled, if you compile with --with-wddx)
- Fixed unserializing objects (Thies)
- PHP 4.0 now serializes Objects as 'O' (not understood by PHP 3.0), but
  unserializes PHP 3.0 serialized objects as expected. (Thies)
- Made serialize/unserialize work on classes. If the class is known at
  unserialize() time, you'll get back a fully working object! (Thies)
- Reworked preg_* functions according to the new PCRE API, which also made
  them behave much more like Perl ones (Andrei)
- Made it possible to specify external location of PCRE library (Andrei)
- Updated bundled PCRE library to version 2.08 (Andrei)
- count()/is_array/is_object... speedups. (Thies)
- OCI8 supports appending and positioning when saving LOBs (Thies)
- Added metaphone support (Thies)
- OCI8 doesn't use define callbacks any longer. (Thies)
- OCI8 Driver now supports LOBs like PHP 3.0. (Thies)
- var_dump now dumps the properties of an object (Thies)
- Rewrote the GET/POST/Cookie data reader to support multi-dimensional
  arrays! (Zeev)
- Renamed allow_builtin_links to expose_php (defaults to On). This directive
  tells PHP whether it may expose its existence to the outside world, e.g.
  by adding itself to the Web server header (Zeev)
- Added support for transparent session id propagation (Sascha)
- Made WDDX serialize object properties properly (Andrei)
- Fixed WDDX mem leak when undefined variable is passed in
  for serialization (Andrei)
- Added session_unset() function (Andrei)
- Fixed double session globals shutdown crash (Andrei)
- Fixed crash related to ignore_user_abort ini entry (Andrei)
- Added support for external entropy sources for session id creation
  (on Unices /dev/random and /dev/urandom) (Sascha)
- Added gpc_globals variable directive to php.ini. By default it is On, but
  if it is set to Off, GET, POST and Cookie variables will not be inserted
  to the global scope. Mostly makes sense when coupled with track_vars (Zeev)
- Added versioning support for shared library (Sascha)
  This allows concurrent use of PHP 3.0 and PHP 4.0 as Apache modules. See
  the end of the INSTALL file for more information.
- Added second parameter to array_keys which specifies search value
  for which the key should be returned (Andrei)
- Resourcified Informix driver (Danny)
- New resource handling for odbc, renamed to php_odbc.[ch]
- Make set_time_limit() work on Unix (Rasmus)
- Added connection handling support (Rasmus)
- Improved the Sybase-CT module to make use of resources (Zeev)
- Improved the mSQL module to make use of resources (Zeev)
- Changed mysql_query() and mysql_db_query() to return false in case of saving
  the result set data fails (Zeev)
- Improved the resource mechanism - resources were not getting freed as soon
  as they could (Zeev)
- Added shared memory module for session data storage (Sascha)
- Fixed session.auto_start (Sascha)
- Fixed several problems with output buffering and HEAD requests (Zeev)
- Fixed HTTP Status code issue with ISAPI module (Zeev)
- Fixed a problem that prevented $GLOBALS from working properly (Zeev, Zend
  library)
- Ported newest GetImageSize (Thies)
- Added session compile support in Win32 (Andi)
- Added -d switch to the CGI binary that allows overriding php.ini values
  from the command line (Zeev)
- Fixed a crash that would occur if wddx_deserialize did not receive
  a valid packet (Andrei)
- Fixed a bugglet when redefining a class at run-time (Andi, Zend Engine)
- Fixed sem_get() on AIX (Sascha)
- Fixed fopen() to work with URL's in Win32 (Andi & Zeev)
- Fixed include_path for Win32 (Andi, Zend Engine)
- Fixed bug in ISAPI header sending function (Charles)
- Fixed memory leak when using undefined values (Andi & Zeev, Zend Engine)
- Added output_buffering directive to php.ini, to enable output buffering
  for all PHP scripts - default is off (Zeev).
- Fixed some more class inheritance issues (Zeev, Zend Engine)
- Fixed Apache build wrt to shared modules on FreeBSD/Linux (Sascha)
- Added session.extern_referer_chk which checks whether session ids were
  referred to by an external site and eliminates them (Sascha)
- Improved session id generation (Sascha)
- Improved speed of uniqid() by using the combined LCG and removing
  the extra usleep() (Sascha)
- Introduced general combined linear congruential generator (Sascha)
- Made ldap_close back into an alias for ldap_unbind (Andrei)
- OciFetchInto now resets the returned array in all cases (Thies)
- Fixed mysql_errno() to work with recent versions of MySQL (Zeev)
- Fixed a problem with define() and boolean values (Zeev)
- Fixed inclusion of gd/freetype functions (Sascha)
- Fixed persistency of MHASH_* constants (Sascha)
- Oracle is now ZTS-Safe (Thies)
- Fixed flushing of cached information to disk in DBA's DB2 module (Sascha)
- OCI8 is now ZTS-Safe (Thies)
- Fixed is_writeable/is_writable problem; they are both defined now (Andrei)
- Imported PHP 3.0 diskfreespace() function (Thies)
- Fixed thread-safety issues in the MySQL module (Zeev)
- Fixed thread-safe support for dynamic modules (Zeev)
- Fixed Sybase CT build process (Zeev)

August 9 1999, Version 4.0 Beta 2
- Fixed a problem when sending HTTP/1.x header lines using header() (Zeev)
- Win32 builds now include the ODBC module built-in (Zeev)
- Fixed SYSV-SHM interface (Thies).
- Updated hyperwave module, made it thread safe
- Updated pdflib module, version 0.6 of pdflib no longer supported
- Updated fdf module
- Built-in phpinfo() links are now turned off by default. They can be turned
  on using the allow_builtin_links INI directive (Zeev)
- Changed phpinfo() to list modules that have no info function (Zeev)
- Modified array_walk() function so that the userland callback is passed
  a key and possible user data in addition to the value (Andrei)
- Fixed ldap_search(), ldap_read() and ldap_list() (Zeev)
- Fixed Apache information in phpinfo() (sam@breakfree.com)
- Improved register_shutdown_function() - you may now supply arguments that
  will be passed to the shutdown function (Zeev)
- Improved call_user_func() and call_user_method() - they now support passing
  arguments by reference (Zeev)
- Fixed usort() and uksort() (Zeev)
- Fixed md5() in the Apache module (Thies)
- Introduced build process for dynamic modules (Stig)
- Improved ISAPI module to supprt large server variables (Zeev)
- Imported PHP 3.0 fixes for problem with PHP as a dynamic module and Redhat
  libc2.1 in zlib module (Stefan)
- Fixed sybase_fetch_object() (Zeev)
- Made the IMAP module work with PHP 4.0 (Zeev)
- Fixed a problem with include()/require() of URLs (Sascha, Zeev)
- Fixed a bug in implode() that caused it to corrupt its arguments (Zeev)
- Added get_class($obj), get_parent_class($obj) and method_exists($obj,"name")
  (Andi & Zeev)
- Fixed various inheritance problems (Andi & Zeev, Zend Engine)
- Children now inherit their parent's constructor, if they do not supply a
  constructor of their own.
- Fixed runtime inheritance of classes (parent methods/properties were
  overriding their children) (Zeev, Zend Engine)
- Fixed backwards incompatibility with the "new" operator (Andi, Zend Engine)
- Fixed bugs in uksort() and ksort() sort ordering (Andrei)
- Fixed a memory leak when using assignment-op operators with lvalue of type
  string (Zeev, Zend Engine)
- Fixed a problem in inheritance from classes that are defined in include()d
  files (Zeev, Zend Engine)
- Fixed a problem with the PHP error handler that could result in a crash
  on certain operating systems (Zeev)
- Apache php_flag values only recognized 'On' (case sensitive) - changed
  to case insensitive (Zeev)
- Fixed a memory leak with switch statement containing return statements
  (Andi & Zeev, Zend Engine)
- Fixed a crash problem in switch statements that had a string offset
  as a conditional (Andi & Zeev, Zend Engine)
- Imported PHP 3.0 fixes for rand() and mt_rand() (Rasmus)
- Added function entries for strip_tags() and similar_text() (Andrei)
- Fixed a bug in WDDX that would cause a crash if a number was passed in
  instead of a variable name (Andrei)
- Ported strtotime() function from PHP 3.0 (Andrei)
- Merged in gdttf stuff from PHP 3.0 (Sascha)
- buildconf now checks your installation (Stig)
- XML module now built dynamically with --with-xml=shared (Stig)
- Added a check for freetype.h - fixed build on RedHat 6.0 (Zeev)
- Fixed array_walk() to work in PHP 4.0 (Andrei)
- Ported all remaining date() format options from PHP 3.0 (Andrei)
- $php_errormsg now works (Andrei)
- Added locale support for Perl Compatible Regexp functions (Andrei)
- Informix module ported (Danny)
- Removed --with-shared-apache (Sascha)
- Added patch for reverse lookup table in base64_decode (Sascha)
  Submitted by bfranklin@dct.com
- Merged in PHP 3.0 version of str_replace (Sascha)
- Added DBA module (Sascha)
- Added session id detection within REQUEST_URI (Sascha)
- Merged in HP-UX/ANSI compatibility switch from PHP 3.0 (Sascha)
- Fixed rpath handling for utilitites built during Apache build (Sascha)
- Added missing E_ error level constants (Zeev, Zend Engine)
- Fixed a bug in sending multiple HTTP Cookies under Apache (Zeev)
- Fixed implicit connect on the MySQL, mSQL, PostgreSQL and Sybase
  modules (Zeev)
- Gave PHP 4.0's SNMP extension all the functionality of PHP 3.0.12 (SteveL)
  
July 19 1999, Version 4.0 Beta 1
- First public beta of PHP 4.0
Something went wrong with that request. Please try again.