Compare commits

..
649 Commits
Author SHA1 Message Date
SVN Migration c89cf742c4 This commit was manufactured by cvs2svn to create tag 'php_5_2_6'. 2008-04-30 18:27:57 +00:00
Ilia Alshanetsky 6a7f02001d 5.2.6 2008-04-30 18:27:56 +00:00
Ant Phillips ab211d72a3 Fix session test failures as reported by Antony Dovgal.
These were caused by the tests assuming default values for some session
configuration settings, in particular session.save_path and session.name.
The tests now explicitly set these settings in the --INI-- section.
2008-04-30 15:20:16 +00:00
Ant Phillips 3946b4727b Break up complicated rename tests into some smaller more consumable chunks 2008-04-30 13:53:49 +00:00
Ant Phillips 3a30d703c0 Fix session test failures as reported by Antony Dovgal.
These were caused by the tests assuming default values for some session
configuration settings, in particular session.save_path and session.name.
The tests now explicitly set these settings in the --INI-- section.
2008-04-30 09:27:59 +00:00
Scott MacVicar ad86c485cd MFH Fixed bug #44720 (Prevent infinite recursion within session_register) 2008-04-29 14:42:38 +00:00
Ant Phillips 597adbfef1 More session tests to improve code coverage for untested extension code 2008-04-29 09:24:17 +00:00
Ant Phillips 2d2ad8e8d3 More session tests to improve code coverage for untested extension code 2008-04-29 08:57:12 +00:00
Jani Taskinen f2c9167ebb MFH 2008-04-28 12:30:33 +00:00
Ant Phillips 0ccb772f10 Extra open_basedir tests 2008-04-24 16:40:53 +00:00
Ant Phillips 138a1160ab Allow for chmod() to fail on symbolic links 2008-04-24 13:58:29 +00:00
Ant Phillips e9da49eaf5 open_basedir tests for file system functions (v5.2, 5.3 and 6.0 branches) 2008-04-23 14:10:23 +00:00
Ant Phillips 64de2d2d45 New set of session extension tests for PHP 5.2 branch.
These hopefully test a reasonable set of basic, error and variations for
the twenty or so session functions. Note however that they do not
test all the session configuration settings, nor do they test anything
with register_globals enabled.
2008-04-22 16:04:00 +00:00
Ant Phillips 1f4fa0ba1f These tests were backported from the PHP 6.0 branch, which in turn were ported from this branch and then updated to remove any dependencies on register_globals. With register_globals removed they are useful tests to run against the 5.X branches. 2008-04-22 15:58:34 +00:00
Robin Fernandes 1d943ee85e Fix some ereg tests for 64bit platforms. 2008-04-22 15:31:56 +00:00
Felipe Pena 5c605854b8 - Fixed tests 2008-04-20 01:55:05 +00:00
Felipe Pena 11d09ac646 - Better error message 2008-04-20 01:43:18 +00:00
Antony Dovgal 269aac9ee9 fix test 2008-04-18 08:22:01 +00:00
Ilia Alshanetsky 7204e7ba5a BFN 2008-04-18 01:00:56 +00:00
Antony Dovgal 59dde7cbeb make Matt happy =) 2008-04-17 11:48:53 +00:00
Felipe Pena 11a13337ff - Fix typo 2008-04-17 11:04:49 +00:00
Derick Rethans 8649483a69 - Fixed bug #44703 (htmlspecialchars() does not detect bad character set
argument).
2008-04-16 17:21:46 +00:00
Antony Dovgal d9b443095f change %d to %ld and silence the warning 2008-04-16 08:54:44 +00:00
Felipe Pena 9db0be61ad Fixed bug #44703 (htmlspecialchars() does not detect bad character set argument) (patch by Andy Wharmby) 2008-04-11 19:01:25 +00:00
Robin Fernandes 29c12bd254 Fix test parse_url_variation_002.phpt for 64bit platforms. 2008-04-11 14:35:04 +00:00
Antony Dovgal ef1f2c1b7b fix tests 2008-04-11 11:06:18 +00:00
Antony Dovgal 1e20b1ed7d MFH: fix 2 segfaults in ZTS mode 2008-04-11 11:00:24 +00:00
Steve Seear 9d700f942f POSIX extension error tests 2008-04-11 09:32:32 +00:00
Steve Seear 35ca4a5cb4 POSIX extension variation tests 2008-04-11 09:27:42 +00:00
Robin Fernandes fdb9b9d8c8 Adding some tests for ereg and url functions. 2008-04-11 08:57:11 +00:00
Ilia Alshanetsky a1f0e80436 Back to dev 2008-04-10 22:31:09 +00:00
Ilia Alshanetsky 1e29c1716d 5.2.6RC5 2008-04-10 22:24:05 +00:00
Christopher Jones 7788b67557 Bump OCI8 version to 1.2.5 (This change is for 5.2 branch only) 2008-04-10 21:53:46 +00:00
Nuno Lopes 5baa766b21 MFB53 2008-04-10 19:16:00 +00:00
Nuno Lopes 60d622bdb0 MFB5.3: fix SKIPIF 2008-04-10 19:09:49 +00:00
Philip Olson 63ca897356 MFH: Updated the documentation credits 2008-04-10 05:32:26 +00:00
Scott MacVicar b584600e1d Fix heredoc handling. (Patch by Matt Wilmas) 2008-04-09 21:40:13 +00:00
Felipe Pena 52127174e2 Fixed bug #44678 (spliti error message includes wrong function name) 2008-04-09 13:47:35 +00:00
Dmitry Stogov a548d2f19b Fixed bug #44673 (With CGI argv/argc starts from arguments, not from script) 2008-04-09 09:16:40 +00:00
Ilia Alshanetsky edf54b5468 MFB: Bug #44650 escaepshellscmd() does not check arg count (port from 5.3) 2008-04-08 17:17:07 +00:00
Joe Orton 8611785073 MFH: Fixed bug #32979 (OpenSSL stream->fd casts broken in 64-bit build)
(stotty at tvnet dot hu)
MFH: Fix another case of a broken stream->fd cast in 64-bit builds.
2008-04-08 14:11:49 +00:00
Jani Taskinen 8f6f281866 MFH: Fixed test on systems where order is not guaranteed 2008-04-08 10:35:36 +00:00
Jani Taskinen a9f2587716 MFH: - Fixed bug #44667 (proc_open() does not handle pipes with the mode "wb" correctly) 2008-04-08 08:45:52 +00:00
Jani Taskinen 5f7df8099a MF53: Fix tests 2008-04-08 08:45:04 +00:00
Ilia Alshanetsky b615180021 MFB: various bug fixes 2008-04-08 00:03:34 +00:00
Antony Dovgal 7a4f2f9a00 fix test 2008-04-07 12:14:46 +00:00
Antony Dovgal 339414deea initialize variable 2008-04-07 10:44:03 +00:00
Marcus Boerger 98f4d8c5f6 - MFH add new tests 2008-04-06 17:53:35 +00:00
Felipe Pena e8795126ea Fixed bug #44591 (imagegif's filename parameter) 2008-04-04 17:39:52 +00:00
Derick Rethans d80a51181a - Fixed typo. 2008-04-04 07:26:41 +00:00
Ilia Alshanetsky cb9be83c31 Back to dev 2008-04-04 00:16:53 +00:00
Ilia Alshanetsky 62c865e21f 5.2.6RC4 2008-04-04 00:12:22 +00:00
Felipe Pena 1054bfbb0b - Fixed tests 2008-04-03 22:01:59 +00:00
Dmitry Stogov 889ba3c824 fixed name 2008-04-03 14:44:19 +00:00
Dmitry Stogov 1dd17ad54a - Fixed possible stack buffer overflow in FastCGI SAPI. (Andrey Nigmatulin)
- Fixed sending of uninitialized paddings which may contain some information.
  (Andrey Nigmatulin)
2008-04-03 10:24:44 +00:00
Ilia Alshanetsky 357cadb362 MFB: imap bug fixes 2008-04-02 16:31:51 +00:00
Antony Dovgal 8f16e0b75c MFH 2008-04-02 14:56:43 +00:00
Derick Rethans b0b7f4eed1 - MFH: Fixed a bug in formatting timestamps when DST is active in the default
timezone.
2008-03-31 09:12:15 +00:00
Felipe Pena 3e663ebfef Fixed bug #44564 (escapeshellarg removes UTF-8 multi-byte characters) 2008-03-30 12:17:39 +00:00
Felipe Pena fd6f77d569 Fixed bug #44557 (Crash in imap_setacl when supplied integer as username) (patch by Thomas Jarosch) 2008-03-28 16:43:49 +00:00
Ilia Alshanetsky dd040e75c3 Back to dev 2008-03-27 22:53:49 +00:00
Ilia Alshanetsky 1de0c2f27c 5.2.6RC3 2008-03-27 22:44:02 +00:00
Andrey Hristov 64af7df7d0 Recreate 2008-03-27 14:48:00 +00:00
Jani Taskinen 40655e4104 MF53:- Fix test (readdir() does not sort the results..) 2008-03-27 10:45:06 +00:00
Steve Seear 8cc6227b45 Adding tests for gethostbyaddr() and gethostbynamel() 2008-03-26 18:18:07 +00:00
Marcus Boerger 13a67db7f5 MFH:
- Fix memory leak found by Osman
- Merge strlen to sizof change from CLI
2008-03-26 13:21:57 +00:00
Antony Dovgal b103a34cda MFH: check if return value of write() is -1 and abort upload, setting the correct error status 2008-03-26 12:59:42 +00:00
Dmitry Stogov c6aef571dd Fixed test (removed leaks becaue of cyrcular references) 2008-03-25 07:01:22 +00:00
Antony Dovgal 00779cc424 MFH: disabled mmap() when copying files to memory 2008-03-24 16:28:56 +00:00
Derick Rethans 94cfbb5448 - Updated to version 2008.2 (2008b) 2008-03-24 13:01:10 +00:00
Dmitry Stogov 193801fbda Fixed tests (file order is undefined, so we need to sort() them) 2008-03-24 09:00:18 +00:00
Marcus Boerger 7e071024d3 - MFH Add .cvsignore 2008-03-23 16:53:57 +00:00
Marcus Boerger 03c3cfbde3 - MFH Add tests 2008-03-23 13:39:27 +00:00
Marcus Boerger 978886a3a8 - Make multibyte a tad bit less crappy 2008-03-22 18:53:08 +00:00
Antony Dovgal 708cbe15d1 add missing .cvsignore 2008-03-21 08:30:02 +00:00
Antony Dovgal 28331f99e2 fix ZTS build 2008-03-21 08:28:36 +00:00
Ilia Alshanetsky 8c4653fbb6 MFB: Refine fix for multibyte char hanling inside command names and args 2008-03-20 23:25:42 +00:00
Rob Richards 5a94926037 BFN
re-order
2008-03-20 16:49:41 +00:00
Rob Richards 4a4711eb36 MFH: fix bug #44478 (Inconsistent behaviour when assigning new nodes)
add test
2008-03-20 16:48:45 +00:00
Antony Dovgal 3baf31907a MFH 2008-03-20 12:14:15 +00:00
Antony Dovgal 83a3d76e37 fix tests 2008-03-20 11:34:50 +00:00
David Soria Parra bb4e8b10e3 MFH: Fix bug #44487 (call_user_method_array issues a warning when throwing an exception). 2008-03-20 00:55:26 +00:00
Steve Seear bc8c649878 Adding language tests. 2008-03-19 18:06:26 +00:00
Steve Seear 9e8d58e54b Added some class tests; Replaced some hardcoded instance ids with %d. 2008-03-19 17:56:12 +00:00
Steve Seear c441dafbf4 Adding tokenizer test 2008-03-19 17:43:52 +00:00
Steve Seear 6744f65d51 Adding streams tests 2008-03-19 17:38:25 +00:00
Steve Seear 946190d453 Adding filesystem tests 2008-03-19 17:23:29 +00:00
Antony Dovgal 236b0c1bde fix test 2008-03-19 12:36:17 +00:00
Dmitry Stogov 9b8fdcf63f Fixed test 2008-03-19 09:17:21 +00:00
Felipe Pena b781627d85 Fixed bug #43614 (incorrect processing of numerical string keys of array in arbitrary serialized data) 2008-03-19 03:00:40 +00:00
Ilia Alshanetsky 34f0981808 MFB: Bug #44445 (email validator does not handle domains starting/ending
with a -)
2008-03-18 23:32:42 +00:00
Robin Fernandes dc2a59a970 Adding more tests for serialize() and unserialize(). 2008-03-18 15:11:12 +00:00
Felipe Pena d202354263 Fix build 2008-03-18 00:25:24 +00:00
Stanislav Malyshev 7be2f35865 report printf fix 2008-03-17 23:09:06 +00:00
Ilia Alshanetsky 233c3ade12 MFB: Properly address incomplete multibyte chars inside escapeshellcmd() 2008-03-17 23:02:26 +00:00
Stanislav Malyshev 5273e2163b fix integer overflow in length calculation 2008-03-17 23:00:41 +00:00
Josie Messa 9a859a31ab - new tests for ctype functions 2008-03-17 09:50:42 +00:00
Derick Rethans d1e3634d13 - Updated to version 2008.1 (2008a) 2008-03-16 07:22:10 +00:00
Felipe Pena 681859cdc4 BFN: #41828, #44440 2008-03-15 10:46:48 +00:00
Felipe Pena 27f2d54784 Fixed bug #44440 (st_blocks undefined under BeOS) 2008-03-15 10:28:53 +00:00
Felipe Pena 655610a5bb Add SKIPIF (32bit platform only) 2008-03-14 23:13:07 +00:00
Ilia Alshanetsky 62b1449e47 Fixed bug #43677 (Inconsistent behaviour of include_path set with
php_value).
2008-03-13 15:56:21 +00:00
Felipe Pena a8fc46afa7 Fix valgrind version validation (accepting "valgrind-3.2.1-Debian") 2008-03-13 13:51:40 +00:00
Felipe Pena 3958a09990 Sync with fix for #44394 2008-03-12 19:33:46 +00:00
Felipe Pena 69663666c1 Fixed bug #42177 (Warning "array_merge_recursive(): recursion detected" comes again...) 2008-03-12 19:13:00 +00:00
Christopher Jones 0befe23833 MFH: New test for existing behavior 2008-03-12 17:52:48 +00:00
Ilia Alshanetsky 0f1e56bc3a MFB: Fixed bug #44388 (Crash inside exif_read_data() on invalid images) 2008-03-12 17:33:14 +00:00
Etienne Kneuss f2c14fd8b0 Fix bug #41828 (Fix crash on wrong instantiation) 2008-03-12 13:24:24 +00:00
Felipe Pena a000cbd955 Fixed bug #44394 (Last two bytes missing from output) 2008-03-12 11:27:42 +00:00
Antony Dovgal 40f85eb585 MFH: fix segfault - error_string may be NULL, in this case we have to follow the old behavior 2008-03-11 10:27:23 +00:00
Josie Messa c857ec6c98 - Replace with previous commit 2008-03-11 10:15:18 +00:00
Josie Messa 02be1a8d19 - Fix test 2008-03-11 10:01:31 +00:00
Josie Messa 052670121b - Modified tests 2008-03-11 09:55:26 +00:00
Josie Messa 2a93e109e1 - Added extra whitespace around error messages in expected output 2008-03-11 09:45:30 +00:00
Andrey Hristov 031e443b44 char **error_string was passed but not used. This causes problems in cases
of getaddrinfo() failure, because the upper layers don't get the error.
initialize a variable because we were reading initialized in case of error.
2008-03-10 20:09:22 +00:00
Josie Messa 977f7b6716 - New tests for getcwd() function 2008-03-10 15:21:17 +00:00
Josie Messa 63c1185096 - Modified expected output to allow tests to work on all platforms 2008-03-10 15:07:20 +00:00
Felipe Pena d4888d7410 Fixed compilation warnings 2008-03-10 14:54:47 +00:00
Josie Messa 14a393d6a2 - New tests for scandir() function 2008-03-10 14:09:05 +00:00
Felipe Pena d39fbb1548 Fix typo (#44381) 2008-03-09 16:06:33 +00:00
David Coallier ff962d9de1 - MFH . Libxml version < 2.6.21 it fails. Patch from scoates 2008-03-08 19:14:38 +00:00
Zoe Slattery 4ec1845b52 Countable requires SPL 2008-03-08 17:13:06 +00:00
Andrey Hristov ecf84f8b6b Fix introduced in 5.0.46, not in 5.0.42 2008-03-08 14:59:37 +00:00
Felipe Pena 1c9c9daa78 BFN: #44373 2008-03-08 14:10:34 +00:00
Felipe Pena e1cf7f0ca6 Fixed bug #44373 (PDO_OCI extension compile failed) 2008-03-08 14:01:49 +00:00
Nuno Lopes 2e161037fa MFB53 skipif patch as asked by gentoo guys 2008-03-08 12:12:22 +00:00
Pierre Joye 6d3101b8f4 - #44355, compilation breaks due illegal const usage (Guenter Knauf)
I suppose it must break on other platform, it is not used anywhere else
  but here, and it was introduced after 5.2.5 (why no news)
2008-03-07 18:41:02 +00:00
Josie Messa 1b07a0988b - Tests awaiting fix of bug #44246 2008-03-07 16:19:40 +00:00
Josie Messa 46db94819f - New tests for rewinddir() function 2008-03-07 16:08:59 +00:00
Josie Messa f9f818959a - New tests for closedir() function 2008-03-07 15:58:39 +00:00
Scott MacVicar 216e57bf23 Typo, bundled version is really 3.3.7 2008-03-07 10:38:33 +00:00
Antony Dovgal 77f40d6d5b fix build 2008-03-07 08:56:45 +00:00
Stanislav Malyshev 0d6cdac9ff improve seed calculation
# better solution would be to port mt's multi-value seed procedure
2008-03-07 03:34:47 +00:00
Ilia Alshanetsky 3e51cc7a8c Back to dev 2008-03-07 00:36:12 +00:00
Ilia Alshanetsky d4689143e1 5.2.6RC2 2008-03-07 00:27:39 +00:00
Antony Dovgal ba9ad966c3 MFH: fix segfault when trying to clone uncloneable object 2008-03-06 17:28:47 +00:00
Robin Fernandes 1af0116cf0 Add new tests for class/object functions and features. 2008-03-06 10:56:07 +00:00
Ilia Alshanetsky abc6363462 MFB: Revert patch for bug #44325 2008-03-05 23:53:23 +00:00
Pierre Joye 77fee69a7e - #40013, php_uname() does not return nodename on Netware (Guenter Knauf) 2008-03-05 21:09:29 +00:00
Pierre Joye 38b94446a4 - #42505, new sendmail default path breaks on Novell (Guenter Knauf) 2008-03-05 20:58:08 +00:00
Jani Taskinen 2a4a4fbcaf MF53: Fix tests 2008-03-05 15:37:53 +00:00
Jani Taskinen 90f420baa5 - fix test (MF53) 2008-03-05 15:12:27 +00:00
Antony Dovgal 6eee168067 add missing .cvsignore 2008-03-05 12:13:00 +00:00
Jani Taskinen 26116d7285 - Fix tests 2008-03-05 12:10:38 +00:00
Antony Dovgal eb81041b0a MFH: apply better fix 2008-03-05 12:10:18 +00:00
Antony Dovgal 1a65748249 cosmetic fixes 2008-03-05 10:46:46 +00:00
Antony Dovgal 31683f4bfa MFH: fix memory corruption due to double destruction of default dir handle 2008-03-05 09:29:37 +00:00
Felipe Pena b47aea1094 Fixed bug #44333 (SEGFAULT when using mysql_pconnect() with client_flags) 2008-03-04 22:25:35 +00:00
Ilia Alshanetsky c36af9e2b5 MFB: Fixed bug #44325 (mssql_bind not correctly bind empty strings as
parameter value)
2008-03-04 19:39:08 +00:00
Josie Messa 6d48ddaf8f - new tests for readdir() function 2008-03-04 17:06:47 +00:00
Zoe Slattery 77a1339755 re-fixing to skip on 64 bit 2008-03-04 13:25:30 +00:00
Dmitry Stogov f4068e65ba Fixed SIGSEGV because of acess to uninitialized data 2008-03-04 12:23:10 +00:00
Dmitry Stogov 0d7d139700 Fixed wrong result of cascading assignment to string offset 2008-03-04 11:49:31 +00:00
Dmitry Stogov 43a9fd4c4a Fixed wrong result of cascading assignment to string offset
Fixed memory corruption on cascading assignment of IS_TMP_VAR into string offset
Fixed opcode caches shared memory corruption on cascading assignment of IS_CONST into string offset
2008-03-04 11:48:53 +00:00
Dmitry Stogov 7089db25e0 Fixed shared memory corruption of opcode caches 2008-03-04 11:46:09 +00:00
Antony Dovgal f3213ecacd MFH 2008-03-04 11:16:39 +00:00
Josie Messa 94565fb450 - new tests for opendir() function 2008-03-04 10:39:32 +00:00
Ilia Alshanetsky 0418676cc6 MFB: Fixed bug #44166 (Parameter handling flaw in
PDO::getAvailableDrivers())
2008-03-03 21:14:33 +00:00
Ilia Alshanetsky 5d66c33385 MFB: Fixed bug #44166 (Parameter handling flaw in
PDO::getAvailableDrivers())
2008-03-03 21:14:19 +00:00
Ilia Alshanetsky c4d4183f96 MFB: Fixed bug #44306 (Better detection of MIPS processors on Windows) 2008-03-02 15:36:09 +00:00
Ilia Alshanetsky 73550dd6b5 Set proper RC version (Thanks Hannes) 2008-02-28 15:36:07 +00:00
Ilia Alshanetsky 0dd068331a Back to dev 2008-02-28 00:35:26 +00:00
Ilia Alshanetsky 743bb87a57 5.2.6RC1 2008-02-28 00:30:35 +00:00
Ilia Alshanetsky 9c3f699ed8 Fixed security issue detailed in CVE-2008-0599 2008-02-28 00:29:29 +00:00
Antony Dovgal 0c0fb4be83 MFH 2008-02-27 09:35:10 +00:00
Felipe Pena 5db9cbbc40 MFB: Fixed bug #43559 (array_merge_recursive() doesn't behave as expected with duplicate NULL values) 2008-02-27 02:04:09 +00:00
Felipe Pena 45e379b49d Improved fix for #44242 2008-02-27 01:10:56 +00:00
Ilia Alshanetsky 45c443576e MFB: Fixed bug #44233 (MSG_PEEK undefined under BeOS R5) 2008-02-27 00:32:39 +00:00
Josie Messa 7c28ec2e54 - New tests for chdir() function 2008-02-26 09:31:16 +00:00
Christopher Jones 8b43d4de96 Fix test noise 2008-02-26 01:06:37 +00:00
Ilia Alshanetsky 86647d648f MFB: Better fix for bug #44189 2008-02-26 00:14:04 +00:00
Christopher Jones 8bdaeafc23 Add recent OCI8 bug fixes 2008-02-26 00:04:18 +00:00
Christopher Jones 2ce86f5e5a OCI8: fix bug #44008 (OCI-Lob->close) & bug #44206 (ref cursor leak) 2008-02-25 23:52:10 +00:00
Felipe Pena 9b730870a1 Fixed bug #44242 (metaphone(CMXFXM) crashes PHP) 2008-02-25 22:40:45 +00:00
Derick Rethans a58f8d2a9b - MFH: Fixed tests on 64bit platform. 2008-02-25 22:34:11 +00:00
Derick Rethans 08e237cc6d - MFH: Fixed a problem with parsing timezones as part of a format.
#- It doesn't actually fix anything, but atleast it's consistent with HEAD.
2008-02-25 18:28:18 +00:00
Steve Seear d4e61a3042 Replace hardcoded resource ids with %d in fgetc() tests. 2008-02-25 10:28:43 +00:00
Felipe Pena 7af1de82e3 New test 2008-02-24 18:49:40 +00:00
Felipe Pena f75a2de1c1 Fixed segfault in filter extension when using callbacks. (reported & patched by Arnar Mar Sig) 2008-02-24 18:34:30 +00:00
Ilia Alshanetsky c2805b88e5 MFB: Fixed bug #44200 (A crash in PDO when no bound targets exists and yet
bound parameters are present)
2008-02-24 16:09:05 +00:00
Derick Rethans 8241ee2226 - MFH: Fixed bug #44216 (strftime segfaults on large negative value). 2008-02-22 17:49:30 +00:00
Derick Rethans dfd8f3f735 - MFH: Fixed bug #44209: strtotime doesn't support 64 bit timestamps. 2008-02-22 09:48:18 +00:00
Josie Messa 6dc4795a66 - New tests for reset() function 2008-02-22 09:18:25 +00:00
Dmitry Stogov 6c7fe8df9f Fixed test 2008-02-22 08:16:32 +00:00
Felipe Pena fcffdf2285 Fix test 2008-02-22 02:45:37 +00:00
Josie Messa d8794230ed - New tests for end() and next() function 2008-02-21 16:38:12 +00:00
Dmitry Stogov 7eb1befffe Fixed bug #43483 (get_class_methods() does not list all visible methods) 2008-02-21 15:14:13 +00:00
Josie Messa ffa42113ff - New tests for key() function 2008-02-21 14:34:02 +00:00
Felipe Pena 3ed933811b Fix test 2008-02-21 14:22:04 +00:00
Dmitry Stogov 28306e3439 Fixed bug #44141 (private parent constructor callable through static function) 2008-02-21 13:55:22 +00:00
Ilia Alshanetsky 744d8992b3 MFB: Fixed bug #44189 (PDO setAttribute() does not properly validate values
for native numeric options)
2008-02-21 13:37:52 +00:00
Felipe Pena 4421fc2204 Cosmetics change 2008-02-21 13:32:03 +00:00
Antony Dovgal 00315b1d42 MF53 2008-02-21 11:53:51 +00:00
Dmitry Stogov 7c40e93b69 Fixed test 2008-02-21 08:17:00 +00:00
Felipe Pena 48952c1b1d Fix typo 2008-02-21 02:39:43 +00:00
Felipe Pena e0379278af Fixed Bug #44197 (socket array keys lost on socket_select) 2008-02-21 02:34:50 +00:00
Felipe Pena 50bdcc203b Fixed Bug #44191 (preg_grep messes up array index) 2008-02-20 22:08:18 +00:00
Felipe Pena 2778d2ad59 New test 2008-02-20 21:56:45 +00:00
Ilia Alshanetsky de270b4d6e MFB: Fixed bug #44152 (Possible crash with syslog logging on ZTS builds). 2008-02-20 15:28:37 +00:00
Josie Messa 18dc5aaed6 - New tests for current() function 2008-02-20 14:19:44 +00:00
Dmitry Stogov 39c4c3971d Fixed bug #44184 (Double free of loop-variable on exception) 2008-02-20 12:04:50 +00:00
Ilia Alshanetsky 766b688c8e MFB: Fixed bug #44171 (Invalid FETCH_COLUMN index does not raise an error) 2008-02-20 03:12:16 +00:00
Josie Messa 5c394578de - New tests for each() function 2008-02-19 17:00:58 +00:00
Dmitry Stogov 981603b55c Reverted wrong commit (debug code) 2008-02-19 16:44:43 +00:00
Dmitry Stogov 12e8e280c7 Fixed memory leaks 2008-02-19 16:39:02 +00:00
Dmitry Stogov 59f4a9381f Fixed test 2008-02-19 16:33:17 +00:00
Felipe Pena 5ccd0528fe New test 2008-02-19 14:53:44 +00:00
Felipe Pena d0fea14428 Fixed Bug #44159 (Crash: $pdo->setAttribute(PDO::STATEMENT_ATTR_CLASS, NULL)) 2008-02-19 12:09:47 +00:00
Dmitry Stogov ee82eac68a Fixed memory leak 2008-02-19 12:00:36 +00:00
Josie Messa ae105adfd9 - New tests for natcasesort() function 2008-02-19 10:51:44 +00:00
Sebastian Bergmann 87784c32b3 MFH: Fugbix typo. 2008-02-19 06:52:58 +00:00
Dmitry Stogov 8187dbfa4d Made code opcode-cache friendly. (It is disallowed to change code during execution) 2008-02-18 14:30:25 +00:00
Rui Hirokawa f17936083a fixed some failures on test scripts caused by bug fix. 2008-02-18 14:28:13 +00:00
Ilia Alshanetsky 304923d187 MFB:Fixed a possible crash 2008-02-18 13:29:00 +00:00
Dmitry Stogov 4a3df17f43 Removed redundant refcount manipulations 2008-02-18 12:11:34 +00:00
Dmitry Stogov 63fbdfb3e1 Fixed test 2008-02-18 09:02:16 +00:00
Ilia Alshanetsky f506f6254a Mbstring bug fixing news 2008-02-17 17:20:40 +00:00
Rui Hirokawa 65ef397b3c MF PHP5_3 (fixed #43841) 2008-02-17 02:06:56 +00:00
Rui Hirokawa 419b7283d3 MF PHP5_3 (fixed #43994) 2008-02-17 02:04:12 +00:00
Rui Hirokawa e2fa604b0a MF PHP5_3 (fixed #43998) 2008-02-17 02:01:41 +00:00
Rui Hirokawa bd98b8a3e0 MF PHP5_3 (fixed #43840) 2008-02-17 01:59:03 +00:00
Rui Hirokawa ba670d01b5 MF PHP5_3 2008-02-16 08:32:57 +00:00
Rui Hirokawa ee71417ef0 MF PHP5_3 2008-02-16 08:25:11 +00:00
Christopher Jones 7ac84b8607 Test existing LOB error messages 2008-02-16 03:01:17 +00:00
Christopher Jones 6c0abfe077 Bug #44113 (New collection creation can fail with OCI-22303) 2008-02-15 23:05:19 +00:00
Josie Messa 9da1ec78c0 - New tests for rsort() function 2008-02-15 16:05:28 +00:00
Antony Dovgal e3189410c4 MFH: recursion protection in count() 2008-02-15 09:33:26 +00:00
Dmitry Stogov f29c6b45a8 MFH: Fixed bug #43128 (Very long class name causes segfault) 2008-02-15 07:44:46 +00:00
Dmitry Stogov 5ef434d175 Fixed bug #43507 (SOAPFault HTTP Status 500 - would like to be able to set the HTTP Status) 2008-02-15 06:50:39 +00:00
Dmitry Stogov 0be31f3f3c Fixed test 2008-02-15 06:38:37 +00:00
Josie Messa 5ae0fb0628 - New tests for count() function 2008-02-14 16:49:17 +00:00
Josie Messa 5ce503459d - removing .project file 2008-02-14 16:20:19 +00:00
Josie Messa 87e2a75f70 - New variation test for array_values() 2008-02-14 16:15:16 +00:00
Dmitry Stogov af3aecb688 Fixed bug #44069 (Huge memory usage with concatenation using . instead of .=) 2008-02-14 14:47:25 +00:00
Josie Messa 592f5f384e - New tests for array_values() function 2008-02-14 14:21:48 +00:00
Felipe Pena a69ea8773d Fixed Bug #42838 (Wrong results in array_diff_uassoc) 2008-02-14 14:02:02 +00:00
Felipe Pena cf2c1c59aa New test 2008-02-14 13:49:55 +00:00
Josie Messa f56d34a230 - New tests for array_slice() function 2008-02-14 11:15:54 +00:00
Dmitry Stogov 8448591096 Fixed memory leak 2008-02-14 08:46:08 +00:00
Josie Messa 079c7f0cd6 - New tests for array_shift() function 2008-02-13 16:41:27 +00:00
Josie Messa b289acb3af - New tests for array_push() function 2008-02-13 16:10:43 +00:00
Josie Messa 2554f5ca00 - committing tests for array_merge() function 2008-02-13 14:20:22 +00:00
Josie Messa 064bbbb04e - committing tests for array_key_exists() function 2008-02-13 13:15:11 +00:00
Marcus Boerger 697b79f6a3 - MFH Make this behave like in <= 5.2.5 and test for it 2008-02-13 12:23:26 +00:00
Greg Beaver 26f6c26c8c MFH: fix potential memleak due to destruction of filterparams zval 2008-02-12 23:29:18 +00:00
Johannes Schlüter 201a2ec1f0 - MFH: Make clear what's going on and avoid overwriting parameters 2008-02-12 20:43:50 +00:00
Hannes Magnusson 8fbb789d04 Fix test 2008-02-12 20:06:10 +00:00
Josie Messa fa7ab79523 - committing array_change_key_case variation tests 2008-02-12 17:43:54 +00:00
Felipe Pena d1f536595e MFB: array_slice() - Fixed behavior when NULL is given in third parameter (BC) 2008-02-12 12:47:30 +00:00
Felipe Pena 13e939679b MFB: Fixed Bug #44094 (SEGFAULT when using mysql_connect()) 2008-02-12 10:24:35 +00:00
Zoe Slattery a628bc8856 Fixing 44092 2008-02-12 07:27:49 +00:00
Ilia Alshanetsky 2e6320425b MFB: Fixed test on 64bit machines 2008-02-11 16:23:12 +00:00
Johannes Schlüter eaa1662a75 MFH: The exact message differs on different systems 2008-02-11 00:03:30 +00:00
Johannes Schlüter c04ac43efa - Fix typo (see #44095) 2008-02-11 00:01:29 +00:00
Jani Taskinen 839abfabcc MFH 2008-02-06 19:14:07 +00:00
Jani Taskinen c717b41784 MFH:- Fixed bug in handling arrays which caused the original array being modified too. 2008-02-06 19:07:36 +00:00
Marcus Boerger 745fe9004f - BFN 2008-02-06 11:10:07 +00:00
Marcus Boerger dd570d65ce - WS 2008-02-06 11:09:48 +00:00
Zoe Slattery 44b091a30d Tests for assorted Maths functions 2008-02-06 09:51:19 +00:00
Ilia Alshanetsky 5b0fbbefe1 MFB: Fixed bug #44046 (crash inside array_slice() function with an invalid
by-ref offset).
2008-02-05 16:01:21 +00:00
Robert Nicholson 95121ed073 - fix arsort_variation3.phpt which was missing its EXPECT section 2008-02-05 11:18:00 +00:00
Marcus Boerger f26c177b2d - Damnit you flags (wrong commit) 2008-02-04 21:49:44 +00:00
Marcus Boerger 9a90cfc99c - MFH Really last flag change (got confused with code) 2008-02-04 21:37:55 +00:00
Ilia Alshanetsky 2c92d82a02 Revert fix for bug #43981, not yet ready for 5.2 2008-02-04 21:31:52 +00:00
Marcus Boerger 80907e4a91 - MFH Flag handling and documentation 2008-02-04 20:43:50 +00:00
Sebastian Bergmann 0d516bf7ec Add NEWS entry for ext/dom arginfo changes. 2008-02-04 19:43:34 +00:00
Sebastian Bergmann cc0b2dd120 MFH: Add missing Reflection API metadata for DOM classes. 2008-02-04 15:23:11 +00:00
Robert Nicholson 622504d7a3 - added some new tests for arsort 2008-02-04 00:04:26 +00:00
Ilia Alshanetsky e002e2ec1c MFB: Fixed bug #44028 (crash inside stream_socket_enable_crypto() when
enabling encryption without crypto type)
2008-02-03 16:15:30 +00:00
Derick Rethans 3bcef3b39d - Fixed invalid read errors as found by GCOV. 2008-02-03 14:22:55 +00:00
Antony Dovgal 20b39a9806 fix test, add 64bit version 2008-02-02 23:44:39 +00:00
Derick Rethans d7ae91bea7 - MFH: Make timezone_open() work again. 2008-02-02 17:26:23 +00:00
Zoe Slattery cc0b147a2f A few new tests for math functions - Note the "constants" test will fail on Windows - Bug 42143. 2008-02-01 17:27:43 +00:00
Robert Nicholson 801ce5ee03 - a few more gd tests (committed on behalf of andy wharmby) 2008-02-01 16:33:37 +00:00
Josie Messa bb5f5da561 - Committing new tests for MBString extension.
More details can be found here: http://news.php.net/php.qa/62382
2008-02-01 15:27:57 +00:00
Rob Richards 390b033755 BFN 2008-01-31 22:00:22 +00:00
Rob Richards 1dc8e72874 MFH: fix bug #42369 (Implicit conversion to string leaks memory)
add test
2008-01-31 21:59:41 +00:00
Antony Dovgal caf57b0532 BFN 2008-01-31 20:23:33 +00:00
Christopher Jones dece018a41 Fixed bug #42841 (REF CURSOR and oci_new_cursor PHP crash) 2008-01-31 00:26:44 +00:00
Ilia Alshanetsky 6f1c2f04a0 MFB: Fixed bug #43981 (gmp_div_r() does not preserve the sign of 1st
argument)
2008-01-30 18:27:03 +00:00
Zoe Slattery 51f63718cf Removing superfluous --INI-- section 2008-01-30 17:44:54 +00:00
Rob Richards 82a3271eda BFN 2008-01-30 15:30:44 +00:00
Rob Richards 005ece078a MFH: fix bug #41562 (SimpleXML memory issue) 2008-01-30 15:29:51 +00:00
Robin Fernandes 5912128780 Adding tests for class features, including __autoload(), property inheritance rules and class constants. 2008-01-30 14:24:47 +00:00
Rasmus Lerdorf 529092df9b Copy-paste typo 2008-01-30 08:50:02 +00:00
Sebastian Bergmann 410fb2b6d4 MFH: Fix arginfo. 2008-01-30 06:48:20 +00:00
Rasmus Lerdorf b8af6b08db This one depends on the precision setting 2008-01-30 05:37:23 +00:00
Rasmus Lerdorf 7b624a37bc Fixed bug #43957 (utf8_decode() bogus conversion of partial multibyte UTF8 char) 2008-01-29 23:21:20 +00:00
Sebastian Bergmann 088d2d98b8 MFH: Fix arginfo and prototype. 2008-01-29 21:21:28 +00:00
Nuno Lopes 8cb33d2c04 upgrade to pcre 7.6 2008-01-29 20:25:47 +00:00
Dmitry Stogov 7c51430b37 Fixed bug #43968 (Extending internal class causes a crash)
The fix is a workaround for GCC optizer bug.
2008-01-29 20:01:14 +00:00
Sebastian Bergmann fef277ab76 MFH: Add Reflection API metadata for DOMXPath. 2008-01-29 15:55:29 +00:00
Sebastian Bergmann 0c685dc3c0 MFH: Add Reflection API metadata for DOMNode. 2008-01-29 15:23:25 +00:00
Dmitry Stogov f8d7d6fc90 Fixed bug #43491 (Under certain conditions, file_exists() never returns) 2008-01-29 14:23:19 +00:00
Antony Dovgal 1a4c15d5e1 MFH: fix #43927 (koi8r is missing from html_entity_decode())
patch by andy at demos dot su
2008-01-29 13:39:03 +00:00
Dmitry Stogov e4782cddf4 Fixed bug #43505 (Assign by reference bug) 2008-01-29 10:44:53 +00:00
Dmitry Stogov c9fd5b3010 Fixed test 2008-01-29 10:43:42 +00:00
Antony Dovgal c86f396edf BFN 2008-01-29 09:30:08 +00:00
Sebastian Bergmann 984b2c84a5 MFH: Add Reflection API metadata for XSLTProcessor. 2008-01-29 07:51:46 +00:00
Antony Dovgal 65d0aca95c MFH: fix type and bug #43646 2008-01-29 00:08:08 +00:00
Scott MacVicar 20809972dc MFH: Fixed bug #43954 (Memory leak when sending the same HTTP status code more than once.) 2008-01-28 16:12:55 +00:00
Hannes Magnusson 1e0125e9a4 Remove bogus test (should be in HEAD) 2008-01-27 18:20:27 +00:00
Marcus Boerger f2e8119bf5 - Add second parameter to SplObjectStorage::attach()
- Add SplObjectStorage::setInfo()
- Add SplObjectStorage::getInfo()
2008-01-27 18:04:56 +00:00
Rob Richards 86ae2781fb MFH: add missing export 2008-01-27 16:33:22 +00:00
Derick Rethans da11bc2b32 - MFH Bugfixes:
- Fixed bug #43808 (date_create never fails (even when it should)).
	- Fixed bug #43527 (DateTime created from a timestamp reports environment
	  timezone).
	- Fixed bug #43003 (Invalid timezone reported for DateTime objects
	  constructed using a timestamp).
	- Fixed bug #42190 (Constructing DateTime with TimeZone Indicator
	  invalidates DateTimeZone).
	- Fixed bug #41599 (setTime() fails after modify() is used).
2008-01-26 16:26:47 +00:00
Robert Nicholson 905f0d086b - Add a basic test for array_shuffle() 2008-01-25 00:30:52 +00:00
Robert Nicholson db0c290db4 - add some basic tests for array diff and intersection functions 2008-01-25 00:16:14 +00:00
Antony Dovgal ab8436fc87 MFH 2008-01-24 23:11:15 +00:00
Robert Nicholson 6b7d50ead4 - New tests for compact() 2008-01-24 14:52:38 +00:00
Rob Richards e660e038a4 MFH: fix zts build 2008-01-24 14:10:21 +00:00
Dmitry Stogov bab919b91b Fixed error message 2008-01-24 08:51:04 +00:00
Ilia Alshanetsky cfcb262dfb MFB:Fixed bug #43912 (Interbase column names are truncated to 31 characters) 2008-01-23 01:22:57 +00:00
Antony Dovgal 5331163715 add new test 2008-01-22 15:43:09 +00:00
Hannes Magnusson 66d39db51e MFH: Fixed bug #43875 (Two error messages returned for $new and $flag argument in mysql_connect()) 2008-01-20 14:13:11 +00:00
Christopher Jones a4c915c855 MFH: Add ifdef 2008-01-18 16:03:35 +00:00
Antony Dovgal 45353a5c39 fix test 2008-01-18 12:41:24 +00:00
Antony Dovgal f66f94b4b0 fix test 2008-01-18 12:12:19 +00:00
Antony Dovgal ff7be14077 BFN 2008-01-18 07:10:21 +00:00
Pierre Joye c1fa811b5c - reflect the correct version 2008-01-18 00:51:38 +00:00
Greg Beaver 736e23a4c5 MF5.3: install headers, use correct zip version 2008-01-18 00:31:23 +00:00
Greg Beaver 42b320bca1 MFH: add errors when missing dependencies (Steph) 2008-01-17 21:17:29 +00:00
Ilia Alshanetsky 23994f9150 MFB: Fixed bug #42779 (Incorrect forcing from HTTP/1.0 request to HTTP/1.1
response)
2008-01-16 15:50:37 +00:00
Antony Dovgal b42398f850 MFH: fix #43863 (str_word_count() breaks on cyrillic "ya" in locale cp1251)
patch by phprus at gmail dot com
2008-01-16 08:35:59 +00:00
Dmitry Stogov bb084caec1 Fixed wrong type cast 2008-01-16 06:14:45 +00:00
Christopher Jones 65bec2edc8 MFH: fix #41941 (oci8 extension not lib64 savvy) 2008-01-16 00:42:02 +00:00
Christopher Jones ea2d2d6bb6 MFH: Testcase for #43492 (nested cursors) 2008-01-15 20:54:22 +00:00
Christopher Jones f4a29d5432 fix #43497 (OCI8 XML/getClobVal aka temporary LOBs leak UGA memory) 2008-01-15 20:42:13 +00:00
Rob Richards 844d6ee35b MFH: fix memleak in sign and verify functions 2008-01-15 15:13:37 +00:00
Brian Shire 751b0807b1 MFH: Fix bug #42850 array_walk_recursive() leaves references, refix bug #34982 2008-01-14 22:10:09 +00:00
Ilia Alshanetsky a2581f81d1 MFB: Missing patch bit from the FETCH_GROUP fix 2008-01-14 18:41:41 +00:00
Nuno Lopes 0f9729404f MFH: fix bug #42945, as asked by Ilia 2008-01-14 09:46:55 +00:00
Nuno Lopes 255a7b9cf0 upgrade PCRE to version 7.5 (as asked by Ilia 2008-01-14 09:39:41 +00:00
Greg Beaver c98f8dc302 merge in cgi fixes from PHP_5_3 2008-01-14 04:34:17 +00:00
Greg Beaver b24c96616a add missing alias .h files 2008-01-14 03:58:03 +00:00
Greg Beaver 1d3604c1b1 MFH: export libzip symbols 2008-01-14 03:19:41 +00:00
Greg Beaver 1d28516b79 MFH: far better fix for bug #40189 2008-01-12 22:04:03 +00:00
Greg Beaver ee16647cfd MFH: fix faulty fix for Bug #40189, and provide real fix for the bug 2008-01-12 21:35:44 +00:00
Greg Beaver 5d96f54cf9 revert last commit, was to wrong branch 2008-01-12 03:46:47 +00:00
Greg Beaver 9ce5990880 MFH: export symbols for use by other extensions like phar 2008-01-12 03:43:06 +00:00
Rob Richards 0d1fe9c73b MFH: starting with 2.6.30, standard libxml2 build can be used 2008-01-11 13:37:24 +00:00
Ilia Alshanetsky aa51dce93a MFB: Fixed a bug with PDO::FETCH_COLUMN|PDO::FETCH_GROUP mode when a column
# by which to group by data is specified.
2008-01-11 01:47:55 +00:00
Brian Shire 0c855571c3 - MFH fix truncation of large values on 64-bit systems in http_build_query 2008-01-10 20:32:41 +00:00
Antony Dovgal c2f8930033 correct number of symbols 2008-01-10 08:45:39 +00:00
Antony Dovgal 2fe13db7ac fix test 2008-01-10 08:45:06 +00:00
Dmitry Stogov d5bd104d9d Fixed broken soap.wsdl_cache_enabled 2008-01-09 16:45:30 +00:00
Greg Beaver 8a1cd11e0b apply proper fix of bug #43793 to zlib.deflate (window+16 = gzip) 2008-01-09 08:12:26 +00:00
Dmitry Stogov b58a5db130 Fixed bug #43703 (Signature compatibility check broken) 2008-01-09 07:57:23 +00:00
Greg Beaver a603c8d71b apply same fix of bug #43793 to zlib.deflate 2008-01-09 07:03:41 +00:00
Greg Beaver ad7f030c6d fix Bug #43793: zlib filter is unable to auto-detect gzip/zlib file headers 2008-01-09 06:45:15 +00:00
Pierre Joye 3dd5e7854c - #43790, fix crash when no family name has been found 2008-01-09 01:50:59 +00:00
Ilia Alshanetsky c73247fe2c MFB: Fixed bug #43498 (file_exists() on a proftpd server got SIZE not
allowed in ASCII mode).
2008-01-08 19:10:16 +00:00
Ilia Alshanetsky 0b25a9fb8c Fixed a safe_mode bypass in cURL identified by Maksymilian Arciemowicz. 2008-01-06 17:12:29 +00:00
Greg Beaver 4490673e0e remove potential preg warnings if --EXPECTHEADERS-- is combined with --EXPECTF-- or --EXPECTRE-- 2008-01-05 21:39:47 +00:00
Greg Beaver 32f4ff69b5 implement --FILE_EXTERNAL-- section for using an external file as --FILE--, use CGI for --EXPECTHEADERS--, fix --POST_RAW-- 2008-01-05 21:05:14 +00:00
Raghubansh Kumar d380d052af New testcases for array_diff() function 2008-01-04 14:04:26 +00:00
Raghubansh Kumar 5fe2521143 New testcases for array_diff_assoc() function 2008-01-04 14:03:57 +00:00
Ulf Wendel 8e0bb2d72c MFH: Fix for bug #43036 2008-01-04 09:19:49 +00:00
Ilia Alshanetsky 0c882b2645 MFB: Skip test for PostgreSQL driver since error is too dissimilar to other
drivers
2008-01-03 16:47:08 +00:00
Raghubansh Kumar b054ae8716 this testcase has been split into many smaller testcases and committed. 2008-01-03 09:50:05 +00:00
Raghubansh Kumar 5a6c4393cb new smaller testcases for array_map() function 2008-01-03 09:48:42 +00:00
Steve Seear 425646f98b Adding PHPT tests for the ReflectionMethod class. 2008-01-03 09:06:08 +00:00
Ilia Alshanetsky 02967f7040 MFB: Fixed bug #43647 (Make FindFile use PATH_SEPARATOR instead of ";") 2008-01-02 19:20:15 +00:00
Ilia Alshanetsky 660fac9dc0 MFB: Update copyright 2008-01-01 18:30:41 +00:00
Hartmut Holzgraefe 3e34e202d5 MFH: Fix for bug #42548 "PROCEDURE xxx can't return a result set" 2008-01-01 16:51:09 +00:00
Derick Rethans aaeded2ac7 - Updated to version 2007.11 2008-01-01 15:32:28 +00:00
Hannes Magnusson 30ff9a85cf MFH: Fix test 2008-01-01 14:36:08 +00:00
Sebastian Bergmann 58fea2b990 MFB: Leftover: Bump copyright year. 2008-01-01 06:15:48 +00:00
Sebastian Bergmann dfa693b392 Leftover: Bump copyright year. 2007-12-31 07:25:08 +00:00
Sebastian Bergmann d9f3a1305f MFH: Bump copyright year, 2 of 2. 2007-12-31 07:20:42 +00:00
Sebastian Bergmann e78105b103 MFH: Bump copyright year, 1 of 2. 2007-12-31 07:17:40 +00:00
David Soria Parra e81a660bae - Fixed bug #43663 (Extending PDO class with a __call() function doesn't work). 2007-12-30 17:59:31 +00:00
Jani Taskinen 3b2ca90699 MFH:- This makes no sense with non-ipv6 builds. (and fixes lot of issues with misconfigured servers) 2007-12-29 18:46:37 +00:00
Hannes Magnusson 5a5f3e6dff Fix test when additional ini files are used (patch by <confins_de_l_univers at yahoo dot fr>) 2007-12-29 11:38:06 +00:00
Antony Dovgal 6db1f40e32 correct fix for bug #43522 2007-12-29 10:52:51 +00:00
Hannes Magnusson dbbd4bf1b8 MFH: Update the class method documentation links 2007-12-29 02:22:23 +00:00
Dmitry Stogov df9e324f35 Fixed test related to bug #38469 2007-12-28 13:38:30 +00:00
Dmitry Stogov 2705adc4b9 Fixed bug #38469 (Unexpected creation of cycle). 2007-12-28 13:38:20 +00:00
Hannes Magnusson 97c1cc8925 BFN 2007-12-27 02:12:48 +00:00
Hannes Magnusson 7c9ab52ca4 MFB5.3: Fixed bug#43105 (PHP seems to fail to close open files.) 2007-12-27 02:10:26 +00:00
Hannes Magnusson 6bcf63c567 MFH: Fix typo (TAKAGI Masahiro) 2007-12-26 21:03:12 +00:00
Raghubansh Kumar 8774eb1ae9 fix test : do not run when run as root 2007-12-25 16:16:32 +00:00
Dmitry Stogov 24957a15e0 Fixed %f regex 2007-12-25 12:06:22 +00:00
Raghubansh Kumar cb165e184d new testcases for dir() function 2007-12-24 05:21:08 +00:00
Raghubansh Kumar 63ff78e2f3 fix tests 2007-12-24 04:26:41 +00:00
Raghubansh Kumar 77245e4907 Changing the regex for %f so the it will match e-, e+ and e. 2007-12-24 04:24:20 +00:00
Johannes Schlüter bb52c198ce -Fix name (arg, new keyboard is coming...) 2007-12-21 21:18:01 +00:00
Johannes Schlüter 0bc875c9ca -Fix name 2007-12-21 21:17:31 +00:00
Johannes Schlüter 42add0f2e1 - MFH: Fix #43450 (Memory leak on some functions with implicit object
__toString() call) (Davic C.)
2007-12-21 20:58:11 +00:00
Dmitry Stogov ab6121f686 Fixed test 2007-12-21 09:44:13 +00:00
Raghubansh Kumar 59ddc3b287 fix tests 2007-12-20 17:28:36 +00:00
Dmitry Stogov 6789574da2 x86_64 assembler optimization (Brain Shire) 2007-12-20 13:22:22 +00:00
Robert Nicholson 6194af1343 New test - Indexing - various special cases 2007-12-20 11:41:40 +00:00
Robert Nicholson 847f462905 new tests for array_map usage variations - string keys and references 2007-12-20 11:18:55 +00:00
Ilia Alshanetsky c21ef044a7 MFB: Fixed bug #43635 (mysql extension ingores INI settings on NULL values
passed to mysql_connect())
2007-12-20 00:31:49 +00:00
Raghubansh Kumar a81fccc47d fix test 2007-12-19 10:40:18 +00:00
Derick Rethans dc30b0035d - MFH: Fixed var_export() for array keys
- MFH: Fixed broken explode() test
2007-12-19 08:45:16 +00:00
Steve Seear fd81f61e0d Adding PHPT tests for the ReflectionProperty class. 2007-12-18 17:20:05 +00:00
Ilia Alshanetsky a68454f659 MFB: Fixed bug #43620 (Workaround for a bug inside libcurl 7.16.2 that can
result in a crash)
2007-12-18 13:47:37 +00:00
Jani Taskinen b9fabc8ae6 MFH:- Fix indent of macros 2007-12-17 08:52:30 +00:00
Johannes Schlüter bbfe422bd1 - MFH: Fix #43611 SplObjectStorage is available since 5.1.2 2007-12-16 22:19:58 +00:00
Hannes Magnusson 327109fab1 MFB5.3: Fix test 2007-12-16 19:18:44 +00:00
Ilia Alshanetsky 1643c14e5f MFB: Fixed bug #43589 (a possible infinite loop in bz2_filter.c) 2007-12-16 17:22:31 +00:00
Ilia Alshanetsky 6dc859da75 MFB: Fixed bug #43606 (define missing depencies of the exif extension) 2007-12-16 17:14:54 +00:00
Hannes Magnusson 25a7740600 Fix protos 2007-12-15 12:52:11 +00:00
Raghubansh Kumar ee8d2395e1 New testcases for token_get_all() function 2007-12-14 16:23:12 +00:00
Antony Dovgal eb324c4cce MFH 2007-12-13 22:30:28 +00:00
Douglas Goldstein 45dba3ecc7 add tests for ldap_dn2ufn() 2007-12-13 17:59:52 +00:00
Douglas Goldstein 2013cd57cd expand ldap_explode_dn() tests. 2007-12-13 17:46:46 +00:00
Dmitry Stogov 853adf67f9 Fixed test 2007-12-13 07:57:24 +00:00
Ilia Alshanetsky c35249d45e MFB Fixed bug #43580 (removed bogus declaration of a non-existent php_is_url()
function)
2007-12-13 00:33:26 +00:00
Antony Dovgal 0e70b8fea0 MFH: add valgrind 3.3.0 support 2007-12-12 20:21:57 +00:00
Douglas Goldstein 8f8e19dc7b add skipif case if the ldap extension is not loaded 2007-12-11 17:35:11 +00:00
Douglas Goldstein 57dbd0837a put ldap_explode_dn.phpt in proper directory 2007-12-11 17:33:51 +00:00
Douglas Goldstein becf94003a Adding initial tests for LDAP module. Adding tests for ldap_explode_dn() function 2007-12-11 17:20:58 +00:00
Jani Taskinen 0644aff586 MFH:- Revert previous patch, it was correct to do this, error is logged if logging is enabled 2007-12-11 12:26:16 +00:00
Jani Taskinen 882bd652df MFH: fix error displaying 2007-12-11 11:29:37 +00:00
Raghubansh Kumar b1c09efa90 New testcases for array_walk() function 2007-12-11 10:50:17 +00:00
Raghubansh Kumar 1ed9911cfa New testcases for array_merge_recursive() function 2007-12-11 09:09:12 +00:00
Christopher Jones e2c7f9c485 Fix #42496. Cursor leak fetching LOBs 2007-12-11 06:07:13 +00:00
Ilia Alshanetsky 8a9ad0081d MFB: Fixed bug #43522 (stream_get_line() eats additional characters) 2007-12-10 14:18:02 +00:00
Derick Rethans 63dcbb73f0 - MFH: Fixed Bug #42272 (var_export() incorrectly escapes char(0)). 2007-12-09 16:55:46 +00:00
Ilia Alshanetsky 2caccf3136 Fixed bug #43533 (escapeshellarg('') returns null).
# Backport of code from 5.3
2007-12-09 16:37:02 +00:00
Raghubansh Kumar e31fd8027f new testcases for array_unique() function 2007-12-09 14:44:18 +00:00
Marcus Boerger f012dee00c -MFH: db 4.6 detection 2007-12-06 14:17:43 +00:00
Ilia Alshanetsky f6829cf90f MFB: Fixed bug #43495 (array_merge_recursive() crashes with recursive
arrays)
2007-12-05 20:04:13 +00:00
Ilia Alshanetsky e3ec29a3f1 MFB: fixed test 2007-12-04 13:05:24 +00:00
Ilia Alshanetsky bb9384cb8a MFB: Fixed bug #43493 (pdo_pgsql does not send username on connect when
password is not available)
2007-12-04 13:05:03 +00:00
Antony Dovgal 33885b64a4 MFH 2007-12-04 08:56:14 +00:00
Antony Dovgal fe8771ec81 fix typos
use the earliest bug report in the description
2007-12-03 16:33:37 +00:00
Dmitry Stogov aeae1ce48a bug numbers 2007-12-03 16:20:55 +00:00
Dmitry Stogov 0c2edc588d Fixed crash because of uninitialized SG(sapi_headers).mimetype 2007-12-03 16:04:26 +00:00
Derick Rethans 3f9a50c5bf - Updated to version 2007.10 2007-12-03 15:16:40 +00:00
Dmitry Stogov b68b2e029c Fixed weired behavior in CGI parameter parsing 2007-12-03 15:08:01 +00:00
Ilia Alshanetsky 32463e7af9 Fixed bug #43482 (array_pad() does not warn on very small pad numbers). 2007-12-03 14:11:09 +00:00
Raghubansh Kumar f0570bce0b fix tests : better float values 2007-12-03 13:04:45 +00:00
Raghubansh Kumar 0bf84145b2 fix tests: better float values 2007-12-03 11:59:55 +00:00
Raghubansh Kumar e12bef98c6 New testcases for array_pad() function 2007-12-03 11:53:04 +00:00
Raghubansh Kumar d47d025881 New testcases for array_chunk() function 2007-12-03 03:55:55 +00:00
Ilia Alshanetsky e2ed7b551f MFB: Fixed bug #43457 (Prepared statement with incorrect parms doens't
throw exception with pdo_pgsql driver)
2007-12-02 21:00:06 +00:00
Ilia Alshanetsky 83156cf04d Fixed a typo 2007-11-30 00:12:18 +00:00
Ilia Alshanetsky 056197037d MFB: Fixed tests 2007-11-28 14:50:24 +00:00
Rob Richards ff8e1a32f9 BFN 2007-11-28 10:47:36 +00:00
Rob Richards d5afff5286 MFH: Fix bug #43364 (recursive xincludes don't remove internal nodes properly)
add test
2007-11-28 10:45:16 +00:00
Raghubansh Kumar 1a8b3e0923 Marked with defect 2007-11-28 03:42:43 +00:00
Ilia Alshanetsky b1407d3709 MFB: Fixed bug #43373 (pcntl_fork() should not raise E_ERROR on error) 2007-11-27 17:14:27 +00:00
Raghubansh Kumar ea4f3ac8a3 New testcases for array_combine() function 2007-11-27 15:18:11 +00:00
Raghubansh Kumar 9de95af3db New testcases for array_sum() function 2007-11-27 15:00:55 +00:00
Antony Dovgal d3aff8310c fix test 2007-11-27 11:14:17 +00:00
Antony Dovgal 14902c89cc fix test 2007-11-27 06:44:32 +00:00
Ilia Alshanetsky 8330f31750 MFB: Revert addition of - char support for bound param names 2007-11-26 21:10:41 +00:00
Jani Taskinen a109ecaacf MFH:- Fixed bug #43365 (Several enums have trailing commas) 2007-11-26 10:59:18 +00:00
Ilia Alshanetsky 947cebee3c MFB: Fixed bug #43386 (array_globals not reset to 0 properly on init) 2007-11-25 15:56:47 +00:00
Robert Nicholson dc75c7c2a1 Fix incorrect use of assignment in where equality was intended - class tests. 2007-11-23 15:41:05 +00:00
Ilia Alshanetsky 3acbcf448f MFB: Fixed bug #43377 (PHP crashes with invalid argument for DateTimeZone) 2007-11-23 00:16:48 +00:00
Robert Nicholson 202e7f5b28 Add some more pcre tests 2007-11-21 18:21:19 +00:00
Jani Taskinen 14d5ba8aec MFH:- Fixed bug #43035: ignore_repeated_errors=On causes lot of tests to fail 2007-11-21 08:20:45 +00:00
Ilia Alshanetsky fdc2dab50b MFB: Adjusted fix for bug #42978 2007-11-20 23:12:30 +00:00
Ilia Alshanetsky a4bc590ec1 MFB: Fixed bug #42978 (mismatch between number of bound params and values
causes a crash in pdo_pgsql)
2007-11-20 14:23:47 +00:00
Antony Dovgal c39a2f7143 fix test 2007-11-19 11:12:36 +00:00
Dmitry Stogov 06a116cd53 Fixed tests 2007-11-19 08:01:56 +00:00
Derick Rethans 62fb0402db - MFH: Initialize the reserved resource bits so that they can be reliably used. 2007-11-18 21:30:30 +00:00
Ilia Alshanetsky 99a1f9e0b2 MFB: Fixed bug #42261 (Incorrect lengths for date and boolean data types) 2007-11-18 14:20:17 +00:00
Sara Golemon d92f11b9d6 MFH(r-1.192) Remove extraneous space in error/notice messages (felipe) 2007-11-17 21:52:06 +00:00
Raghubansh Kumar b99048d5c7 New testcases for sizeof() function 2007-11-16 17:55:55 +00:00
Raghubansh Kumar 9b85655327 fix tests: removed values that generate diff. output on Linux64 2007-11-16 17:04:19 +00:00
Jani Taskinen 369a97713c MFH: - Fixed bug #43092 (curl_copy_handle() crashes with > 32 chars long URL) 2007-11-16 14:19:35 +00:00
Jani Taskinen aaa295fa35 MFH:- Fixed bug #43301 (mb_ereg*_replace() crashes when replacement string is
invalid PHP expression and 'e' option is used)
2007-11-16 12:28:34 +00:00
Antony Dovgal 332e1b8482 MFH: fix test 2007-11-15 22:14:29 +00:00
Ilia Alshanetsky 81676a4b6e MFB: Fixed bug #43276 (Incomplete fix for bug #42739, mkdir() under
safe_mode).
2007-11-15 18:58:43 +00:00
Hannes Magnusson 177ed895d3 MFH test 2007-11-15 13:14:19 +00:00
Ilia Alshanetsky dbdbfe37f2 MFB: Don't show file names being examined 2007-11-14 23:45:39 +00:00
Elizabeth Marie Smith b9580cd54e MFB 2007-11-14 19:48:57 +00:00
Raghubansh Kumar b298641605 New testcases for uasort() function 2007-11-14 17:17:51 +00:00
Raghubansh Kumar bfe5708953 fix test for linux64 - choosing smaller float values 2007-11-14 16:30:09 +00:00
Hannes Magnusson d3fd30265a MFB5.3: Fixed bug#43293 (Multiple segfaults in getopt()) 2007-11-14 15:19:29 +00:00
Hannes Magnusson 1dd3064045 Fix test 2007-11-14 13:07:07 +00:00
Ilia Alshanetsky 916ad03b84 MFB: Fixed bug #43279 (pg_send_query_params() converts all elements in
'params' to strings)
2007-11-13 20:08:04 +00:00
Dmitry Stogov 5c6a2679c8 Fixed bug #42692 (Procedure 'int1' not present with doc/lit SoapServer) 2007-11-13 15:10:05 +00:00
Antony Dovgal 3258e0cef2 fix typo 2007-11-13 10:31:34 +00:00
Dmitry Stogov 6c7761c807 Fixed Bug #43248 (backward compatibility break in realpath()) 2007-11-13 09:46:39 +00:00
Zoe Slattery 332c87b12a MFH: Changing the regex for %f so the it will match E-, E+ and E. 2007-11-12 21:16:27 +00:00
Rob Richards fe13ae813d BFN 2007-11-12 19:00:04 +00:00
Rob Richards 376d5f828d MFH: fix bug #43221 (SimpleXML adding default namespace in addAttribute)
add test
2007-11-12 18:59:26 +00:00
Ilia Alshanetsky 5d09ce66a3 Fixed bug #43182 (file_put_contents() LOCK_EX does not work properly on
file
2007-11-12 18:47:46 +00:00
Antony Dovgal 144419b3a1 MFH: fix error message (reported by Felipe Nascimento) 2007-11-12 16:56:39 +00:00
Raghubansh Kumar 7a39cd0117 New testcases for ksort() function 2007-11-12 15:55:10 +00:00
Raghubansh Kumar 09e35a5107 New testcases for krsort() function 2007-11-12 15:54:35 +00:00
Antony Dovgal 7a369dc593 MFH: fix #42736 (xmlrpc_server_call_method() crashes) 2007-11-12 11:24:13 +00:00
Dmitry Stogov 2ea3105939 Fixed bug #42937 (__call() method not invoked when methods are called on parent from child class). 2007-11-12 09:11:49 +00:00
Ilia Alshanetsky 9ed8465d1b MFB: Fixed parse error described in bug #43228 2007-11-11 13:38:28 +00:00
Johannes Schlüter 6ff45cf55e - Use #if instead of #ifdef there (by Mikko Koppanen) 2007-11-10 19:52:08 +00:00
Raghubansh Kumar ad732b6140 fix tests 2007-11-09 12:00:57 +00:00
Dmitry Stogov 1ea2e504e3 Fixed bug #43216 (stream_is_local() returns false on "file://") 2007-11-09 09:37:42 +00:00
Dmitry Stogov 84c1ac4385 Fixed bug #43201 (Crash on using unitialized vals and __get/__set) 2007-11-09 09:28:18 +00:00
Dmitry Stogov 85a2d87bae Fixed bug #43175 (__destruct() throwing an exception with __call() causes segfault) 2007-11-09 09:16:45 +00:00
Raghubansh Kumar a91fe5ca49 fix test: better float values 2007-11-09 08:57:18 +00:00
Raghubansh Kumar 6ca1fdbc25 fix tests: better float values 2007-11-09 07:09:52 +00:00
Ilia Alshanetsky 9623aa59eb Fixed win32 build 2007-11-09 03:51:12 +00:00
Ilia Alshanetsky 0125436439 Back to dev 2007-11-08 13:53:14 +00:00
Ilia Alshanetsky af81b9d973 5.2.5 2007-11-08 13:44:12 +00:00
Antony Dovgal e9e1ba64e9 MFH 2007-11-08 11:39:59 +00:00
Antony Dovgal 2bb2bcdcce fix tests 2007-11-08 11:19:46 +00:00
Antony Dovgal f237b06942 fix test 2007-11-08 10:30:08 +00:00
Antony Dovgal 9958658fc3 MFH: fix test 2007-11-08 10:13:47 +00:00
Antony Dovgal 527f581a6b MFH 2007-11-08 08:12:01 +00:00
Dmitry Stogov 76a5faaf8f Fixed tests 2007-11-08 07:06:55 +00:00
Antony Dovgal 0e6b470417 fix tests 2007-11-07 12:07:59 +00:00
Antony Dovgal 295c1cc04e MFH 2007-11-07 08:31:04 +00:00
Jani Taskinen df35a307cc MFH: - Fixed bug #43196 (array_intersect_assoc() crashes with non-array input) 2007-11-06 13:28:21 +00:00
Raghubansh Kumar c6779ec584 New testcases for asort() function 2007-11-05 16:37:45 +00:00
Raghubansh Kumar f87b27a84e better test title 2007-11-05 16:24:37 +00:00
Raghubansh Kumar bbc87a14eb New testcases for sort() function 2007-11-05 15:38:03 +00:00
Raghubansh Kumar c1ee9eeecf New testcases for array_intersect_assoc() function 2007-11-05 14:39:42 +00:00
Derick Rethans db4b1f7f46 - Updated to version 2007.9 2007-11-05 10:36:50 +00:00
Mattias Bengtsson 5697c1a9ac - Right filename 2007-11-05 01:14:18 +00:00
Mattias Bengtsson 7f57a366dc - Fixed Bug #43121 (gdImageFill with IMG_COLOR_TILED crashes httpd) 2007-11-04 23:56:00 +00:00
Raghubansh Kumar 72c994d464 fix tests: proper temp file names 2007-11-02 03:54:05 +00:00
Raghubansh Kumar 5302a164b1 fix tests: proper temp file names 2007-11-02 03:16:22 +00:00
Raghubansh Kumar 72a009a2f2 Fix test: better float values 2007-11-02 03:00:18 +00:00
Ilia Alshanetsky 79cd4dc1c3 back to dev 2007-11-01 22:37:35 +00:00
Ilia Alshanetsky e3eb1b9bed 5.2.5RC2 2007-11-01 22:33:31 +00:00
Antony Dovgal f6966f28d0 MFH: initialize correct variable 2007-11-01 19:13:49 +00:00
Jani Taskinen e207cc58ac MFH: nuke unused variables 2007-11-01 17:32:26 +00:00
Dmitry Stogov 67f6979df2 Another fix for bug #42773 2007-11-01 15:41:13 +00:00
Dmitry Stogov e468aa44a2 Fixed bug #42848 (Status: header incorrect under FastCGI) 2007-11-01 15:23:14 +00:00
Dmitry Stogov fc6d3652f9 Fixed bug #41635 (SoapServer and zlib.output_compression with FastCGI result in major slowdown) 2007-11-01 14:11:47 +00:00
Dmitry Stogov 375bf36e42 Fixed bug #42773 (WSDL error causes HTTP 500 Response) 2007-11-01 14:10:19 +00:00
Robert Nicholson 997925db9f delete .project file 2007-11-01 10:34:38 +00:00
Robert Nicholson fa0e4863a2 update min_error and max_error testcases to take into account bug fix for bug#43125 2007-11-01 08:42:32 +00:00
Dmitry Stogov 2e869a00ac Added CGI SAPI -T option, to measure execution time of script repeated several times. 2007-10-31 18:24:42 +00:00
Jani Taskinen 171184b64d MFH: fix typo 2007-10-31 13:39:14 +00:00
Jani Taskinen bdbcc4b6d3 MFH: - Fixed Bug #43137 (rmdir() and rename() do not clear statcache) 2007-10-31 13:23:07 +00:00
Ilia Alshanetsky f4cd343b6c MFB: Fixed bug #43139 PDO ignores ATTR_DEFAULT_FETCH_MODE in some cases with
fetchAll()
2007-10-31 12:58:24 +00:00
Ilia Alshanetsky e5db0d8077 MFB: Test not relavent for sqlite that uses built-in bound syntax 2007-10-30 23:03:54 +00:00
Ilia Alshanetsky 68893b0cb4 MFB: Fixed bug #43130 (Bound parameters cannot have - in their name) 2007-10-29 22:37:25 +00:00
Jani Taskinen caa0de9205 MFH 2007-10-29 09:05:55 +00:00
Ilia Alshanetsky 39f1f2fcd3 MFB: Fixed bug #42976 (Crash when constructor for newInstance() or
newInstanceArgs() fails)
2007-10-28 13:47:14 +00:00
Raghubansh Kumar b89ab4a4d5 New testcases for shuffle() function 2007-10-27 12:29:25 +00:00
Raghubansh Kumar 6d9165b332 New testcases for array_intersect() function 2007-10-27 12:16:57 +00:00
Stanislav Malyshev b196fbece9 add attribution 2007-10-26 17:45:26 +00:00
Robert Nicholson 85122b5ae6 Remove unneeded INI sections 2007-10-26 16:08:34 +00:00
Raghubansh Kumar 8ba0f7f275 more testcases for array_unshift() function 2007-10-26 11:47:50 +00:00
Robert Nicholson 8ae4fa2810 new testcases for array_splice 2007-10-26 11:07:31 +00:00
Robert Nicholson b6900cb61d new testcases for max and min 2007-10-26 11:02:04 +00:00
Jani Taskinen 9a6012ff21 fix news 2007-10-26 08:13:15 +00:00
Antony Dovgal ef0652c7f3 MFH 2007-10-25 13:01:16 +00:00
Antony Dovgal 54e44a4707 MFH 2007-10-25 11:54:23 +00:00
Dmitry Stogov 602f26dc08 Added ability to control memory consumption between request using ZEND_MM_COMPACT environment variable 2007-10-25 07:30:29 +00:00
Ilia Alshanetsky 68f328560d MFB: Fixed bug #43099 (XMLWriter::endElement() does not check # of params) 2007-10-24 22:50:19 +00:00
Dmitry Stogov 1155200b02 Fixed realpath cache for existent file with CWD_FILEPATH flag on win32 2007-10-23 05:57:35 +00:00
Mattias Bengtsson a04472df2e - Be paranoid and dont allow multiplication with zero 2007-10-23 01:58:08 +00:00
Ilia Alshanetsky 521048a9ae MFB: Fixed bug #4294 (Move *timeout initialization from RINIT to connect
time)
2007-10-22 22:43:44 +00:00
Raghubansh Kumar 4846f7e349 more testcase for array_filter() function 2007-10-22 11:13:51 +00:00
Andrey Hristov 7c21b37a2f Make it compile with libmysql 3.23 2007-10-22 10:35:33 +00:00
Dmitry Stogov f8e5189286 forgotten description 2007-10-22 07:52:03 +00:00
Dmitry Stogov 9926736605 Fixed move_uploaded_file() to always set file permissions of resulting file according to UMASK (Andrew Sitnikov) 2007-10-22 07:37:20 +00:00
Ilia Alshanetsky 0139100668 MFB: Fixed bug #42944 (test failing due to expectation that /etc/passwd has
0644 permissions).
2007-10-21 15:41:45 +00:00
Raghubansh Kumar 083c7f05ca New tetscases for array_rand() function 2007-10-19 18:39:52 +00:00
Raghubansh Kumar ff9f6404dd New testcases for array_fill() function 2007-10-19 18:34:16 +00:00
Raghubansh Kumar ee0c90556e New testcases for array_filter() function 2007-10-19 18:18:17 +00:00
Raghubansh Kumar 5516f0a247 New testcases for array_unshift() function 2007-10-19 09:12:22 +00:00
Robert Thompson 586ceb9d40 formatting 2007-10-19 05:35:05 +00:00
Robert Thompson 08433295c4 News for getcwd() failure fix. 2007-10-19 01:22:24 +00:00
Ilia Alshanetsky c6ec417654 Back to dev 2007-10-18 23:09:54 +00:00
Ilia Alshanetsky 63f4dc835e 5.2.5RC1 2007-10-18 22:59:43 +00:00
Scott MacVicar 3e47b3cb7b MFB53: Fixed bug #43020 (Warning message is missing with shuffle() and more than one argument) 2007-10-18 14:39:08 +00:00
Dmitry Stogov 168f127abb Fixed bug #42722 (display_errors setting ignored for E_PARSE and HTTP 500 page) 2007-10-18 13:11:30 +00:00
Marcus Boerger 2e2a566c15 - BFN 2007-10-18 05:32:50 +00:00
Marcus Boerger 9f6936fc0c - MF53 Fix for #41692, #42703
# Now in correct branch with fixed checkout and so on
2007-10-18 05:26:55 +00:00
Marcus Boerger efc78b635b - Fix test expectation 2007-10-18 04:51:53 +00:00
Marcus Boerger 017fa36d3f - MFB #42654, #42704 2007-10-18 04:49:55 +00:00
Dmitry Stogov c43fe1c6cf Fixed possible crash because of uninitialized value (Zdash Urf) 2007-10-17 12:08:46 +00:00
Dmitry Stogov 82264b0b45 Fixed bug #42637 (SoapFault : Only http and https are allowed) 2007-10-17 11:17:46 +00:00
Antony Dovgal 7a9cd0a4fd MFH 2007-10-17 08:19:50 +00:00
Antony Dovgal 36e950eb5f avoid double free and use zval_dtor() where neccessary 2007-10-16 13:20:29 +00:00
Andrey Hristov c8f8766461 MFB5_3 : Shadowing of params bring undefined results. 2007-10-16 13:00:32 +00:00
Raghubansh Kumar 7a97b74637 New testcases for array_flip() function 2007-10-15 06:29:37 +00:00
Raghubansh Kumar 92642d0189 New testcases for array_reverse() function 2007-10-15 06:09:27 +00:00
Hannes Magnusson a029117eb5 MFH: fix typo and remove dots in error message 2007-10-13 11:35:35 +00:00
Ilia Alshanetsky accfde57ca MFB: Fixed bug #42917 (PDO::FETCH_KEY_PAIR doesn't work with setFetchMode) 2007-10-11 20:56:22 +00:00
Derick Rethans 94a3bb327e - Updated to version 2007.8 2007-10-11 18:54:37 +00:00
Raghubansh Kumar d7e424acbe fix test (temp. file name) 2007-10-11 11:53:16 +00:00
Jani Taskinen 979e8b5896 MFB53 2007-10-11 09:33:53 +00:00
Jani Taskinen 3c9eb61d04 MF53 2007-10-11 08:28:02 +00:00
Robert Thompson 98505945f2 Fix for bug 41899, safe mode and relative paths with Solaris's broken getcwd(). 2007-10-10 23:54:39 +00:00
Jani Taskinen 6f128d2dd7 - Generated with more recent re2c version 2007-10-10 09:28:51 +00:00
Ilia Alshanetsky 00f18d764a MFB: Fixed bug #42869 (automatic session id insertion adds sessions id to
non-local forms)
2007-10-10 00:35:52 +00:00
Scott MacVicar 6928bdc6bf MFH: Add constant to allow setting of character set with mysqli_options prior to connection. 2007-10-09 16:56:38 +00:00
Raghubansh Kumar 2a078d14c9 New testcases for strip_tags() function 2007-10-09 12:47:00 +00:00
Raghubansh Kumar 1993c9a384 fix test 2007-10-09 12:19:27 +00:00
Raghubansh Kumar ecf81d1529 fix tests 2007-10-09 12:12:19 +00:00
Raghubansh Kumar bf428e90a5 fix tests 2007-10-09 10:56:45 +00:00
Scott MacVicar 7deeb54fe1 MFH: Fix expand_filepath when including relative files, ideally you should test your code... 2007-10-09 10:06:34 +00:00
Jani Taskinen 6d078cea10 MFH: ws + cs 2007-10-09 08:40:47 +00:00
Raghubansh Kumar fdf4c22696 fix tests 2007-10-09 06:18:47 +00:00
Raghubansh Kumar be49c27d17 more tests for fseek(), ftell() & rewind() for win32 2007-10-09 04:55:14 +00:00
Raghubansh Kumar 0c9f9f8ef9 fix tests 2007-10-09 04:07:24 +00:00
Andrey Hristov 8cc2f5d576 News entry 2007-10-08 18:27:18 +00:00
Andrey Hristov 3f6b49a340 Fix for bug #42890 Constant "LIST" defined by mysqlclient and c-client 2007-10-08 18:25:52 +00:00
Raghubansh Kumar 393a686507 fix test 2007-10-08 16:02:55 +00:00
Raghubansh Kumar b8e0f7e78a fix test 2007-10-08 15:44:26 +00:00
Raghubansh Kumar 40098256fb fix tests 2007-10-08 15:36:01 +00:00
Raghubansh Kumar 50a4e50d03 New testcases for strtr() function 2007-10-08 15:19:56 +00:00
Raghubansh Kumar 99d99a0ba0 New testcases for get_html_translation_table() function 2007-10-08 15:19:27 +00:00
Raghubansh Kumar f075e78ac1 fix test 2007-10-08 06:19:11 +00:00
Robert Thompson 477e2b315b Fix for bug 41822 and 41899. expand_filepath() will now return a relative path under the specific situation where getcwd() returns NULL and the file is
still readable.  As far as I have been able to tell, this fix only applies to the Solaris OS where files in directories with (--x) cannot getcwd().
2007-10-08 02:49:26 +00:00
Antony Dovgal 98599a1c23 MFH: fix ws & folding 2007-10-06 21:35:53 +00:00
Raghubansh Kumar ea8fc31bf3 New testcases for setlocale() function 2007-10-05 19:30:51 +00:00
Raghubansh Kumar b84873aa96 New testcases for nl2br() function 2007-10-05 18:44:35 +00:00
Raghubansh Kumar 7cf81e0fe0 New testcases for strrpos() function 2007-10-05 18:31:51 +00:00
Raghubansh Kumar 620b1c63d0 New testcases for str_split() function 2007-10-05 18:16:34 +00:00
Raghubansh Kumar 2a05dfadb2 New testcases for vsprintf() function 2007-10-05 18:07:28 +00:00
Jani Taskinen 5a8c9a7d1c MFH: fix test 2007-10-05 14:57:51 +00:00
Nuno Lopes e1a402b6da allow lcov 1.6 2007-10-05 14:51:36 +00:00
Ilia Alshanetsky f9137cddf6 BFN 2007-10-04 23:26:04 +00:00
Ilia Alshanetsky 07710a5fb9 MFB: Fixed bug #42817 (clone() on a non-object does not result in a fatal
error)
2007-10-04 23:23:43 +00:00
Jani Taskinen 1be447eb95 MFH: Removed ending dots from error messages 2007-10-04 13:31:11 +00:00
Ilia Alshanetsky 91e99495af MFB: Fixed bug #42783 (pg_insert() does not accept an empty list for
insertion)
2007-10-03 23:31:58 +00:00
Michael Wallner b260f03830 MFH: fix CURLOPT_TIMEOUT_MS support 2007-10-03 20:34:48 +00:00
Dmitry Stogov 0cd4039af2 Fixed bug #42818 ($foo = clone(array()); leaks memory) 2007-10-03 09:47:25 +00:00
Dmitry Stogov c7047381f5 Fixed bug #42772 (Storing $this in a static var fails while handling a cast to string) 2007-10-03 08:02:19 +00:00
Stanislav Malyshev f422acca26 add html* utf fix 2007-10-03 05:03:12 +00:00
Stanislav Malyshev ecc9d28fed add test with invalid sequences 2007-10-03 04:58:41 +00:00
Stanislav Malyshev 5e82a38f0a do not accept partial multibyte sequences in html* functions 2007-10-03 04:53:05 +00:00
Antony Dovgal 63b3528cb1 improved recursion detection in array_walk()
fixes #42752, though the leaks are still there
2007-10-02 10:04:13 +00:00
Ilia Alshanetsky 139996e1ac MFB: Added test for bug #42785 2007-10-01 15:33:21 +00:00
Ilia Alshanetsky f89aae49a7 MFB: Fixed bug #42785 (json_encode() formats doubles according to locale
rather then following standard syntax).
2007-10-01 15:23:15 +00:00
Ilia Alshanetsky 94eb3ed91b MFB: Fixed typo in previous patch 2007-10-01 15:00:15 +00:00
Ilia Alshanetsky 191bf235ed MFB: Refactor code to make fixes for coverity issues #385 and #386 a bit
more obvious
2007-10-01 14:53:01 +00:00
Antony Dovgal 7d889d818a fix test 2007-10-01 10:41:36 +00:00
Antony Dovgal d70e63458f fix tests 2007-10-01 10:25:50 +00:00
Antony Dovgal 23d9af29d7 these dots exist since PHP3
even though Jani removed them in 5_3, I can't see how they can cause any BUGS
2007-10-01 10:22:43 +00:00
Pierre Joye 73219c9cb0 - add notice about glob regression (Lukas) 2007-10-01 08:14:03 +00:00
Raghubansh Kumar e538e493d7 smaller tests already exist 2007-09-29 17:21:41 +00:00
Raghubansh Kumar 2770262bad New testcases for sprintf() function 2007-09-29 14:13:53 +00:00
Raghubansh Kumar 69158b5e18 New testcases for chunk_split() function 2007-09-29 12:55:34 +00:00
Raghubansh Kumar f0435592a0 New testcases for stripos() function 2007-09-29 09:19:43 +00:00
Raghubansh Kumar 6eaef0712e New testcases for strrchr() function 2007-09-29 09:18:07 +00:00
Raghubansh Kumar 64f7dafa74 New testcases for join() function 2007-09-29 09:10:18 +00:00
Raghubansh Kumar 16242cd2df New testcases for htmlspecialchars_decode() function 2007-09-29 09:00:48 +00:00
Johannes Schlüter 11d5f9c7c4 - MFH: Fix type in example 2007-09-28 22:04:47 +00:00
Ilia Alshanetsky 3447b26334 MFB: Fixed coverity issue #470 Unitialized integer value used inside
zend_ini_boolean_displayer_cb
2007-09-27 17:27:15 +00:00
Jani Taskinen 12760053c1 missing folding tag 2007-09-27 16:42:11 +00:00
Jani Taskinen 52095f58a5 MFH: use Z_STR* macros 2007-09-27 16:29:27 +00:00
Jani Taskinen b024bedbdb MFH: ws 2007-09-27 16:00:20 +00:00
Jani Taskinen 5cb0b7609a MFH: ws + cs (to keep in sync with HEAD/PHP_5_3 only!) 2007-09-27 15:54:49 +00:00
Jani Taskinen 2c841333ee ws + cs fixes 2007-09-27 13:15:09 +00:00
Antony Dovgal 474f6eef5e MFH: fix coverity issue #412 2007-09-27 09:19:06 +00:00
Antony Dovgal eb2659c7b2 MFH: fix coverity issue #411 2007-09-27 09:15:20 +00:00
10733 changed files with 316625 additions and 1050740 deletions

No files matched your search

+2 -24
View File
@@ -2,38 +2,16 @@ define ____executor_globals
if basic_functions_module.zts
set $tsrm_ls = ts_resource_ex(0, 0)
set $eg = ((zend_executor_globals) (*((void ***) $tsrm_ls))[executor_globals_id-1])
set $cg = ((zend_compiler_globals) (*((void ***) $tsrm_ls))[compiler_globals_id-1])
else
set $eg = executor_globals
set $cg = compiler_globals
end
end
document ____executor_globals
portable way of accessing executor_globals, set $eg
this also sets compiler_globals to $cg
ZTS detection is automatically based on ext/standard module struct
end
define print_cvs
____executor_globals
set $p = $eg.current_execute_data.CVs
set $c = $eg.current_execute_data.op_array.last_var
set $v = $eg.current_execute_data.op_array.vars
set $i = 0
printf "Compiled variables count: %d\n", $c
while $i < $c
printf "%d = %s\n", $i, $v[$i].name
if $p[$i] != 0
printzv *$p[$i]
else
printf "*uninitialized*\n"
end
set $i = $i + 1
end
end
define dump_bt
set $t = $arg0
while $t
@@ -68,8 +46,8 @@ define ____printzv_contents
set $zvalue = $arg0
set $type = $zvalue->type
printf "(refcount=%d", $zvalue->refcount__gc
if $zvalue->is_ref__gc
printf "(refcount=%d", $zvalue->refcount
if $zvalue->is_ref
printf ",is_ref"
end
printf ") "
+90 -90
View File
@@ -1,6 +1,6 @@
========================
PHP Coding Standards
========================
PHP Coding Standards
====================
This file lists several standards that any programmer, adding or changing
code in PHP, should follow. Since this file was added at a very late
@@ -9,38 +9,37 @@ follow it, but it's going in that general direction. Since we are now
well into the version 4 releases, many sections have been recoded to use
these rules.
Code Implementation
-------------------
0. Document your code in source files and the manual. [tm]
[0] Document your code in source files and the manual. [tm]
1. Functions that are given pointers to resources should not free them
[1] Functions that are given pointers to resources should not free them
For instance, ``function int mail(char *to, char *from)`` should NOT free
For instance, function int mail(char *to, char *from) should NOT free
to and/or from.
Exceptions:
- The function's designated behavior is freeing that resource. E.g. efree()
- The function is given a boolean argument, that controls whether or not
the function may free its arguments (if true - the function must free its
arguments, if false - it must not)
- Low-level parser routines, that are tightly integrated with the token
cache and the bison code for minimum memory copying overhead.
2. Functions that are tightly integrated with other functions within the
- The function's designated behavior is freeing that resource. E.g. efree()
- The function is given a boolean argument, that controls whether or not
the function may free its arguments (if true - the function must free its
arguments, if false - it must not)
- Low-level parser routines, that are tightly integrated with the token
cache and the bison code for minimum memory copying overhead.
[2] Functions that are tightly integrated with other functions within the
same module, and rely on each other non-trivial behavior, should be
documented as such and declared 'static'. They should be avoided if
possible.
3. Use definitions and macros whenever possible, so that constants have
[3] Use definitions and macros whenever possible, so that constants have
meaningful names and can be easily manipulated. The only exceptions
to this rule are 0 and 1, when used as false and true (respectively).
Any other use of a numeric constant to specify different behavior
or actions should be done through a #define.
4. When writing functions that deal with strings, be sure to remember
[4] When writing functions that deal with strings, be sure to remember
that PHP holds the length property of each string, and that it
shouldn't be calculated with strlen(). Write your functions in a such
a way so that they'll take advantage of the length property, both
@@ -49,47 +48,47 @@ Exceptions:
doing so, should return that new length, so it doesn't have to be
recalculated with strlen() (e.g. php_addslashes())
5. NEVER USE strncat(). If you're absolutely sure you know what you're doing,
[5] NEVER USE strncat(). If you're absolutely sure you know what you're doing,
check its man page again, and only then, consider using it, and even then,
try avoiding it.
6. Use ``PHP_*`` macros in the PHP source, and ``ZEND_*`` macros in the Zend
part of the source. Although the ``PHP_*`` macro's are mostly aliased to the
``ZEND_*`` macros it gives a better understanding on what kind of macro
you're calling.
[6] Use PHP_* macros in the PHP source, and ZEND_* macros in the Zend
part of the source. Although the PHP_* macro's are mostly aliased to the
ZEND_* macros it gives a better understanding on what kind of macro you're
calling.
7. When commenting out code using a #if statement, do NOT use 0 only. Instead
use "<svn username here>_0". For example, #if FOO_0, where FOO is your
svn user foo. This allows easier tracking of why code was commented out,
especially in bundled libraries.
[7] When commenting out code using a #if statement, do NOT use 0 only. Instead
use "<cvs username here>_0". For example, #if FOO_0, where FOO is your
cvs user foo. This allows easier tracking of why code was commented out,
especially in bundled libraries.
8. Do not define functions that are not available. For instance, if a
library is missing a function, do not define the PHP version of the
function, and do not raise a run-time error about the function not
existing. End users should use function_exists() to test for the
existence of a function
[8] Do not define functions that are not available. For instance, if a
library is missing a function, do not define the PHP version of the
function, and do not raise a run-time error about the function not
existing. End users should use function_exists() to test for the
existence of a function
9. Prefer emalloc(), efree(), estrdup(), etc. to their standard C library
counterparts. These functions implement an internal "safety-net"
mechanism that ensures the deallocation of any unfreed memory at the
end of a request. They also provide useful allocation and overflow
information while running in debug mode.
[9] Prefer emalloc(), efree(), estrdup(), etc. to their standard C library
counterparts. These functions implement an internal "safety-net"
mechanism that ensures the deallocation of any unfreed memory at the
end of a request. They also provide useful allocation and overflow
information while running in debug mode.
In almost all cases, memory returned to the engine must be allocated
using emalloc().
In almost all cases, memory returned to the engine must be allocated
using emalloc().
The use of malloc() should be limited to cases where a third-party
library may need to control or free the memory, or when the memory in
question needs to survive between multiple requests.
The use of malloc() should be limited to cases where a third-party
library may need to control or free the memory, or when the memory in
question needs to survive between multiple requests.
Naming Conventions
------------------
1. Function names for user-level functions should be enclosed with in
[1] Function names for user-level functions should be enclosed with in
the PHP_FUNCTION() macro. They should be in lowercase, with words
underscore delimited, with care taken to minimize the letter count.
Abbreviations should not be used when they greatly decrease the
readability of the function name itself::
readability of the function name itself.
Good:
'mcrypt_enc_self_test'
@@ -99,18 +98,18 @@ Naming Conventions
'mcrypt_module_get_algo_supported_key_sizes'
(could be 'mcrypt_mod_get_algo_sup_key_sizes'?)
'get_html_translation_table'
(could be 'html_get_trans_table'?)
(could be 'html_get_trans_table'?)
Bad:
'hw_GetObjectByQueryCollObj'
'pg_setclientencoding'
'jf_n_s_i'
2. If they are part of a "parent set" of functions, that parent should
[2] If they are part of a "parent set" of functions, that parent should
be included in the user function name, and should be clearly related
to the parent program or function family. This should be in the form
of ``parent_*``::
of parent_*.
A family of 'foo' functions, for example:
Good:
'foo_select_bar'
@@ -122,22 +121,22 @@ Naming Conventions
'fooinsertbaz'
'delete_foo_baz'
3. Function names used by user functions should be prefixed
with ``_php_``, and followed by a word or an underscore-delimited list of
[3] Function names used by user functions should be prefixed
with "_php_", and followed by a word or an underscore-delimited list of
words, in lowercase letters, that describes the function. If applicable,
they should be declared 'static'.
4. Variable names must be meaningful. One letter variable names must be
[4] Variable names must be meaningful. One letter variable names must be
avoided, except for places where the variable has no real meaning or
a trivial meaning (e.g. for (i=0; i<100; i++) ...).
5. Variable names should be in lowercase. Use underscores to separate
[5] Variable names should be in lowercase. Use underscores to separate
between words.
6. Method names follow the 'studlyCaps' (also referred to as 'bumpy case'
[6] Method names follow the 'studlyCaps' (also referred to as 'bumpy case'
or 'camel caps') naming convention, with care taken to minimize the
letter count. The initial letter of the name is lowercase, and each
letter that starts a new 'word' is capitalized::
letter that starts a new 'word' is capitalized.
Good:
'connect()'
@@ -149,11 +148,11 @@ Naming Conventions
'buildsomewidget'
'getI()'
7. Classes should be given descriptive names. Avoid using abbreviations where
possible. Each word in the class name should start with a capital letter,
without underscore delimiters (CampelCaps starting with a capital letter).
The class name should be prefixed with the name of the 'parent set' (e.g.
the name of the extension)::
[7] Classes should be given descriptive names. Avoid using abbreviations where
possible. Each word in the class name should start with a capital letter,
without underscore delimiters (CampelCaps starting with a capital letter).
The class name should be prefixed with the name of the 'parent set' (e.g.
the name of the extension).
Good:
'Curl'
@@ -166,7 +165,7 @@ Naming Conventions
Syntax and indentation
----------------------
1. Never use C++ style comments (i.e. // comment). Always use C-style
[1] Never use C++ style comments (i.e. // comment). Always use C-style
comments instead. PHP is written in C, and is aimed at compiling
under any ANSI-C compliant compiler. Even though many compilers
accept C++-style comments in C code, you have to ensure that your
@@ -175,20 +174,17 @@ Syntax and indentation
because the Win32 port is MS-Visual C++ specific, and this compiler
is known to accept C++-style comments in C code.
2. Use K&R-style. Of course, we can't and don't want to
[2] Use K&R-style. Of course, we can't and don't want to
force anybody to use a style he or she is not used to, but,
at the very least, when you write code that goes into the core
of PHP or one of its standard modules, please maintain the K&R
style. This applies to just about everything, starting with
indentation and comment styles and up to function declaration
syntax. Also see Indentstyle_.
syntax.
.. _Indentstyle: http://www.catb.org/~esr/jargon/html/I/indent-style.html
3. Be generous with whitespace and braces. Keep one empty line between the
variable declaration section and the statements in a block, as well as
between logical statement groups in a block. Maintain at least one empty
line between two functions, preferably two. Always prefer::
(see also http://www.catb.org/~esr/jargon/html/I/indent-style.html)
[3] Be generous with whitespace and braces. Always prefer:
if (foo) {
bar;
@@ -198,18 +194,23 @@ Syntax and indentation
if(foo)bar;
4. When indenting, use the tab character. A tab is expected to represent
Keep one empty line between the variable declaration section and
the statements in a block, as well as between logical statement
groups in a block. Maintain at least one empty line between
two functions, preferably two.
[4] When indenting, use the tab character. A tab is expected to represent
four spaces. It is important to maintain consistency in indenture so
that definitions, comments, and control structures line up correctly.
5. Preprocessor statements (#if and such) MUST start at column one. To
[5] Preprocessor statements (#if and such) MUST start at column one. To
indent preprocessor directives you should put the # at the beginning
of a line, followed by any number of whitespace.
Testing
-------
1. Extensions should be well tested using *.phpt tests. Read about that
[1] Extensions should be well tested using *.phpt tests. Read about that
in README.TESTING.
Documentation and Folding Hooks
@@ -218,20 +219,20 @@ Documentation and Folding Hooks
In order to make sure that the online documentation stays in line with
the code, each user-level function should have its user-level function
prototype before it along with a brief one-line description of what the
function does. It would look like this::
function does. It would look like this:
/* {{{ proto int abs(int number)
Returns the absolute value of the number */
PHP_FUNCTION(abs)
{
...
}
/* }}} */
/* {{{ proto int abs(int number)
Returns the absolute value of the number */
PHP_FUNCTION(abs)
{
...
}
/* }}} */
The {{{ symbols are the default folding symbols for the folding mode in
Emacs and vim (set fdm=marker). Folding is very useful when dealing with
large files because you can scroll through the file quickly and just unfold
the function you wish to work on. The }}} at the end of each function marks
Emacs and vim (set fdm=marker). Folding is very useful when dealing with
large files because you can scroll through the file quickly and just unfold
the function you wish to work on. The }}} at the end of each function marks
the end of the fold, and should be on a separate line.
The "proto" keyword there is just a helper for the doc/genfuncsummary script
@@ -239,10 +240,10 @@ which generates a full function summary. Having this keyword in front of the
function prototypes allows us to put folds elsewhere in the code without
messing up the function summary.
Optional arguments are written like this::
Optional arguments are written like this:
/* {{{ proto object imap_header(int stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])
Returns a header object with the defined parameters */
/* {{{ proto object imap_header(int stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])
Returns a header object with the defined parameters */
And yes, please keep the prototype on a single line, even if that line
is massive.
@@ -255,11 +256,10 @@ that the first implementation include a file labeled 'EXPERIMENTAL'
in the function directory, and that the functions follow the
standard prefixing conventions during their initial implementation.
The file labelled 'EXPERIMENTAL' should include the following
information::
Any authoring information (known bugs, future directions of the module).
Ongoing status notes which may not be appropriate for SVN comments.
The file labeled 'EXPERIMENTAL' should include the following
information:
Any authoring information (known bugs, future directions of the module).
Ongoing status notes which may not be appropriate for CVS comments.
Aliases & Legacy Documentation
-----------------------------------
+14191
View File
File diff suppressed because it is too large. Load diff
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+44 -72
View File
@@ -73,22 +73,10 @@ PRIMARY MAINTAINER: Edin Kadribasic <edink@php.net>
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: fpm
PRIMARY MAINTAINER: Antony Dovgal <tony2001@php.net>, Jerome Loyet <fat@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.3.3
-------------------------------------------------------------------------------
EXTENSION: isapi
MAINTENANCE: Unknown
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: litespeed
PRIMARY MAINTAINER: George Wang <gwang@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.3
-------------------------------------------------------------------------------
EXTENSION: milter
MAINTENANCE: Unknown
STATUS: Unknown
@@ -130,16 +118,29 @@ STATUS: Experimental
-------------------------------------------------------------------------------
EXTENSION: dba
PRIMARY MAINTAINER: Marcus Börger <helly@php.net>,Christopher Jones <sixd@php.net>, Pierre-Alain Joye <pajoye@php.net>
PRIMARY MAINTAINER: Marcus Börger <helly@php.net>
MAINTENANCE: Maintained
STATUS: Working
COMMENT: DBM abstraction for db2, db3, db4, dbm, ndbm, gdbm, ini
-------------------------------------------------------------------------------
EXTENSION: dbase
MAINTENANCE: Orphaned
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: fbsql
PRIMARY MAINTAINER: Frank M. Kromann <fmk@swwwing.com>
MAINTENANCE: Unknown
STATUS: Unknown
-------------------------------------------------------------------------------
EXTENSION: interbase
PRIMARY MAINTAINER: Ard Biesheuvel <ard@ard.nu>, Jouni Ahto <jouni.ahto@exdec.fi>
MAINTENANCE: Odd fixes
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: msql
MAINTENANCE: Unknown
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: mssql
PRIMARY MAINTAINER: Frank M. Kromann <fmk@swwwing.com>
MAINTENANCE: Maintained
@@ -147,22 +148,16 @@ STATUS: Working
COMMENT: Tested on phpts and isapi versions
-------------------------------------------------------------------------------
EXTENSION: mysql
PRIMARY MAINTAINER: Zak Greant <zak@mysql.com>, Georg Richter <georg@php.net>, Johannes Schlüter <johannes@php.net>, Ulf Wendel <uw@php.net>
PRIMARY MAINTAINER: Zak Greant <zak@mysql.com>, Georg Richter <georg@php.net>
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: mysqli
PRIMARY MAINTAINER: Georg Richter <georg@php.net>, Andrey Hristov <andrey@php.net>, Johannes Schlüter <johannes@php.net>, Ulf Wendel <uw@php.net>
PRIMARY MAINTAINER: Georg Richter <georg@php.net>, Andrey Hristov <andrey@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.0
-------------------------------------------------------------------------------
EXTENSION: mysqlnd
PRIMARY MAINTAINER: Georg Richter <georg@php.net>, Andrey Hristov <andrey@php.net>, Johannes Schlüter <johannes@php.net>, Ulf Wendel <uw@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.3
-------------------------------------------------------------------------------
EXTENSION: oci8
PRIMARY MAINTAINER: Christopher Jones <sixd@php.net>, Antony Dovgal <tony2001@php.net>
MAINTENANCE: Maintained
@@ -175,7 +170,7 @@ STATUS: Working
COMMENT: Working
-------------------------------------------------------------------------------
EXTENSION: pdo
PRIMARY MAINTAINER: Ilia Alshanetsky <iliaa@php.net>, Wez Furlong <wez@php.net>
PRIMARY MAINTAINER: Unknown
MAINTENANCE: Odd fixes
STATUS: Working
SINCE: 5.1
@@ -187,13 +182,13 @@ STATUS: Working
SINCE: 5.1
-------------------------------------------------------------------------------
EXTENSION: pdo_firebird
PRIMARY MAINTAINER: Lars Westermann <lwe@php.net>
MAINTENANCE: Maintained
PRIMARY MAINTAINER: Unknown
MAINTENANCE: Odd fixes
STATUS: Working
SINCE: 5.1
-------------------------------------------------------------------------------
EXTENSION: pdo_mysql
PRIMARY MAINTAINER: Ilia Alshanetsky <iliaa@php.net>, Johannes Schlüter <johannes@php.net>, Andrey Hristov <andrey@php.net>, Ulf Wendel <uw@php.net>
PRIMARY MAINTAINER: Unknown
MAINTENANCE: Odd fixes
STATUS: Working
SINCE: 5.1
@@ -211,13 +206,13 @@ STATUS: Working
SINCE: 5.1
-------------------------------------------------------------------------------
EXTENSION: pdo_pgsql
PRIMARY MAINTAINER: Ilia Alshanetsky <iliaa@php.net>
PRIMARY MAINTAINER: Unknown
MAINTENANCE: Odd fixes
STATUS: Working
SINCE: 5.1
-------------------------------------------------------------------------------
EXTENSION: pdo_sqlite
PRIMARY MAINTAINER: Ilia Alshanetsky <iliaa@php.net>
PRIMARY MAINTAINER: Unknown
MAINTENANCE: Odd fixes
STATUS: Working
SINCE: 5.1
@@ -229,22 +224,18 @@ STATUS: Working
COMMENT: Use PostgreSQL 7.0.x or later. PostgreSQL 6.5.3 or less have fatal bug.
-------------------------------------------------------------------------------
EXTENSION: sqlite
PRIMARY MAINTAINER: Marcus Boerger <helly@php.net>, Wez Furlong <wez@php.net>, Ilia Alshanetsky <iliaa@php.net>
PRIMARY MAINTAINER: Marcus Boerger <helly@php.net>, Wez Furlong <wez@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.0 (Since 4.3.2 in PECL)
COMMENT: Integrates SQLite 2 embeddable SQL database engine.
COMMENT: Integrates SQLite embeddable SQL database engine.
-------------------------------------------------------------------------------
EXTENSION: sqlite3
PRIMARY MAINTAINER: Scott MacVicar <scottmac@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.3
COMMENT: Integrates SQLite 3 embeddable SQL database engine.
EXTENSION: sybase
MAINTENANCE: Unknown
STATUS: Not Working
-------------------------------------------------------------------------------
EXTENSION: sybase_ct
PRIMARY MAINTAINER: Timm Friebe <thekid@thekid.de>
MAINTENANCE: Maintained
MAINTENANCE: Unknown
STATUS: Working
-------------------------------------------------------------------------------
@@ -275,12 +266,7 @@ MAINTENANCE: Orphaned
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: xml
PRIMARY MAINTAINER: Thies C. Arntzen <thies@thieso.net>, Rob Richards <rrichards@php.net>
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: libxml
PRIMARY MAINTAINER: Rob Richards <rrichards@php.net>, Christian Stocker <chregu@php.net>
PRIMARY MAINTAINER: Thies C. Arntzen <thies@thieso.net>
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
@@ -295,7 +281,7 @@ MAINTENANCE: Orphaned
STATUS: Experimental
-------------------------------------------------------------------------------
EXTENSION: xmlwriter
PRIMARY MAINTAINER: Rob Richards <rrichards@php.net>, Pierre-Alain Joye <pajoye@php.net>
PRIMARY MAINTAINER: Rob Richards <rrichards@php.net>, Pierre-Alain Joye <pajoye@php.net>
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
@@ -311,7 +297,7 @@ SINCE: 5.0
-------------------------------------------------------------------------------
EXTENSION: bcmath
MAINTENANCE: Andi Gutmans <andi@zend.com>
MAINTENANCE: Unknown
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: bz2
@@ -353,12 +339,6 @@ MAINTENANCE: Maintained
STATUS: Working
SINCE: 4.2
-------------------------------------------------------------------------------
EXTENSION: fileinfo
PRIMARY MAINTAINER: Derick Rethans <derick@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.3
-------------------------------------------------------------------------------
EXTENSION: filter
PRIMARY MAINTAINER: Derick Rethans <derick@php.net>, Pierre-Alain Joye <pajoye@php.net>, Ilia Alshanetsky <iliaa@php.net>
MAINTENANCE: Maintained
@@ -390,14 +370,8 @@ PRIMARY MAINTAINER: Moriyoshi Koizumi <moriyoshi@php.net>
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: intl
PRIMARY MAINTAINER: Stanislav Malyshev <stas@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.3
-------------------------------------------------------------------------------
EXTENSION: imap
PRIMARY MAINTAINER: Chuck Hagenbuch <chuck@horde.org>, Ilia Alshanetsky <iliaa@php.net>, Pierre-Alain Joye <pajoye@php.net>
PRIMARY MAINTAINER: Chuck Hagenbuch <chuck@horde.org>, Ilia Alshanetsky <iliaa@php.net>
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
@@ -408,7 +382,7 @@ STATUS: Working
SINCE: 5.2
-------------------------------------------------------------------------------
EXTENSION: ldap
PRIMARY MAINTAINER: Stig Venaas <venaas@php.net>, Douglas Goldstein <cardoe@php.net>, Pierre-Alain Joye <pajoye@php.net>
PRIMARY MAINTAINER: Stig Venaas <venaas@php.net>, Douglas Goldstein <cardoe@php.net>
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
@@ -423,7 +397,7 @@ MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: mhash
PRIMARY MAINTAINER: Sascha Schumann <sascha@schumann.cx>, Scott MacVicar <scottmac@php.net>
PRIMARY MAINTAINER: Sascha Schumann <sascha@schumann.cx>
MAINTENANCE: Unknown
STATUS: Working
-------------------------------------------------------------------------------
@@ -431,13 +405,18 @@ EXTENSION: mime_magic
PRIMARY MAINTAINER: Unknown
MAINTENANCE: Deprecated
STATUS: Experimental
COMMENT: Use the fileinfo extension instead
COMMENT: Use PECL's fileinfo extension instead
-------------------------------------------------------------------------------
EXTENSION: ming
PRIMARY MAINTAINER: Frank M. Kromann
MAINTENANCE: Unknown
STATUS: Experimental
-------------------------------------------------------------------------------
EXTENSION: ncurses
PRIMARY MAINTAINER Ilia Alshanetsky <iliaa@php.net>, Wez Furlong <wez@php.net>, Hartmut Holzgraefe <hholzgra@php.net>, Georg Richter <georg@php.net>
MAINTENANCE: Unknown
STATUS: Experimental
-------------------------------------------------------------------------------
EXTENSION: openssl
PRIMARY MAINTAINER: Wez Furlong <wez@php.net>, Pierre-Alain Joye <pajoye@php.net>
MAINTENANCE: Maintained
@@ -445,8 +424,7 @@ STATUS: Working
SINCE: 4.0.4
-------------------------------------------------------------------------------
EXTENSION: pcntl
PRIMARY MAINTAINER: Arnaud Le Blanc <lbarnaud@php.net>
MAINTENANCE: Maintained
MAINTENANCE: Unknown
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: pcre
@@ -454,12 +432,6 @@ PRIMARY MAINTAINER: Andrei Zmievski <andrei@php.net>, Nuno Lopes <nlopess@php.n
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: phar
PRIMARY MAINTAINER: Greg Beaver <cellog@php.net>, Marcus Börger <helly@php.net>, Steph Fox <sfox@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.3
-------------------------------------------------------------------------------
EXTENSION: posix
PRIMARY MAINTAINER: Kristian Köhntopp <kris@koehntopp.de>
MAINTENANCE: Maintained
@@ -473,7 +445,7 @@ SINCE: 4.0.2
-------------------------------------------------------------------------------
EXTENSION: readline
MAINTENANCE: Unknown
STATUS: Working
STATUS: Unknown
-------------------------------------------------------------------------------
EXTENSION: recode
PRIMARY MAINTAINER: Kristian Köhntopp <kris@koehntopp.de>
@@ -497,7 +469,7 @@ STATUS: Working
SINCE: 4.0.3
-------------------------------------------------------------------------------
EXTENSION: snmp
PRIMARY MAINTAINER: Rasmus Lerdorf <rasmus@php.net>, Pierre-Alain Joye <pajoye@php.net>
PRIMARY MAINTAINER: Rasmus Lerdorf <rasmus@php.net>
MAINTENANCE: Odd Fixes
STATUS: Working
-------------------------------------------------------------------------------
@@ -508,7 +480,7 @@ STATUS: Working
SINCE: 4.0.2
-------------------------------------------------------------------------------
EXTENSION: spl
PRIMARY MAINTAINER: Marcus Boerger <helly@php.net>, Etienne Kneuss <colder@php.net>
PRIMARY MAINTAINER: Marcus Boerger <helly@php.net>
MAINTENANCE: Maintained
STATUS: Working
SINCE: 5.0.0
+1302 -1317
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -1,6 +1,6 @@
--------------------------------------------------------------------
The PHP License, version 3.01
Copyright (c) 1999 - 2010 The PHP Group. All rights reserved.
Copyright (c) 1999 - 2006 The PHP Group. All rights reserved.
--------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
+2 -2
View File
@@ -7,7 +7,7 @@ $(builddir)/zend_language_scanner.lo: $(srcdir)/zend_language_parser.h
$(builddir)/zend_ini_scanner.lo: $(srcdir)/zend_ini_parser.h
$(srcdir)/zend_language_scanner.c: $(srcdir)/zend_language_scanner.l
@(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) --case-inverted -cbdFt Zend/zend_language_scanner_defs.h -oZend/zend_language_scanner.c Zend/zend_language_scanner.l)
@$(LEX) -Pzend -S$(srcdir)/flex.skl -o$@ -i $(srcdir)/zend_language_scanner.l
$(srcdir)/zend_language_parser.h: $(srcdir)/zend_language_parser.c
$(srcdir)/zend_language_parser.c: $(srcdir)/zend_language_parser.y
@@ -18,6 +18,6 @@ $(srcdir)/zend_ini_parser.c: $(srcdir)/zend_ini_parser.y
@$(YACC) -p ini_ -v -d $(srcdir)/zend_ini_parser.y -o $@
$(srcdir)/zend_ini_scanner.c: $(srcdir)/zend_ini_scanner.l
@(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) --case-inverted -cbdFt Zend/zend_ini_scanner_defs.h -oZend/zend_ini_scanner.c Zend/zend_ini_scanner.l)
@$(LEX) -Pini_ -S$(srcdir)/flex.skl -o$@ -i $(srcdir)/zend_ini_scanner.l
$(builddir)/zend_indent.lo $(builddir)/zend_highlight.lo $(builddir)/zend_compile.lo: $(srcdir)/zend_language_parser.h
+18 -6
View File
@@ -5,7 +5,24 @@
lcov: lcov-html
lcov-test: lcov-clean-data test
lcov-test: all
@echo "Running test suite"
@find . -name \*.gcda -o -name \*.da -o -name \*.bbg? | xargs rm -f
-@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
NO_INTERACTION=1 \
TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
TEST_PHP_SRCDIR=$(top_srcdir) \
CC="$(CC)" \
$(PHP_EXECUTABLE) -d 'open_basedir=' -d 'safe_mode=0' -d 'output_buffering=0' -d 'memory_limit=-1' $(top_srcdir)/run-tests.php -d 'extension_dir=modules/' -d `( . $(PHP_MODULES) ; echo extension=$$dlname)` tests/; \
elif test ! -z "$(SAPI_CLI_PATH)" && test -x "$(SAPI_CLI_PATH)"; then \
NO_INTERACTION=1 \
TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \
TEST_PHP_SRCDIR=$(top_srcdir) \
CC="$(CC)" \
$(top_builddir)/$(SAPI_CLI_PATH) -d 'open_basedir=' -d 'safe_mode=0' -d 'output_buffering=0' -d 'memory_limit=-1' $(top_srcdir)/run-tests.php $(TESTS); \
else \
echo "ERROR: Cannot run tests without CLI sapi."; \
fi
php_lcov.info: lcov-test
@echo "Generating data for $@"
@@ -44,9 +61,6 @@ php_lcov.info: lcov-test
test -f "$$x.bb" && cp $$x.bb lcov_data/$$y.bb ; \
test -f "$$x.bbg" && cp $$x.bbg lcov_data/$$y.bbg ; \
done
for dir in ext/bcmath/libbcmath ext/fileinfo/libmagic ext/gd/libgd ext/mbstring/libmbfl ext/mbstring/oniguruma ext/pcre/pcrelib ext/pdo_sqlite/libsqlite ext/sqlite/libsqlite ext/sqlite3/libsqlite ext/xmlrpc/libxmlrpc ext/zip/lib; do \
test -d lcov_data/$$dir && rm -rf lcov_data/$$dir ; \
done
@echo
@echo "Generating $@"
@$(LTP) --directory lcov_data/ --capture --base-directory=lcov_data --output-file $@
@@ -60,5 +74,3 @@ lcov-clean:
rm -rf lcov_data/
rm -rf lcov_html/
lcov-clean-data:
@find . -name \*.gcda -o -name \*.da -o -name \*.bbg? | xargs rm -f
+47 -21
View File
@@ -11,7 +11,7 @@ all: $(all_targets)
@echo "Don't forget to run 'make test'."
@echo
build-modules: $(PHP_MODULES) $(PHP_ZEND_EX)
build-modules: $(PHP_MODULES)
libphp$(PHP_MAJOR_VERSION).la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
@@ -73,32 +73,57 @@ PHP_TEST_SHARED_EXTENSIONS = ` \
for i in $(PHP_MODULES)""; do \
. $$i; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \
done; \
fi; \
if test "x$(PHP_ZEND_EX)" != "x"; then \
for i in $(PHP_ZEND_EX)""; do \
. $$i; $(top_srcdir)/build/shtool echo -n -- " -d $(ZEND_EXT_TYPE)=$(top_builddir)/modules/$$dlname"; \
done; \
fi`
PHP_DEPRECATED_DIRECTIVES_REGEX = '^(define_syslog_variables|register_(globals|long_arrays)?|safe_mode|magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*='
test: all
-@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \
if test "$$INI_FILE"; then \
$(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
else \
echo > $(top_builddir)/tmp-php.ini; \
fi; \
INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \
if test "$$INI_SCANNED_PATH"; then \
INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \
$(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \
fi; \
TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
TEST_PHP_SRCDIR=$(top_srcdir) \
CC="$(CC)" \
$(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
rm $(top_builddir)/tmp-php.ini; \
$(PHP_EXECUTABLE) $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -U -d extension_dir=modules/ $(PHP_TEST_SHARED_EXTENSIONS) tests/; \
elif test ! -z "$(SAPI_CLI_PATH)" && test -x "$(SAPI_CLI_PATH)"; then \
INI_FILE=`$(top_builddir)/$(SAPI_CLI_PATH) -r 'echo php_ini_loaded_file();'`; \
if test "$$INI_FILE"; then \
$(EGREP) -v '^extension[\t\ ]*=' "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
else \
echo > $(top_builddir)/tmp-php.ini; \
fi; \
TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \
TEST_PHP_SRCDIR=$(top_srcdir) \
CC="$(CC)" \
$(top_builddir)/$(SAPI_CLI_PATH) $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -c $(top_builddir)/tmp-php.ini -U -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
else \
echo "ERROR: Cannot run tests without CLI sapi."; \
fi
utest: all
-@if test ! -z "$(SAPI_CLI_PATH)" && test -x "$(SAPI_CLI_PATH)"; then \
INI_FILE=`$(top_builddir)/$(SAPI_CLI_PATH) -r 'echo php_ini_loaded_file();'`; \
if test "$$INI_FILE"; then \
$(EGREP) -v '^extension[\t\ ]*=' "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
else \
echo > $(top_builddir)/tmp-php.ini; \
fi; \
TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \
TEST_PHP_SRCDIR=$(top_srcdir) \
CC="$(CC)" \
$(top_builddir)/$(SAPI_CLI_PATH) $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -c $(top_builddir)/tmp-php.ini -u -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
else \
echo "ERROR: Cannot run tests without CLI sapi."; \
fi
ntest: all
-@if test ! -z "$(SAPI_CLI_PATH)" && test -x "$(SAPI_CLI_PATH)"; then \
INI_FILE=`$(top_builddir)/$(SAPI_CLI_PATH) -r 'echo php_ini_loaded_file();'`; \
if test "$$INI_FILE"; then \
$(EGREP) -v '^extension[\t\ ]*=' "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
else \
echo > $(top_builddir)/tmp-php.ini; \
fi; \
TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \
TEST_PHP_SRCDIR=$(top_srcdir) \
CC="$(CC)" \
$(top_builddir)/$(SAPI_CLI_PATH) $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -c $(top_builddir)/tmp-php.ini -N -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
else \
echo "ERROR: Cannot run tests without CLI sapi."; \
fi
@@ -112,8 +137,9 @@ clean:
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(OVERALL_TARGET) modules/* libs/*
distclean: clean
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp
rm -f config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h php5.spec sapi/apache/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp
$(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f
find . -name Makefile | xargs rm -f
.PHONY: all clean install distclean test
.NOEXPORT:
+5 -2820
View File
File diff suppressed because it is too large. Load diff
+125
View File
@@ -0,0 +1,125 @@
This is the first file you should be reading after you get your CVS account.
We'll assume you're basically familiar with CVS, but feel free to post
your questions on the mailing list. Please have a look at
http://cvsbook.red-bean.com/ for more detailed information on CVS.
PHP is developed through the efforts of a large number of people.
Collaboration is a Good Thing(tm), and CVS lets us do this. Thus, following
some basic rules with regards to CVS usage will:
a. Make everybody happier, especially those responsible for maintaining
the CVS itself.
b. Keep the changes consistently well documented and easily trackable.
c. Prevent some of those 'Oops' moments.
d. Increase the general level of good will on planet Earth.
Having said that, here are the organizational rules:
1. Respect other people working on the project.
2. Discuss any significant changes on the list before committing.
3. Look at EXTENSIONS file to see who is the primary maintainer of
the code you want to contribute to.
4. If you "strongly disagree" about something another person did, don't
start fighting publicly - take it up in private email.
5. If you don't know how to do something, ask first!
6. Test your changes before committing them. We mean it. Really.
To do so use "make test".
7. For development use the --enable-maintainer-zts switch to ensure your
code handles TSRM correctly and doesn't break for thos who need that.
Currently we have the following branches in use:
HEAD Will become PHP 6.0. This CVS branch is for active development.
PHP_5_2 Is used to release the PHP 5.2.x series. Only minor feature
enhancements may go in here, but please keep that as infrequent as
possible.
PHP_5_1 This branch is closed.
PHP_4_4 Is used to release the PHP 4.4.x series. Only bugfixes are permitted
on this branch (Consult the releasemaster prior to commit).
PHP_4_3 This branch is closed.
The next few rules are more of a technical nature.
1. DO NOT TOUCH ChangeLog! It is automagically updated from the commit
messages every day. Woe be to those who attempt to mess with it.
2. All news updates intended for public viewing, such as new features,
bug fixes, improvements, etc., should go into the NEWS file.
NB! Lines, starting with @ will go automagically into NEWS file, but
this is NOT recommended, though. Please, add news entries directly to
NEWS file and don't forget to keep them adjusted and sorted.
3. Do not commit multiple file and dump all messages in one commit. If you
modified several unrelated files, commit each group separately and
provide a nice commit message for each one. See example below.
4. Do write your commit message in such a way that it makes sense even
without the corresponding diff. One should be able to look at it, and
immediately know what was modified. Definitely include the function name
in the message as shown below.
5. In your commit messages, keep each line shorter than 80 characters. And
try to align your lines vertically, if they wrap. It looks bad otherwise.
6. If you modified a function that is callable from PHP, prepend PHP to
the function name as shown below.
The format of the commit messages is pretty simple.
Use a - to start a new item in your commit message.
If a line begins with #, it is taken to be a comment and will not appear
in the ChangeLog. Everything else goes into the ChangeLog.
It is important to note that if your comment or news logline spans multiple
lines, you have to put # at the beginning of _every_ such line.
Example. Say you modified two files, datetime.c and string.c. In datetime.c you
added a new format option for the date() function, and in string.c you fixed a
memory leak in php_trim(). Don't commit both of these at once. Commit them
separately and try to make sure your commit messages look something like the
following.
For datetime.c:
- Added new 'K' format modifier to date() for printing out number of days until
New Year's Eve.
For string.c:
- Fixed a memory leak in php_trim() resulting from improper use of zval_dtor().
#- Man, that thing was leaking all over the place!
The # lines will be omitted from the ChangeLog automagically.
Use the [DOC] tag in your log message whenever you feel that your changes
imply a documentation modification. The php-doc team will automatically
get notified about your commit through the php-doc mailing list.
If you fix some bugs, you should note the bug ID numbers in your
commit message. Bug ID should be prefixed by "#" for easier access to
bug report when developers are browsing CVS via LXR or Bonsai.
Example:
Fixed bug #14016 (pgsql notice handler double free crash bug.)
If you don't see your messages in ChangeLog right away, don't worry!
These files are updated once a day, so your stuff will not show up until
somewhat later.
You can use LXR (http://lxr.php.net/) and Bonsai (http://bonsai.php.net/)
to look at PHP CVS repository in various ways.
To receive daily updates to ChangeLog and NEWS, send an empty message to
php-cvs-daily-subscribe@lists.php.net.
Happy hacking,
PHP Team
+50 -21
View File
@@ -96,7 +96,29 @@ OTHER OPTIONS
function entries and definitions at the end of the file, for copying and
pasting into an already existing module.
--xml[=file]
--assign-params
--string-lens
By default, function proto 'void foo(string bar)' creates the following:
...
zval **bar;
... (zend_get_parameters_ex() called in the middle...)
convert_to_string_ex(bar);
Specifying both of these options changes the generated code to:
...
zval **bar_arg;
int bar_len;
char *bar = NULL;
... (zend_get_parameters_ex() called in the middle...)
convert_to_string_ex(bar_arg);
bar = Z_STRVAL_PP(bar_arg);
bar_len = Z_STRLEN_PP(bar_arg);
You shouldn't have to ask what happens if you leave --string-lens out. If you
have to, it's questionable whether you should be reading this document.
--with-xml[=file]
Creates the basics for phpdoc .xml file.
@@ -134,32 +156,39 @@ EXAMPLE
question marks to be replaced by you, and you must of course add your own
value definitions too):
/* {{{ proto bool my_drawtext(resource image, string text, resource font, int x, int y [, int color])
/* {{{ proto bool my_drawtext(resource image, string text, resource font, int x, int y[, int color])
*/
PHP_FUNCTION(my_drawtext)
{
char *text = NULL;
int argc = ZEND_NUM_ARGS();
int image_id = -1;
int text_len;
int font_id = -1;
long x;
long y;
long color;
zval *image = NULL;
zval *font = NULL;
zval **image, **text, **font, **x, **y, **color;
int argc;
int image_id = -1;
int font_id = -1;
if (zend_parse_parameters(argc TSRMLS_CC, "rsrll|l", &image, &text, &text_len, &font, &x, &y, &color) == FAILURE)
return;
argc = ZEND_NUM_ARGS();
if (argc < 5 || argc > 6 || zend_get_parameters_ex(argc, &image, &text, &font, &x, &y, &color) == FAILURE) {
WRONG_PARAM_COUNT;
}
if (image) {
ZEND_FETCH_RESOURCE(???, ???, image, image_id, "???", ???_rsrc_id);
}
if (font) {
ZEND_FETCH_RESOURCE(???, ???, font, font_id, "???", ???_rsrc_id);
}
ZEND_FETCH_RESOURCE(???, ???, image, image_id, "???", ???_rsrc_id);
ZEND_FETCH_RESOURCE(???, ???, font, font_id, "???", ???_rsrc_id);
php_error(E_WARNING, "my_drawtext: not yet implemented");
switch (argc) {
case 6:
convert_to_long_ex(color);
/* Fall-through. */
case 5:
convert_to_long_ex(y);
convert_to_long_ex(x);
/* font: fetching resources already handled. */
convert_to_string_ex(text);
/* image: fetching resources already handled. */
break;
default:
WRONG_PARAM_COUNT;
}
php_error(E_WARNING, "my_drawtext: not yet implemented");
}
/* }}} */
-79
View File
@@ -1,79 +0,0 @@
====================
Mailinglist Rules
====================
This is the first file you should be reading before doing any posts on PHP
mailinglists. Following these rules is considered imperative to the success of
the PHP project. Therefore expect your contributions to be of much less positive
impact if you do not follow these rules. More importantly you can actually
assume that not following these rules will hurt the PHP project.
PHP is developed through the efforts of a large number of people.
Collaboration is a Good Thing(tm), and mailinglists lets us do this. Thus,
following some basic rules with regards to mailinglist usage will:
a. Make everybody happier, especially those responsible for developing PHP
itself.
b. Help in making sure we all use our time more efficiently.
c. Prevent you from making a fool of yourself in public.
d. Increase the general level of good will on planet Earth.
Having said that, here are the organizational rules:
1. Respect other people working on the project.
2. Do not post when you are angry. Any post can wait a few hours. Review
your post after a good breather or a good nights sleep.
3. Make sure you pick the right mailinglist for your posting. Please review
the descriptions on the mailinglist overview page
(http://www.php.net/mailing-lists.php). When in doubt ask a friend or
someone you trust on IRC.
4. Make sure you know what you are talking about. PHP is a very large project
that strives to be very open. The flip side is that the core developers
are faced with a lot of requests. Make sure that you have done your
research before posting to the entire developer community.
5. Patches have a much greater chance of acceptance than just asking the
PHP developers to implement a feature for you. For one it makes the
discussion more concrete and it shows that the poster put thought and time
into the request.
6. If you are posting to an existing thread, make sure that you know what
previous posters have said. This is even more important the longer the
thread is already.
7. Please configure your email client to use a real name and keep message
signatures to a maximum of 2 lines if at all necessary.
The next few rules are more some general hints:
1. If you notice that your posting ratio is much higher than that of other
people, double check the above rules. Try to wait a bit longer before
sending your replies to give other people more time to digest your answers
and more importantly give you the opportunity to make sure that you
aggregate your current position into a single mail instead of multiple
ones.
2. Consider taking a step back from a very active thread now and then. Maybe
talking to some friends and fellow developers will help in understanding
the other opinions better.
3. Do not top post. Place your answer underneath anyone you wish to quote
and remove any previous comment that is not relevant to your post.
4. Do not high-jack threads, by bringing up entirely new topics. Please
create an entirely new thread copying anything you wish to quote into the
new thread.
Finally, additional hints on how to behave inside the virtual community can be
found in RFC 1855 (http://www.faqs.org/rfcs/rfc1855.html).
Happy hacking,
PHP Team
+45 -133
View File
@@ -31,68 +31,28 @@ resources cannot be auto-converted.
Type specifiers
---------------
The following list shows the type specifier, its meaning and the parameter
types that need to be passed by address. All passed paramaters are set
if the PHP parameter is non optional and untouched if optional and the
parameter is not present. The only exception is O where the zend_class_entry*
has to be provided on input and is used to verify the PHP parameter is an
instance of that class.
a - array (zval*)
A - array or object (zval *)
b - boolean (zend_bool)
C - class (zend_class_entry*)
d - double (double)
f - function or array containing php method call info (returned as
zend_fcall_info and zend_fcall_info_cache)
h - array (returned as HashTable*)
H - array or HASH_OF(object) (returned as HashTable*)
l - long (long)
L - long, limits out-of-range numbers to LONG_MAX/LONG_MIN (long)
o - object of any type (zval*)
O - object of specific type given by class entry (zval*, zend_class_entry)
r - resource (zval*)
s - string (with possible null bytes) and its length (char*, int)
z - the actual zval (zval*)
Z - the actual zval (zval**)
* - variable arguments list (0 or more)
+ - variable arguments list (1 or more)
a - array
b - boolean, stored in zend_bool
d - double
f - function or array containing php method call info (returned as
zend_fcall_info* and zend_fcall_info_cache*)
h - array (returned as HashTable*)
l - long
o - object (of any type)
O - object (of specific type, specified by class entry)
r - resource (stored in zval)
s - string (with possible null bytes) and its length
z - the actual zval
The following characters also have a meaning in the specifier string:
| - indicates that the remaining parameters are optional, they
should be initialized to default values by the extension since they
will not be touched by the parsing function if they are not
passed to it.
/ - use SEPARATE_ZVAL_IF_NOT_REF() on the parameter it follows
! - the parameter it follows can be of specified type or NULL (applies
to all specifiers except for 'b', 'l', and 'd'). If NULL is passed, the
results pointer is set to NULL as well.
Note on 64bit compatibility
---------------------------
Please do not forget that int and long are two different things on 64bit
OSes (int is 4 bytes and long is 8 bytes), so make sure you pass longs to "l"
and ints to strings length (i.e. for "s" you need to pass char * and int),
not the other way round!
Remember: "l" is the only case when you need to pass long (and that's why
it's "l", not "i" btw).
Both mistakes cause memory corruptions and segfaults on 64bit OSes:
1)
char *str;
long str_len; /* XXX THIS IS WRONG!! Use int instead. */
zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len)
2)
int num; /* XXX THIS IS WRONG!! Use long instead. */
zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &num)
If you're in doubt, use check_parameters.php script to the parameters
and their types (it can be found in ./scripts/dev/ directory of PHP sources):
# php ./scripts/dev/check_parameters.php /path/to/your/sources/
| - indicates that the remaining parameters are optional, they
should be initialized to default values by the extension since they
will not be touched by the parsing function if they are not
passed to it.
/ - use SEPARATE_ZVAL_IF_NOT_REF() on the parameter it follows
! - the parameter it follows can be of specified type or NULL (only applies
to 's', 'a', 'o', 'O', 'r', 'h', 'C', 'z', and 'Z'). If NULL is passed,
the results pointer is set to NULL as well.
Examples
--------
@@ -102,8 +62,8 @@ char *s;
int s_len;
zval *param;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lsz",
&l, &s, &s_len, &param) == FAILURE) {
return;
&l, &s, &s_len, &param) == FAILURE) {
return;
}
@@ -112,8 +72,8 @@ zval *obj;
double d = 0.5;
zend_class_entry *my_ce;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|d",
&obj, my_ce, &d) == FAILURE) {
return;
&obj, my_ce, &d) == FAILURE) {
return;
}
@@ -122,18 +82,29 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|d",
zval *obj;
zval *arr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o!a",
&obj, &arr) == FAILURE) {
return;
&obj, &arr) == FAILURE) {
return;
}
/* Gets a separated array which can also be null. */
zval *arr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/!",
&arr) == FAILURE) {
return;
&arr) == FAILURE) {
return;
}
/* Get only the first three parameters (useful for varargs functions). */
zval *z;
zend_bool b;
zval *r;
if (zend_parse_parameters(3 TSRMLS_CC, "zbr!",
&z, &b, &r) == FAILURE) {
return;
}
/* Get either a set of 3 longs or a string. */
long l1, l2, l3;
char *s;
@@ -147,72 +118,13 @@ char *s;
int length;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
"lll", &l1, &l2, &l3) == SUCCESS) {
/* manipulate longs */
"lll", &l1, &l2, &l3) == SUCCESS) {
/* manipulate longs */
} else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
"s", &s, &length) == SUCCESS) {
/* manipulate string */
"s", &s, &length) == SUCCESS) {
/* manipulate string */
} else {
/* output error */
/* output error */
return;
return;
}
/* Function that accepts only varargs (0 or more) */
int i, num_varargs;
zval ***varargs = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "*", &varargs, &num_varargs) == FAILURE) {
return;
}
for (i = 0; i < num_varargs; i++) {
/* do something with varargs[i] */
}
if (varargs) {
efree(varargs);
}
/* Function that accepts a string, followed by varargs (1 or more) */
char *str;
int str_len;
int i, num_varargs;
zval ***varargs = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s+", &str, &str_len, &varargs, &num_varargs) == FAILURE) {
return;
}
for (i = 0; i < num_varargs; i++) {
/* do something with varargs[i] */
}
if (varargs) {
efree(varargs);
}
/* Function that takes an array, followed by varargs, and ending with a long */
long num;
zval *array;
int i, num_varargs;
zval ***varargs = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a*l", &array, &varargs, &num_varargs, &num) == FAILURE) {
return;
}
for (i = 0; i < num_varargs; i++) {
/* do something with varargs[i] */
}
if (varargs) {
efree(varargs);
}
+57
View File
@@ -0,0 +1,57 @@
QNX4 Installation Notes
-----------------------
NOTE: General installation instructions are in the INSTALL file
1. To compile and test PHP3 you have to grab, compile and install:
- GNU dbm library or another db library;
- GNU bison (1.25 or later; 1.25 tested);
- GNU flex (any version supporting -o and -P options; 2.5.4 tested);
- GNU diffutils (any version supporting -w option; 2.7 tested);
2. To use CVS version you may need also:
- GNU CVS (1.9 tested);
- GNU autoconf (2.12 tested);
- GNU m4 (1.3 or later preferable; 1.4 tested);
3. To run configure define -lunix in command line:
LDFLAGS=-lunix ./configure
4. To use Sybase SQL Anywhere define ODBC_QNX and CUSTOM_ODBC_LIBS in
command line and run configure with --with-custom-odbc:
CFLAGS=-DODBC_QNX LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc" ./configure --with-custom-odbc=/usr/lib/sqlany50
If you have SQL Anywhere version 5.5.00, then you have to add
CFLAGS=-DSQLANY_BUG
to workaround its SQLFreeEnv() bug. Other versions has not been tested,
so try without this flag first.
5. To build the Apache module, you may have to hardcode an include path for
alloc.h in your Apache base directory:
- APACHE_DIRECTORY/src/httpd.h:
change #include "alloc.h"
to #include "APACHE_DIRECTORY/src/alloc.h"
Unless you want to use system regex library, you have to hardcode also
a path to regex.h:
- APACHE_DIRECTORY/src/conf.h:
change #include <regex.h>
to #include "APACHE_DIRECTORY/src/regex/regex.h"
I don't know so far why this required for QNX, may be it is Watcom
compiler problem.
If you building Apache module with SQL Anywhere support, you'll get
symbol conflict with BOOL. It is defined in Apache (httpd.h) and in
SQL Anywhere (odbc.h). This has nothing to do with PHP, so you have to
fix it yourself someway.
6. With above precautions, it should compile as is and pass regression
tests completely:
make
make check
make install
Don't bother me unless you really sure you made that all but it
still doesn't work.
June 28, 1998
Igor Kovalenko -- owl@infomarket.ru
-429
View File
@@ -1,429 +0,0 @@
1. libmagic (ext/fileinfo) see ext/fileinfo/libmagic/LICENSE
2. Oniguruma (ext/mbstring) see ext/mbstring/oniguruma/COPYING
3. libmbfl (ext/mbstring) see ext/mbstring/libmbfl/LICENSE
4. pcrelib (ext/pcre) see ext/pcre/pcrelib/LICENCE
5. ext/standard crypt
6. ext/standard crypt's blowfish implementation
7. Sqlite/Sqlite3 ext/sqlite3 ext/sqlite
8. ext/json/json_parser
9. ext/standard/rand
10. ext/standard/scanf
11. ext/standard/strnatcmp.c
12. ext/standard/uuencode
13. libxmlrpc ext/xmlrpc
14. libzip ext/zip
15. main/snprintf.c
16. main/strlcat
17. main/strlcpy
18. libgd see ext/gd/libgd/COPYING
5. ext/standard crypt
FreeSec: libcrypt for NetBSD
Copyright (c) 1994 David Burren
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the author nor the names of other contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
6. ext/standard crypt's blowfish implementation
This code comes from John the Ripper password cracker, with reentrant
and crypt(3) interfaces added, but optimizations specific to password
cracking removed.
Written by Solar Designer <solar at openwall.com> in 1998-2002 and
placed in the public domain.
There's absolutely no warranty.
It is my intent that you should be able to use this on your system,
as a part of a software package, or anywhere else to improve security,
ensure compatibility, or for any other purpose. I would appreciate
it if you give credit where it is due and keep your modifications in
the public domain as well, but I don't require that in order to let
you place this code and any modifications you make under a license
of your choice.
This implementation is compatible with OpenBSD bcrypt.c (version 2a)
by Niels Provos <provos at citi.umich.edu>, and uses some of his
ideas. The password hashing algorithm was designed by David Mazieres
<dm at lcs.mit.edu>.
There's a paper on the algorithm that explains its design decisions:
http://www.usenix.org/events/usenix99/provos.html
Some of the tricks in BF_ROUND might be inspired by Eric Young's
Blowfish library (I can't be sure if I would think of something if I
hadn't seen his code).
7. Sqlite/Sqlite3 ext/sqlite3 ext/sqlite
The author disclaims copyright to this source code. In place of
a legal notice, here is a blessing:
May you do good and not evil.
May you find forgiveness for yourself and forgive others.
May you share freely, never taking more than you give.
8. ext/json/json_parser
Copyright (c) 2005 JSON.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The Software shall be used for Good, not Evil.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
9. ext/standard/rand
The following php_mt_...() functions are based on a C++ class MTRand by
Richard J. Wagner. For more information see the web page at
http://www-personal.engin.umich.edu/~wagnerr/MersenneTwister.html
Mersenne Twister random number generator -- a C++ class MTRand
Based on code by Makoto Matsumoto, Takuji Nishimura, and Shawn Cokus
Richard J. Wagner v1.0 15 May 2003 rjwagner@writeme.com
The Mersenne Twister is an algorithm for generating random numbers. It
was designed with consideration of the flaws in various other generators.
The period, 2^19937-1, and the order of equidistribution, 623 dimensions,
are far greater. The generator is also fast; it avoids multiplication and
division, and it benefits from caches and pipelines. For more information
see the inventors' web page at http://www.math.keio.ac.jp/~matumoto/emt.html
Reference
M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-Dimensionally
Equidistributed Uniform Pseudo-Random Number Generator", ACM Transactions on
Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
Copyright (C) 2000 - 2003, Richard J. Wagner
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10. ext/standard/scanf
scanf.c --
This file contains the base code which implements sscanf and by extension
fscanf. Original code is from TCL8.3.0 and bears the following copyright:
This software is copyrighted by the Regents of the University of
California, Sun Microsystems, Inc., Scriptics Corporation,
and other parties. The following terms apply to all files associated
with the software unless explicitly disclaimed in individual files.
The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.
IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.
GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license.
11. ext/standard/strnatcmp.c
strnatcmp.c -- Perform 'natural order' comparisons of strings in C.
Copyright (C) 2000 by Martin Pool <mbp@humbug.org.au>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
12. ext/standard/uuencode
Portions of this code are based on Berkeley's uuencode/uudecode
implementation.
Copyright (c) 1983, 1993
The Regents of the University of California. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed by the University of
California, Berkeley and its contributors.
4. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
13. libxmlrpc ext/xmlrpc
Copyright 2000 Epinions, Inc.
Subject to the following 3 conditions, Epinions, Inc. permits you, free
of charge, to (a) use, copy, distribute, modify, perform and display this
software and associated documentation files (the "Software"), and (b)
permit others to whom the Software is furnished to do so as well.
1) The above copyright notice and this permission notice shall be included
without modification in all copies or substantial portions of the
Software.
2) THE SOFTWARE IS PROVIDED "AS IS", WITHOUT ANY WARRANTY OR CONDITION OF
ANY KIND, EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION ANY
IMPLIED WARRANTIES OF ACCURACY, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE OR NONINFRINGEMENT.
3) IN NO EVENT SHALL EPINIONS, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
OF OR IN CONNECTION WITH THE SOFTWARE (HOWEVER ARISING, INCLUDING
NEGLIGENCE), EVEN IF EPINIONS, INC. IS AWARE OF THE POSSIBILITY OF SUCH
DAMAGES.
14. libzip ext/zip
zip.h -- exported declarations.
Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. The names of the authors may not be used to endorse or promote
products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15. main/snprintf.c
Copyright (c) 2002, 2006 Todd C. Miller <Todd.Miller@courtesan.com>
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Sponsored in part by the Defense Advanced Research Projects
Agency (DARPA) and Air Force Research Laboratory, Air Force
Materiel Command, USAF, under agreement number F39502-99-1-0512.
main/spprintf
Copyright (c) 1995-1998 The Apache Group. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
"This product includes software developed by the Apache Group
for use in the Apache HTTP server project (http://www.apache.org/)."
4. The names "Apache Server" and "Apache Group" must not be used to
endorse or promote products derived from this software without
prior written permission.
5. Redistributions of any form whatsoever must retain the following
acknowledgment:
"This product includes software developed by the Apache Group
for use in the Apache HTTP server project (http://www.apache.org/)."
THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
====================================================================
This software consists of voluntary contributions made by many
individuals on behalf of the Apache Group and was originally based
on public domain software written at the National Center for
Supercomputing Applications, University of Illinois, Urbana-Champaign.
For more information on the Apache Group and the Apache HTTP server
project, please see <http://www.apache.org/>.
This code is based on, and used with the permission of, the
SIO stdio-replacement strx_* functions by Panos Tsirigotis
<panos@alumni.cs.colorado.edu> for xinetd.
16. main/strlcat
17. main/strlcpy
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-282
View File
@@ -1,282 +0,0 @@
=======================
PHP Release Process
=======================
General notes and tips
----------------------
1. Do not release on Fridays, Saturdays or Sundays
because the sysadmins can not upgrade stuff then.
2. Package the day before a release. So if the release is to be on Thursday,
package on Wednesday.
3. Ensure that Windows builds will work before packaging
4. Follow all steps to the letter. When unclear ask previous RM's (Derick/Ilia)
before proceeding. Ideally make sure that for the first releases one of the
previous RM's is around to answer questions. For the steps related to the
php/QA/bug websites try to have someone from the webmaster team (Bjori) on hand.
5. Verify the tags to be extra sure everything was tagged properly.
6. Moving extensions from/to PECL requires root level access to the CVS server.
Contact systems@php.net to get this taken care of.
Moving extensions from php-src to PECL
- Filesystem: cp -r php-src/ext/foo pecl/foo
- cvs rm php-src/ext/foo
If the extension is still usable or not dead, in cooperation with the extension
maintainers if any:
- create the pecl.php.net/foo package and its content, license, maintainer
- create the package.xml, commit
- release the package
Moving extensions from PECL to php-src
- Filesystem: cp -r pecl/foo php-src/ext/foo
OR depending on the wishes from the PECL extension maintainer.
- Filesystem: ln -s pecl/foo php-src/ext/foo
Rolling a non stable release (alpha/beta/RC)
--------------------------------------------
1. Check windows snapshot builder logs (http://snaps.php.net/win32/snapshot-STABLE.log f.e.)
2. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
Do not use abbreviations for alpha and beta.
3. Commit those changes
4. run the "scripts/dev/credits" script in php-src and commit the changes in the
credits files in ext/standard.
5. tag the repository with the version f.e. "``cvs tag php_4_4_1RC1``"
(of course, you need to change that to the version you're rolling an RC for).
6. Bump up the version numbers in ``main/php_version.h``, ``configure.in``
and possibly ``NEWS`` again, to the **next** version. F.e. if the release
candidate was "4.4.1RC1" then the new one should be "4.4.1RC2-dev" - regardless
if we get a new RC or not. This is to make sure ``version_compare()`` can
correctly work.
7. Commit those changes
8. Log in onto the snaps box and go into the correct tree (f.e. the PHP_4_4
branch if you're rolling 4.4.x releases).
9. You do not have to update the tree, but of course you can with "``cvs up -dP``".
10. run: ``./makedist php 4.4.1RC1``, this will export the tree, create configure
and build two tarballs (one gz and one bz2).
11. Copy those two tarballs to www.php.net, in your homedir there should be a
directory "downloads/". Copy them into there, so that the system can generate
MD5 sums. If you do not have this directory, talk to Derick.
12. Now the RC can be found on http://downloads.php.net/yourname,
f.e. http://downloads.php.net/derick/
13. Once the release has been tagged, contact the PHP Windows development team
(internals-win@lists.php.net) so that Windows binaries can be created. Once
those are made, they should be placed into the same directory as the source snapshots.
Getting the non stable release (alpha/beta/RC) announced
--------------------------------------------------------
1. Send an email (see example here: http://news.php.net/php.internals/19486)
**To** ``internals@lists.php.net`` and ``php-general@lists.php.net`` lists
pointing out "the location of the release" and "the possible release date of
either the next RC, or the final release".
2. Send an email (see example here http://news.php.net/php.pear.qa/5201) **To**
``php-qa@lists.php.net`` and ``primary-qa-tests@lists.php.net``.
This email is to notify the selected projects about a new release so that they
can make sure their projects keep working. Make sure that you have been setup
as a moderator for ``primary-qa-tests@lists.php.net`` by having someone (Wez,
Derick) run the following commands for you:
``ssh lists.php.net``
``sudo -u ezmlm ezmlm-sub ~ezmlm/primary-qa-tester/mod moderator-email-address``
3. Update ``web/qa/trunk/include/release-qa.php`` with the appropriate information.
See the documentation within release-qa.php for more information, but all releases
and RCs are configured here. Only $QA_RELEASES needs to be edited.
Example: When rolling an RC, set the 'rc' with appropriate information for the
given version.
Note: Remember to update the MD5 checksum information.
1. Update in ``php-bugs/trunk/include/functions.inc`` the ``show_version_option``
function to include the new RC and commit.
2. Update ``phpweb/include/version.inc`` (x=major version number)
a. ``$PHP_x_RC`` = "5.3.0RC1"
b. ``$PHP_x_RC_DATE`` = "06 September 2007"
3. Commit those changes:
a. ``cvs commit include/version.inc include/releases.inc``
4. For the first RC, write the doc team (phpdoc@lists.php.net) about updating the
INSTALL and win32/install.txt files which are generated from the PHP manual sources.
Rolling a stable release
------------------------
1. Check windows snapshot builder logs (http://snaps.php.net/win32/snapshot-STABLE.log f.e.)
2. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
3. **Merge** all related sections in NEWS (f.e. merge the 4.4.1RC1 and 4.4.0 sections)
4. Commit those changes
5. run the "scripts/dev/credits" script in php-src and commit the changes in the
credits files in ext/standard.
6. tag the repository with the version f.e. "``cvs tag php_4_4_1``"
(of course, you need to change that to the version you're rolling an RC for).
When making 5.X release, you need to tag the Zend directory separately!!
7. Bump up the version numbers in ``main/php_version.h``, ``configure.in`` and
possibly ``NEWS`` again, to the **next** version. F.e. if the release candidate
was "4.4.1RC1" then the new one should be "4.4.1RC2-dev" - regardless if we get
a new RC or not. This is to make sure ``version_compare()`` can correctly work.
8. Commit those changes
9. Log in onto the snaps box and go into the correct tree (f.e. the PHP_4_4
branch if you're rolling 4.4.x releases).
10. You do not have to update the tree, but of course you can with "``cvs up -dP``".
11. run: ``./makedist php 4.4.1``, this will export the tree, create configure
and build two tarballs (one gz and one bz2).
12. Commit those two tarballs to CVS (phpweb/distributions)
13. Once the release has been tagged, contact the PHP Windows development team
(internals-win@lists.php.net) so that Windows binaries can be created. Once
those are made, they should be committed to CVS too.
14. Check if the pear files are updated (phar for 5.1+ or run pear/make-pear-bundle.php with 4.4)
15. When making a final release, also remind the PHP Windows development team
(internals-win@lists.php.net) to prepare the installer packages for Win32.
Getting the stable release announced
------------------------------------
1. Run the bumpRelease script for phpweb on your local checkout
a. ``php bin/bumpRelease 5`` (or ``php bin/bumpRelease 4`` for PHP4)
2. Edit ``phpweb/include/version.inc`` and change (X=major release number):
a. ``$PHP_X_VERSION`` to the correct version
b. ``$PHP_X_DATE`` to the release date
c. ``$PHP_X_MD5`` array and update all the md5 sums
d. set ``$PHP_X_RC`` to false!
e. Make sure there are no outdated "notes" or edited "date" keys in the
``$RELEASES[X][$PHP_X_VERSION]["source"]`` array
f. if the windows builds aren't ready yet prefix the "windows" key with a dot (".windows")
3. Update the ChangeLog file for the given major version
f.e. ``ChangeLog-4.php`` from the NEWS file
a. go over the list and put every element on one line
b. check for &, < and > and escape them if necessary
c. remove all the names at the ends of lines
d. for marking up, you can do the following (with VI):
I. ``s/^- /<li>/``
II. ``s/$/<\/li>/``
III. ``s/Fixed bug #\([0-9]\+\)/<?php bugfix(\1); ?>/``
IV. ``s/Fixed PECL bug #\([0-9]\+\)/<?php peclbugfix(\1); ?>/``
V. ``s/FR #\([0-9]\+\)/FR <?php bugl(\1); ?>/``
4. ``cp releases/4_4_0.php releases/4_4_1.php``
5. ``cvs add releases/4_4_1.php``
6. Update the ``releases/*.php`` file with relevant data. The release
announcement file should list in detail:
a. security fixes,
b. changes in behavior (whether due to a bug fix or not)
7. Add a short notice to phpweb stating that there is a new release, and
highlight the major important things (security fixes) and when it is important
to upgrade.
a. Call php bin/createNewsEntry in your local phpweb checkout
b. Add the content for the news entry
8. Commit all the changes.
9. Wait an hour or two, then send a mail to php-announce@lists.php.net,
php-general@lists.php.net and internals@lists.php.net with a text similar to
http://news.php.net/php.internals/17222.
10. Update ``php-bugs-web/include/functions.php`` to include the new version
number, and remove the RC from there.
11. Update ``qaweb/include/release-qa.php``
- Update $QA_RELEASES with the appropriate information, which means bumping
the version number to an upcoming version.
Example: If PHP 5.3.7 is being released, then PHP 5.3.8 is the next QA version,
so replace 5.3.7 with 5.3.8 within $QA_RELEASES.
Re-releasing the same version (or -pl)
--------------------------------------
1. Commit the new binaries to ``phpweb/distributions/``
2. Edit ``phpweb/include/version.inc`` and change (X=major release number):
a. If only releasing for one OS, make sure you edit only those variables
b. ``$PHP_X_VERSION`` to the correct version
c. ``$PHP_X_DATE`` to the release date
d. ``$PHP_X_MD5`` array and update all the md5 sums
e. Make sure there are no outdated "notes" or edited "date" keys in the
``$RELEASES[X][$PHP_X_VERSION]["source"]`` array
3. Add a short notice to phpweb stating that there is a new release, and
highlight the major important things (security fixes) and when it is important
to upgrade.
a. Call php bin/createNewsEntry in your local phpweb checkout
b. Add the content for the news entry
4. Commit all the changes (``include/version.inc``, ``archive/archive.xml``,
``archive/entries/YYYY-MM-DD-N.xml``)
5. Wait an hour or two, then send a mail to php-announce@lists.php.net,
php-general@lists.php.net and internals@lists.php.net with a text similar to
the news entry.
+101 -157
View File
@@ -1,182 +1,126 @@
Submitting Enhancements and Patches to PHP
==========================================
Submitting Patch for PHP
========================
This document describes how to submit an enhancement or patch for PHP.
It's easy!
This document describes how to submit a patch for PHP. Since you are
reading this document, you are willing to submit a patch for PHP.
Please keep reading! Submitting a patch for PHP is easy. The hard
part is making it acceptable for inclusion into our repository. :-)
You don't need any login accounts or special access to download,
build, debug and begin submitting PHP, PECL or PEAR code, tests or
documentation. Once you've followed this README and had several
patches accepted, commit privileges are often quickly granted.
How to create patch?
--------------------
We are working with CVS. You need to get CVS source to create a patch
that we accept. Visit http://www.php.net/anoncvs.php to get CVS
source. You can check out older versions, but make sure you get
the default branch (i.e. Do not use -r option when you check out the
CVS source)
An excellent article to read first is:
http://phpadvent.org/2008/less-whining-more-coding-by-elizabeth-smith
Read CODING_STANDARDS file before you start working.
Now you are ready to create a patch. Modify source to fix a bug in PHP or
add a new feature to PHP. After you finished editing, please test your
patch. Read README.TESTING for testing.
After you finish testing your patch, take diff file using
"cvs diff > your.patch" command.
Read README.TESTING for submitting a test script for your patch. This is
not strictly required, but it is preferred to submit a test script along
with your patch. Making new test script is very easy. It also helps us
to understand what you have been fixed or added to PHP.
Online Forums
-------------
There are several IRC channels where PHP developers are often
available to discuss questions. They include #php.pecl, #php.doc and
#pear on the EFNet network and #php-dev-win on FreeNode.
Tips for creating patch
-----------------------
If you would like to fix multiple bugs. It is easier for us if you
could create 1 patch for 1 bug, but this is not strictly required.
Note though that you might get little response, if your patch is
too hard to review.
If you would like change/add many lines, it is better to ask module
maintainer and/or internals@lists.php.net, or pear-dev@lists.php.net if
you are patching PEAR. Official module maintainers can be found in
EXTENSIONS file in PHP source.
If you are new to CVS (Concurrent Versions System), visit
http://cvshome.org/ for details.
PHP Patches
-----------
If you are fixing broken functionality in PHP C source code first
create a bug or identify an existing bug at http://bugs.php.net/. A
bug can be used to track the patch progress and prevent your changes
getting lost in the PHP mail archives.
Recommended CVS client settings for creating patch file
------------------------------------------------------
Recommended ~/.cvsrc file setting is:
------
cvs -z3
update -d -P
checkout -P
diff -u
If your change is large then create a Request For Comment (RFC) page
on http://wiki.php.net/rfc, discuss it with the extension maintainer,
and discuss it on the development mail list internals@lists.php.net.
RFC Wiki accounts can be requested on
http://wiki.php.net/start?do=register. PHP extension maintainers can
be found in the EXTENSIONS file in the PHP source. Mail list
subscription is explained on http://www.php.net/mailing-lists.php.
------
diff -u means:
-u Use the unified output format.
Information on PHP internal C functions is at
http://www.php.net/internals, though this is considered incomplete.
Various external resources can be found on the web. A standard
printed reference is the book "Extending and Embedding PHP" by Sara
Golemon.
Attach the patch to the PHP bug and consider sending a notification
email about the change to internals@lists.php.net. Also CC the
extension maintainer. Explain what has been changed by your patch.
Test scripts should be included.
Please make the mail subject prefix "[PATCH]". If attaching a patch,
ensure it has a file extension of ".txt". This is because only MIME
attachments of type 'text/*' are accepted.
With this CVS setting, you don't have to worry about adding/deleting
newlines and spaces.
PHP Documentation Patches
Check list for submitting patch
-------------------------------
- Did you run "make test" to check if your patch didn't break
other features?
- Did you compile PHP with --enable-debug and check the PHP and
web server error logs when you test your patch?
- Did you build PHP for multi-threaded web servers. (Optional)
- Did you create test script for "make test"? (Recommended)
- Did you check your patch is unified format and it does not
contain white space changes? (If you are not using recommended
cvs setting)
- Did you update CVS source before you take final patch?
- Did you read the patch again?
Where to send your patch?
-------------------------
If you are fixing incorrect PHP documentation first create a bug or
identify an existing bug at http://bugs.php.net/. A bug can be used
to track the patch progress and prevent your changes getting lost in
the PHP mail archives.
If you are patching C source, send the patch to internals@lists.php.net.
If you are patching a module, you should also send the patch to the
maintainer. Official module maintainers are listed in EXTENSION file
in source.
If your change is large, then first discuss it with the mail list
phpdoc@lists.php.net. Subscription is explained on
http://www.php.net/mailing-lists.php.
If you are patching PEAR, send the patch to pear-dev@lists.php.net.
Information on contributing to PHP documentation is at
http://php.net/dochowto and http://wiki.php.net/doc/howto
Please add the prefix "[PATCH]" to your email subject and make sure
to include the patch as a MIME attachment even if it is short.
Attach the patch to the PHP bug and consider sending a notification
email about the change to phpdoc@lists.php.net. Explain what has been
fixed/added/changed by your patch.
NOTE: only MIME attachments of type 'text/*' are accepted. The
easiest way to accomplish this, is to make the extension
'.txt'.
Please make the mail subject prefix "[PATCH]". Include the bug id(s)
which can be closed by your patch. If attaching a patch, ensure it
has a file extension of ".txt". This is because only MIME attachments
of type 'text/*' are accepted.
Test scripts should be included in the same email.
Explain what has been fixed/added/changed by your patch.
Finally, add the bug Id(s) which can be closed by your patch, if any.
PECL Extension Patches: http://pecl.php.net/
--------------------------------------------
If you are fixing broken functionality in a PECL extension then create
a bug or identify an existing bug at http://pecl.php.net/bugs/. A bug
can be used to track the patch progress and prevent your changes
getting lost in the PHP mail archives.
What happens after you submit your patch
----------------------------------------
If your patch is easy to review and has obviously no side-effects,
it might take up to a few hours until someone commits it.
If your change is large then create a Request For Comment (RFC) page
on http://wiki.php.net/rfc, discuss it with the extension maintainer,
and discuss it on the development mail list pecl-dev@lists.php.net.
PECL mail list subscription is explained on
http://pecl.php.net/support.php. RFC Wiki accounts can be requested
on http://wiki.php.net/start?do=register
Because this is a volunteer-driven effort, more complex patches will
require more patience on your side.
Information on PHP internal C functions is at
http://www.php.net/internals, though this is considered incomplete.
Various external resources can be found on the web. A standard
printed reference is the book "Extending and Embedding PHP" by Sara
Golemon.
If you did not receive any feedback in a few days, please consider
resubmitting the description of your patch, along-side with
these questions:
Update any open bugs and add a link to the source of your patch. Send
the patch or pointer to the bug to pecl-dev@lists.php.net. Also CC
the extension maintainer. Explain what has been changed by your
patch. Test scripts should be included.
Please make the mail subject prefix "[PATCH] ...". Include the patch
as an attachment with a file extension of ".txt". This is because
only MIME attachments of type 'text/*' are accepted.
- Is my patch too hard to review? Because of which factors?
- Should I split it up in multiple parts?
- Are there any unwanted whitespace changes?
PEAR Package Patches: http://pear.php.net/
------------------------------------------
Information on contributing to PEAR is available at
http://pear.php.net/manual/en/developers-newmaint.php and
http://pear.php.net/manual/en/guide-developers.php
What happens when your patch is applied?
----------------------------------------
Your name will be included together with your email address in the CVS
commit log. If your patch affects end-users, a brief description
and your name might be added to the NEWS file.
How to create your PHP, PHP Documentation or PECL patch
-------------------------------------------------------
PHP and PECL use Subversion (SVN) for revision control. Read
http://www.php.net/svn.php for help on using SVN to get and build PHP
source code. We recommend using a Sparse Directory checkout described
in http://wiki.php.net/vcs/svnfaq. If you are new to SVN, read
http://svnbook.red-bean.com.
Generally we ask that bug fix patches work on the current stable PHP
development branches and on "trunk". New PHP features only need to
work on "trunk".
Read CODING_STANDARDS before you start working.
After modifying the source see README.TESTING and
http://qa.php.net/write-test.php for how to test. Submitting test
scripts helps us to understand what functionality has changed. It is
important for the stability and maintainability of PHP that tests are
comprehensive.
After testing is finished, create a patch file using the command:
svn diff > your_patch.txt
For ease of review and later troubleshooting, submit individual
patches for each bug or feature.
Checklist for submitting your PHP or PECL code patch
----------------------------------------------------
- Update SVN source just before running your final 'diff' and
before testing.
- Add in-line comments and/or have external documentation ready.
Use only "/* */" style comments, not "//".
- Create test scripts for use with "make test".
- Run "make test" to check your patch doesn't break other features.
- Rebuild PHP with --enable-debug (which will show some kinds of
memory errors) and check the PHP and web server error logs after
running your PHP tests.
- Rebuild PHP with --enable-maintainer-zts to check your patch
compiles on multi-threaded web servers.
- Review the patch once more just before submitting it.
What happens after submitting your PHP, PHP Documentation or PECL patch
-----------------------------------------------------------------------
If your patch is easy to review and obviously has no side-effects,
it might be committed relatively quickly.
Because PHP is a volunteer-driven effort more complex patches will
require patience on your side. If you do not receive feedback in a
few days, consider resubmitting the patch. Before doing this think
about these questions:
- Did I send the patch to the right mail list?
- Did I review the mail list archives to see if these kind of
changes had been discussed before?
- Did I explain my patch clearly?
- Is my patch too hard to review? Because of what factors?
What happens when your PHP or PECL patch is applied
---------------------------------------------------
Your name will likely be included in the SVN commit log. If your
patch affects end users, a brief description and your name might be
added to the NEWS file.
Thank you for patching PHP!
Thank you for submitting patch for PHP!
-146
View File
@@ -1,146 +0,0 @@
====================
SVN Commit Rules
====================
This is the first file you should be reading after you get your SVN account.
We'll assume you're basically familiar with SVN, but feel free to post
your questions on the mailing list. Please have a look at
http://svnbook.red-bean.com/ for more detailed information on SVN.
PHP is developed through the efforts of a large number of people.
Collaboration is a Good Thing(tm), and SVN lets us do this. Thus, following
some basic rules with regards to SVN usage will::
a. Make everybody happier, especially those responsible for maintaining
the SVN itself.
b. Keep the changes consistently well documented and easily trackable.
c. Prevent some of those 'Oops' moments.
d. Increase the general level of good will on planet Earth.
Having said that, here are the organizational rules::
1. Respect other people working on the project.
2. Discuss any significant changes on the list before committing and get
confirmation from the release manager for the given branch.
3. Look at EXTENSIONS file to see who is the primary maintainer of
the code you want to contribute to.
4. If you "strongly disagree" about something another person did, don't
start fighting publicly - take it up in private email.
5. If you don't know how to do something, ask first!
6. Test your changes before committing them. We mean it. Really.
To do so use "make test".
7. For development use the --enable-maintainer-zts switch to ensure your
code handles TSRM correctly and doesn't break for thos who need that.
Currently we have the following branches in use::
trunk Will become PHP 6.0. This CVS branch is for active development.
branches/PHP_5_3 Is used to release the PHP 5.3.x series. It still allows for
larger enhancements.
branches/PHP_5_2 Is used to release the PHP 5.2.x series. Only bugfixes are permitted
on this branch (Consult the releasemaster prior to commit).
branches/PHP_5_1 This branch is closed.
branches/PHP_4_4 This branch is closed.
The next few rules are more of a technical nature::
1. All changes should first go to trunk and then get merged from trunk
(aka MFH'ed) to all other relevant branches.
2. DO NOT TOUCH ChangeLog! It is automagically updated from the commit
messages every day. Woe be to those who attempt to mess with it.
3. All news updates intended for public viewing, such as new features,
bug fixes, improvements, etc., should go into the NEWS file of the
*first* to be released version with the given change. In other words
any NEWS file change only needs to done in one branch.
NB! Lines, starting with @ will go automagically into NEWS file, but
this is NOT recommended, though. Please, add news entries directly to
NEWS file and don't forget to keep them adjusted and sorted.
4. Do not commit multiple file and dump all messages in one commit. If you
modified several unrelated files, commit each group separately and
provide a nice commit message for each one. See example below.
5. Do write your commit message in such a way that it makes sense even
without the corresponding diff. One should be able to look at it, and
immediately know what was modified. Definitely include the function name
in the message as shown below.
6. In your commit messages, keep each line shorter than 80 characters. And
try to align your lines vertically, if they wrap. It looks bad otherwise.
7. If you modified a function that is callable from PHP, prepend PHP to
the function name as shown below.
The format of the commit messages is pretty simple.
Use a - to start a new item in your commit message.
If a line begins with #, it is taken to be a comment and will not appear
in the ChangeLog. Everything else goes into the ChangeLog.
It is important to note that if your comment or news logline spans multiple
lines, you have to put # at the beginning of **every** such line.
Example. Say you modified two files, datetime.c and string.c. In datetime.c you
added a new format option for the date() function, and in string.c you fixed a
memory leak in php_trim(). Don't commit both of these at once. Commit them
separately and try to make sure your commit messages look something like the
following.
For datetime.c::
- Added new 'K' format modifier to date() for printing out number of days
until New Year's Eve.
For string.c::
- Fixed a memory leak in php_trim() resulting from improper use of zval_dtor().
#- Man, that thing was leaking all over the place!
The # lines will be omitted from the ChangeLog automagically.
Use the [DOC] tag in your log message whenever you feel that your changes
imply a documentation modification. The php-doc team will automatically
get notified about your commit through the php-doc mailing list.
If you fix some bugs, you should note the bug ID numbers in your
commit message. Bug ID should be prefixed by "#" for easier access to
bug report when developers are browsing CVS via LXR or Bonsai.
Example::
Fixed bug #14016 (pgsql notice handler double free crash bug.)
If you don't see your messages in ChangeLog right away, don't worry!
These files are updated once a day, so your stuff will not show up until
somewhat later.
When you change the NEWS file for a bug fix, then please keep the bugs
sorted in decreasing order under the fixed version.
You can use LXR (http://lxr.php.net/) and Bonsai (http://bonsai.php.net/)
to look at PHP SVN repository in various ways.
To receive daily updates to ChangeLog and NEWS, send an empty message to
php-cvs-daily-subscribe@lists.php.net.
Happy hacking,
PHP Team
+4 -5
View File
@@ -32,12 +32,11 @@ sapi/cli/php [-c /path/to/php.ini] run-tests.php [ext/foo/tests/GLOB]
[Which "php" executable "make test" look for]
---------------------------------------------
If you are running the run-tests.php script from the command line (as above)
you must set the TEST_PHP_EXECUTABLE environment variable to explicitly
select the PHP executable that is to be tested, that is, used to run the test scripts.
You must use TEST_PHP_EXECUTABLE environment variable to explicitly
select the php executable to be used to run the tests. That can either
be the CLI or CGI executable.
If you run the tests using make test, the PHP CLI and CGI executables are
automatically set for you. "make test" executes "run-tests.php" script with the CLI binary. Some
"make test" executes "run-tests.php" script with "php" binary. Some
test scripts such as session must be executed by CGI SAPI. Therefore,
you must build PHP with CGI SAPI to perform all tests.
+14 -14
View File
@@ -1,11 +1,11 @@
[IMPORTANT NOTICE]
------------------
This is an addendum to README.TESTING with additional information
specific to server-tests.php.
specific to run-tests2.php.
server-tests.php is backward compatible with tests developed for
the original run-tests.php script. server-tests is *not* used by
'make test'. server-tests was developed to provide support for
run-tests2.php is backward compatible with tests developed for
the original run-tests.php script. run-tests2 is *not* used by
'make test'. run-tests2 was developed to provide support for
testing PHP under it's primary environment, HTTP, and can run the
PHP tests under any of the SAPI modules that are direct executables,
or are accessable via HTTP.
@@ -13,12 +13,12 @@ or are accessable via HTTP.
[New features]
----------------
* Command line interface:
You can run 'php server-tests.php -h' to get all the possible options.
You can run 'php run-tests2.php -h' to get all the possible options.
* Configuration file:
the -c argument will allow you to use a configuration file. This is
handy if you are testing multiple environments and need various options
depending on the environment.
see server-tests-config.php for details.
see run-tests-config.php for details.
* CGI Emulation:
Will emulate a CGI environment when testing with the cgi sapi executable.
* HTTP testing:
@@ -39,23 +39,23 @@ make testing work.
Some (but not all!) examples of usage:
1. run tests from the php source directory
php server-tests.php -p /path/to/php-cli
php run-tests2.php -p /path/to/php-cli
2. run tests using cgi emulation
php server-tests.php -p /path/to/php-cgi
php run-tests2.php -p /path/to/php-cgi
3. run tests over http, copying test files into document root
php server-tests.php -w -u http://localhost/test -m /path/to/htdocs/test
php run-tests2.php -w -u http://localhost/test -m /path/to/htdocs/test
4. run tests over http, php sources have been aliased in web server
php server-tests.php -w -u http://localhost/test
php run-tests2.php -w -u http://localhost/test
5. run tests using configuration file
php server-tests.php -c /path/to/server-tests-config.php
php run-tests2.php -c /path/to/run-tests-config.php
6. run tests using configuration file, but overriding some settings:
(config file must be first)
php server-tests.php -c /path/to/server-tests-config.php -w -t 3 -d /path/to/testdir
php run-tests2.php -c /path/to/run-tests-config.php -w -t 3 -d /path/to/testdir
NOTE: configuration as described in README.TESTING still works.
@@ -63,7 +63,7 @@ NOTE: configuration as described in README.TESTING still works.
----------------
In addition to the traditional test sections
(see http://qa.php.net/write-test.php), several new sections are available
under server-tests.
under run-tests2.
--POST--
This is not a new section, but not multipart posts are supported for testing
@@ -97,7 +97,7 @@ include:
$scriptname this is what will become SCRIPT_NAME unless you override it
$docroot the equivelant of DOCUMENT_ROOT under Apache
$cwd the directory that the test is being initiated from
$this->conf all server-tests configuration vars
$this->conf all run-tests2 configuration vars
$this->env all environment variables that will get passed to the test
+1037
View File
File diff suppressed because it is too large. Load diff
+169 -1
View File
@@ -1,6 +1,174 @@
The Win32 Build System.
$Id$
Wez Furlong <wez@thebrainroom.com>
See http://wiki.php.net/internals/windows/stepbystepbuild
If you need help with the build system, send mail to
internals@lists.php.net; please don't email me directly.
===========================================================
Contents:
1. How to build PHP under windows
a. Requirements
b. Opening a command prompt
c. Generating configure.js
d. Configuring
e. Building
f. Cleaning up
g. Running the test suite
h. snapshot building
2. How to write config.w32 files
x. to be written.
===========================================================
1. How to build PHP under windows
a. Requirements
You need:
- Windows Scripting Host (cscript.exe)
- Microsoft Build Tools from:
Microsoft Visual Studio (VC6) or later
You also need:
- bindlib_w32 [http://www.php.net/extra/bindlib_w32.zip]
- win32build [http://www.php.net/extra/win32build.zip]
b. Opening the Build Environment Command Prompt:
- Using Visual Studio (VC6)
1. Install it
2. If you have a VC++ Command Prompt icon on your start menu,
click on it to get a Command Prompt with the env vars
set up correctly.
If not, create a new shortcut and set the Target to:
%comspec% /k "C:\Program Files\Microsoft Visual Studio\VC98\Bin\vcvars32.bat"
You might also want to set the prompt to start in
a convenient location (such as the root of your
PHP source checkout).
- Using Visual Studio .Net
1. Install it.
2. Under the Visual Studio .Net Tools sub menu of your start
menu, you should have a Visual Studio .Net Command Prompt
icon. If not, create a new shortcut and set the Target to:
%comspec% /k "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"
You might also want to set the prompt to start in
a convenient location (such as the root of your
PHP source checkout).
- Using the Platform SDK tools
1. Download the Platform SDK:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- You need the Core SDK, which is approx 200MB to download
and requires approx 500MB of disk space.
- The other components of the SDK are not required by PHP
- You might be able to reduce the download size by downloading
the installer control component first and then selecting
only the Build Environment (around 30MB), but I haven't
tried this.
** Note: it seems that MS don't include the 32 bit
build tools in the platform SDK any longer, so
you will probably have very limited luck if you
don't also have VC++ or VS.Net already installed.
2. Once installed, you will have an icon on your start menu
that will launch the build environment; the latest SDK's
install a number of different versions of this; you probably
want to choose the Windows 2000 Retail build environment.
Clicking on this will open a command prompt with its Path,
Include and Lib env vars set to point to the build tools
and win32 headers.
c. Generating configure
Change directory to where you have your PHP 5 sources.
Run buildconf.bat.
d. Configuring
cscript /nologo configure.js --help
Will give you a list of configuration options; these will
have the form:
--enable-foo or --disable-foo or --with-foo or --without-foo.
--enable-foo will turn something on, and is equivalent to
specifying --enable-foo=yes
--disable-foo will turn something off, and is equivalent to
specifying --enable-foo=no
--enable-foo=shared will attempt to build that feature as
a shared, dynamically loadable module.
Sometimes a configure option needs additional information
about where to find headers and libraries; quite often
you can specify --enable-foo=option where option could be
the path to where to find those files. If you want to
specify a parameter and build it as shared, you can use
this syntax instead: --enable-foo=shared,option
The same rules all apply to --with-foo and --without-foo;
the only difference is the way the options are named;
the convention is that --enable-foo means that you are
switching on something that comes with PHP, whereas
--with-foo means that you want to build in something
external to PHP.
e. Building
Once you have successfully configured your build (make
sure you read the output from the command to make sure
it worked correctly), you can build the code; simply type
"nmake" at the command prompt, and it will build everthing
you asked for.
Once the build has completed, you will find your binaries
in the build dir determined by configure; this is typically
Release_TS for release builds or Debug_TS for debug builds.
If you build a non-thread-safe build, it will use Release
or Debug to store the files. Also in this build dir you
will find sub directories for each module that went into
your PHP build. The files you'll want to keep are the
.exe and .dll files directly in your build dir.
f. Cleaning Up
You can automatically delete everything that was built
by running "nmake clean". This will delete everything
that was put there when you ran nmake, including the
.exe and .dll files.
g. Running the test suite
You can verify that your build is working well by running
the regression test suite. You do this by typing
"nmake test". You can specify the tests you want to run
by defing the TESTS variable - if you wanted to run the
sqlite test suite only, you would type
"nmake /D TESTS=ext/sqlite/tests test"
h. Snapshot Building
If you want to set up an automated build that will tolerate
breakages in some of the modules, you can use the
--enable-snapshot-build configure option to generate a
makefile optimized for that purpose. A snapshot build will
switch the argument parser so that the default option for
configure switches that your don't specify will be set
to "shared". The effect of this is to turn on all options
unless you explicitly disable them. When you have configured
your snapshot build, you can use "nmake build-snap" to build
everything, ignoring build errors in individual extensions
or SAPI.
vim:tw=78:sw=1:ts=1:et
-174
View File
@@ -1,174 +0,0 @@
Design
======
Main assumption of the model is that the problem that we are to solve is the
problem of the very long class names in PHP libraries. We would not attempt
to take autoloader's job or create packaging model - only make names
manageable.
Namespaces are defined the following way:
Zend/DB/Connection.php:
<?php
namespace Zend\DB;
class Connection {
}
function connect() {
}
?>
Namespace definition does the following:
All class and function names inside are automatically prefixed with
namespace name. Inside namespace, local name always takes precedence over
global name. Several files may be using the same namespace.
The namespace declaration statement must be the very first statement in
the file. The only exception is "declare" statement that can be used before.
Every class and function in a namespace can be referred to by the full name
- e.g. Zend\DB\Connection or Zend\DB\connect - at any time.
<?php
require 'Zend/Db/Connection.php';
$x = new Zend\DB\Connection;
Zend\DB\connect();
?>
Namespace or class name can be imported:
<?php
require 'Zend/Db/Connection.php';
use Zend\DB;
use Zend\DB\Connection as DbConnection;
$x = new Zend\DB\Connection();
$y = new DB\connection();
$z = new DbConnection();
DB\connect();
?>
The use statement only defines name aliasing. It may create name alias for
namespace or class. The simple form of statement "use A\B\C\D;" is
equivalent to "use A\B\C\D as D;". The use statement can be used at any
time in the global scope (not inside function/class) and takes effect from
the point of definition down to the end of file. It is recommended however to
place the use statements at the beginning of the file. The use statements have
effect only on the file where they appear.
The special "empty" namespace (\ prefix) is useful as explicit global
namespace qualification. All class and function names started from \
interpreted as global.
<?php
namespace A\B\C;
$con = \mysql_connect(...);
?>
A special constant __NAMESPACE__ contains the name of the current namespace.
It can be used to construct fully-qualified names to pass them as callbacks.
<?php
namespace A\B\C;
function foo() {
}
set_error_handler(__NAMESPACE__ . "\foo");
?>
In global namespace __NAMESPACE__ constant has the value of empty string.
Names inside namespace are resolved according to the following rules:
1) all qualified names are translated during compilation according to
current import rules. So if we have "use A\B\C" and then "C\D\e()"
it is translated to "A\B\C\D\e()".
2) unqualified class names translated during compilation according to
current import rules. So if we have "use A\B\C" and then "new C()" it
is translated to "new A\B\C()".
3) inside namespace, calls to unqualified functions that are defined in
current namespace (and are known at the time the call is parsed) are
interpreted as calls to these namespace functions.
4) inside namespace, calls to unqualified functions that are not defined
in current namespace are resolved at run-time. The call to function foo()
inside namespace (A\B) first tries to find and call function from current
namespace A\B\foo() and if it doesn't exist PHP tries to call internal
function foo(). Note that using foo() inside namespace you can call only
internal PHP functions, however using \foo() you are able to call any
function from the global namespace.
5) unqualified class names are resolved at run-time. E.q. "new Exception()"
first tries to use (and autoload) class from current namespace and in case
of failure uses internal PHP class. Note that using "new A" in namespace
you can only create class from this namespace or internal PHP class, however
using "new \A" you are able to create any class from the global namespace.
6) Calls to qualified functions are resolved at run-time. Call to
A\B\foo() first tries to call function foo() from namespace A\B, then
it tries to find class A\B (__autoload() it if necessary) and call its
static method foo()
7) qualified class names are interpreted as class from corresponding
namespace. So "new A\B\C()" refers to class C from namespace A\B.
Examples
--------
<?php
namespace A;
foo(); // first tries to call "foo" defined in namespace "A"
// then calls internal function "foo"
\foo(); // calls function "foo" defined in global scope
?>
<?php
namespace A;
new B(); // first tries to create object of class "B" defined in namespace "A"
// then creates object of internal class "B"
new \B(); // creates object of class "B" defined in global scope
?>
<?php
namespace A;
new A(); // first tries to create object of class "A" from namespace "A" (A\A)
// then creates object of internal class "A"
?>
<?php
namespace A;
B\foo(); // first tries to call function "foo" from namespace "A\B"
// then calls method "foo" of internal class "B"
\B\foo(); // first tries to call function "foo" from namespace "B"
// then calls method "foo" of class "B" from global scope
?>
The worst case if class name conflicts with namespace name
<?php
namespace A;
A\foo(); // first tries to call function "foo" from namespace "A\A"
// then tries to call method "foo" of class "A" from namespace "A"
// then tries to call function "foo" from namespace "A"
// then calls method "foo" of internal class "A"
\A\foo(); // first tries to call function "foo" from namespace "A"
// then calls method "foo" of class "A" from global scope
?>
TODO
====
* Support for namespace constants?
* performance problems
- calls to internal functions in namespaces are slower, because PHP first
looks for such function in current namespace
- calls to static methods are slower, because PHP first tries to look
for corresponding function in namespace
* Extend the Reflection API?
* Add ReflectionNamespace class
+ getName()
+ getClasses()
+ getFunctions()
+ getFiles()
* Add getNamespace() methods to ReflectionClass and ReflectionFunction
* Rename namespaces to packages?
+9 -23
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Thread Safe Resource Manager |
+----------------------------------------------------------------------+
| Copyright (c) 1999-2011, Andi Gutmans, Sascha Schumann, Zeev Suraski |
| Copyright (c) 1999-2008, Andi Gutmans, Sascha Schumann, Zeev Suraski |
| This source file is subject to the TSRM license, that is bundled |
| with this package in the file LICENSE |
+----------------------------------------------------------------------+
@@ -647,26 +647,19 @@ TSRM_API void tsrm_mutex_free(MUTEX_T mutexp)
}
/*
Lock a mutex.
A return value of 0 indicates success
*/
/* Lock a mutex */
TSRM_API int tsrm_mutex_lock(MUTEX_T mutexp)
{
TSRM_ERROR((TSRM_ERROR_LEVEL_INFO, "Mutex locked thread: %ld", tsrm_thread_id()));
#ifdef TSRM_WIN32
EnterCriticalSection(mutexp);
return 0;
return 1;
#elif defined(GNUPTH)
if (pth_mutex_acquire(mutexp, 0, NULL)) {
return 0;
}
return -1;
return pth_mutex_acquire(mutexp, 0, NULL);
#elif defined(PTHREADS)
return pthread_mutex_lock(mutexp);
#elif defined(NSAPI)
crit_enter(mutexp);
return 0;
return crit_enter(mutexp);
#elif defined(PI3WEB)
return PISync_lock(mutexp);
#elif defined(TSRM_ST)
@@ -679,26 +672,19 @@ TSRM_API int tsrm_mutex_lock(MUTEX_T mutexp)
}
/*
Unlock a mutex.
A return value of 0 indicates success
*/
/* Unlock a mutex */
TSRM_API int tsrm_mutex_unlock(MUTEX_T mutexp)
{
TSRM_ERROR((TSRM_ERROR_LEVEL_INFO, "Mutex unlocked thread: %ld", tsrm_thread_id()));
#ifdef TSRM_WIN32
LeaveCriticalSection(mutexp);
return 0;
return 1;
#elif defined(GNUPTH)
if (pth_mutex_release(mutexp)) {
return 0;
}
return -1;
return pth_mutex_release(mutexp);
#elif defined(PTHREADS)
return pthread_mutex_unlock(mutexp);
#elif defined(NSAPI)
crit_exit(mutexp);
return 0;
return crit_exit(mutexp);
#elif defined(PI3WEB)
return PISync_unlock(mutexp);
#elif defined(TSRM_ST)
+3 -5
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Thread Safe Resource Manager |
+----------------------------------------------------------------------+
| Copyright (c) 1999-2011, Andi Gutmans, Sascha Schumann, Zeev Suraski |
| Copyright (c) 1999-2008, Andi Gutmans, Sascha Schumann, Zeev Suraski |
| This source file is subject to the TSRM license, that is bundled |
| with this package in the file LICENSE |
+----------------------------------------------------------------------+
@@ -22,12 +22,10 @@
#ifdef TSRM_WIN32
# ifdef TSRM_EXPORTS
# define TSRM_API __declspec(dllexport)
# define TSRM_API __declspec(dllexport)
# else
# define TSRM_API __declspec(dllimport)
# define TSRM_API __declspec(dllimport)
# endif
#elif defined(__GNUC__) && __GNUC__ >= 4
# define TSRM_API __attribute__ ((visibility("default")))
#else
# define TSRM_API
#endif
+5
View File
@@ -1,5 +1,10 @@
// vim:ft=javascript
// $Id$
if (CHECK_HEADER_ADD_INCLUDE("NewAPIs.h", "CFLAGS_PHP", php_usual_include_suspects)) {
// Need to add the flag directly, since TSRM doesn't include the config
// header
ADD_FLAG("CFLAGS_PHP", "/DHAVE_NEWAPIS_H=1");
}
ADD_SOURCES("TSRM", "TSRM.c tsrm_strtok_r.c tsrm_virtual_cwd.c tsrm_win32.c");
+2
View File
@@ -7,6 +7,8 @@
* on Windows 95/NT.
*/
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <io.h>
-2
View File
@@ -1,8 +1,6 @@
#ifndef TSRM_CONFIG_W32_H
#define TSRM_CONFIG_W32_H
#include <../main/config.w32.h>
#define HAVE_UTIME 1
#define HAVE_ALLOCA 1
#define HAVE_REALPATH 1
+4 -12
View File
@@ -52,19 +52,11 @@ char *alloca ();
#endif
#if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2))
# define TSRM_ALLOCA_MAX_SIZE 4096
# define TSRM_ALLOCA_FLAG(name) \
int name;
# define tsrm_do_alloca_ex(size, limit, use_heap) \
((use_heap = ((size) > (limit))) ? malloc(size) : alloca(size))
# define tsrm_do_alloca(size, use_heap) \
tsrm_do_alloca_ex(size, TSRM_ALLOCA_MAX_SIZE, use_heap)
# define tsrm_free_alloca(p, use_heap) \
do { if (use_heap) free(p); } while (0)
# define tsrm_do_alloca(p) alloca(p)
# define tsrm_free_alloca(p)
#else
# define TSRM_ALLOCA_FLAG(name)
# define tsrm_do_alloca(p, use_heap) malloc(p)
# define tsrm_free_alloca(p, use_heap) free(p)
# define tsrm_do_alloca(p) malloc(p)
# define tsrm_free_alloca(p) free(p)
#endif
#endif /* TSRM_CONFIG_COMMON_H */
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2011 The PHP Group |
| Copyright (c) 1997-2008 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2011 The PHP Group |
| Copyright (c) 1997-2008 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
+324 -981
View File
File diff suppressed because it is too large. Load diff
+17 -45
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2011 The PHP Group |
| Copyright (c) 1997-2008 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -14,7 +14,6 @@
+----------------------------------------------------------------------+
| Authors: Andi Gutmans <andi@zend.com> |
| Sascha Schumann <sascha@schumann.cx> |
| Pierre Joye <pierre@php.net> |
+----------------------------------------------------------------------+
*/
@@ -108,7 +107,7 @@ typedef unsigned short mode_t;
#define COPY_WHEN_ABSOLUTE(path) 0
#endif
#ifndef IS_ABSOLUTE_PATH
#ifndef IS_ABSOLUTE_PATH
#define IS_ABSOLUTE_PATH(path, len) \
(IS_SLASH(path[0]))
#endif
@@ -118,28 +117,19 @@ typedef unsigned short mode_t;
#endif
#ifdef TSRM_WIN32
# ifdef CWD_EXPORTS
# define CWD_API __declspec(dllexport)
# else
# define CWD_API __declspec(dllimport)
# endif
#elif defined(__GNUC__) && __GNUC__ >= 4
# define CWD_API __attribute__ ((visibility("default")))
# ifdef CWD_EXPORTS
# define CWD_API __declspec(dllexport)
# else
# define CWD_API __declspec(dllimport)
# endif
#else
# define CWD_API
#define CWD_API
#endif
#ifdef TSRM_WIN32
CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat);
CWD_API int php_sys_stat(const char *path, struct stat *buf);
CWD_API int php_sys_lstat(const char *path, struct stat *buf);
CWD_API int php_sys_readlink(const char *link, char *target, size_t target_len);
#else
# define php_sys_stat stat
# define php_sys_lstat lstat
# ifdef HAVE_SYMLINK
# define php_sys_readlink(link, target, target_len) readlink(link, target, target_len)
# endif
#endif
typedef struct _cwd_state {
@@ -163,7 +153,9 @@ CWD_API int virtual_open(const char *path TSRMLS_DC, int flags, ...);
CWD_API int virtual_creat(const char *path, mode_t mode TSRMLS_DC);
CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC);
CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC);
#if !defined(TSRM_WIN32)
CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC);
#endif
CWD_API int virtual_unlink(const char *path TSRMLS_DC);
CWD_API int virtual_mkdir(const char *pathname, mode_t mode TSRMLS_DC);
CWD_API int virtual_rmdir(const char *pathname TSRMLS_DC);
@@ -194,7 +186,7 @@ CWD_API int virtual_chmod(const char *filename, mode_t mode TSRMLS_DC);
CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int link TSRMLS_DC);
#endif
/* One of the following constants must be used as the last argument
/* One of the following constants must be used as the last argument
in virtual_file_ex() call. */
#define CWD_EXPAND 0 /* expand "." and ".." but dont resolve symlinks */
@@ -214,15 +206,8 @@ typedef struct _realpath_cache_bucket {
int path_len;
char *realpath;
int realpath_len;
int is_dir;
time_t expires;
#ifdef PHP_WIN32
unsigned char is_rvalid;
unsigned char is_readable;
unsigned char is_wvalid;
unsigned char is_writable;
#endif
struct _realpath_cache_bucket *next;
struct _realpath_cache_bucket *next;
} realpath_cache_bucket;
typedef struct _virtual_cwd_globals {
@@ -243,14 +228,10 @@ extern virtual_cwd_globals cwd_globals;
CWD_API void realpath_cache_clean(TSRMLS_D);
CWD_API void realpath_cache_del(const char *path, int path_len TSRMLS_DC);
CWD_API realpath_cache_bucket* realpath_cache_lookup(const char *path, int path_len, time_t t TSRMLS_DC);
CWD_API int realpath_cache_size(TSRMLS_D);
CWD_API int realpath_cache_max_buckets(TSRMLS_D);
CWD_API realpath_cache_bucket** realpath_cache_get_buckets(TSRMLS_D);
/* The actual macros to be used in programs using TSRM
* If the program defines VIRTUAL_DIR it will use the
* virtual_* functions
* virtual_* functions
*/
#ifdef VIRTUAL_DIR
@@ -267,7 +248,9 @@ CWD_API realpath_cache_bucket** realpath_cache_get_buckets(TSRMLS_D);
#define VCWD_REALPATH(path, real_path) virtual_realpath(path, real_path TSRMLS_CC)
#define VCWD_RENAME(oldname, newname) virtual_rename(oldname, newname TSRMLS_CC)
#define VCWD_STAT(path, buff) virtual_stat(path, buff TSRMLS_CC)
#if !defined(TSRM_WIN32)
#define VCWD_LSTAT(path, buff) virtual_lstat(path, buff TSRMLS_CC)
#endif
#define VCWD_UNLINK(path) virtual_unlink(path TSRMLS_CC)
#define VCWD_MKDIR(pathname, mode) virtual_mkdir(pathname, mode TSRMLS_CC)
#define VCWD_RMDIR(pathname) virtual_rmdir(pathname TSRMLS_CC)
@@ -292,13 +275,7 @@ CWD_API realpath_cache_bucket** realpath_cache_get_buckets(TSRMLS_D);
#define VCWD_OPEN(path, flags) open(path, flags)
#define VCWD_OPEN_MODE(path, flags, mode) open(path, flags, mode)
#define VCWD_CREAT(path, mode) creat(path, mode)
/* rename on windows will fail if newname already exists.
MoveFileEx has to be used */
#if defined(TSRM_WIN32)
# define VCWD_RENAME(oldname, newname) (MoveFileEx(oldname, newname, MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED) == 0 ? -1 : 0)
#else
# define VCWD_RENAME(oldname, newname) rename(oldname, newname)
#endif
#define VCWD_RENAME(oldname, newname) rename(oldname, newname)
#define VCWD_CHDIR(path) chdir(path)
#define VCWD_CHDIR_FILE(path) virtual_chdir_file(path, chdir)
#define VCWD_GETWD(buf) getwd(buf)
@@ -318,13 +295,8 @@ CWD_API realpath_cache_bucket** realpath_cache_get_buckets(TSRMLS_D);
#define VCWD_REALPATH(path, real_path) tsrm_realpath(path, real_path TSRMLS_CC)
#if HAVE_UTIME
# ifdef TSRM_WIN32
# define VCWD_UTIME(path, time) win32_utime(path, time)
# else
# define VCWD_UTIME(path, time) utime(path, time)
# endif
#define VCWD_UTIME(path, time) utime(path, time)
#endif
#define VCWD_CHMOD(path, mode) chmod(path, mode)
#if !defined(TSRM_WIN32) && !defined(NETWARE)
#define VCWD_CHOWN(path, owner, group) chown(path, owner, group)
+33 -354
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2011 The PHP Group |
| Copyright (c) 1997-2008 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -23,16 +23,14 @@
#include <io.h>
#include <process.h>
#include <time.h>
#include <errno.h>
#define TSRM_INCLUDE_FULL_WINDOWS_HEADERS
#include "SAPI.h"
#include "TSRM.h"
#ifdef TSRM_WIN32
#include <Sddl.h>
#include "tsrm_win32.h"
#include "tsrm_virtual_cwd.h"
#ifdef ZTS
static ts_rsrc_id win32_globals_id;
@@ -47,16 +45,6 @@ static void tsrm_win32_ctor(tsrm_win32_globals *globals TSRMLS_DC)
globals->process_size = 0;
globals->shm_size = 0;
globals->comspec = _strdup((GetVersion()<0x80000000)?"cmd.exe":"command.com");
/* Set it to INVALID_HANDLE_VALUE
* It will be initialized correctly in tsrm_win32_access or set to
* NULL if no impersonation has been done.
* the impersonated token can't be set here as the impersonation
* will happen later, in fcgi_accept_request (or whatever is the
* SAPI being used).
*/
globals->impersonation_token = INVALID_HANDLE_VALUE;
globals->impersonation_token_sid = NULL;
}
static void tsrm_win32_dtor(tsrm_win32_globals *globals TSRMLS_DC)
@@ -78,13 +66,6 @@ static void tsrm_win32_dtor(tsrm_win32_globals *globals TSRMLS_DC)
}
free(globals->comspec);
if (globals->impersonation_token && globals->impersonation_token != INVALID_HANDLE_VALUE ) {
CloseHandle(globals->impersonation_token);
}
if (globals->impersonation_token_sid) {
free(globals->impersonation_token_sid);
}
}
TSRM_API void tsrm_win32_startup(void)
@@ -103,279 +84,23 @@ TSRM_API void tsrm_win32_shutdown(void)
#endif
}
char * tsrm_win32_get_path_sid_key(const char *pathname TSRMLS_DC)
{
PSID pSid = TWG(impersonation_token_sid);
DWORD sid_len = pSid ? GetLengthSid(pSid) : 0;
TCHAR *ptcSid = NULL;
char *bucket_key = NULL;
if (!pSid) {
bucket_key = (char *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, strlen(pathname) + 1);
if (!bucket_key) {
return NULL;
}
memcpy(bucket_key, pathname, strlen(pathname));
return bucket_key;
}
if (!ConvertSidToStringSid(pSid, &ptcSid)) {
return NULL;
}
bucket_key = (char *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, strlen(pathname) + strlen(ptcSid) + 1);
if (!bucket_key) {
LocalFree(ptcSid);
return NULL;
}
memcpy(bucket_key, ptcSid, strlen(ptcSid));
memcpy(bucket_key + strlen(ptcSid), pathname, strlen(pathname) + 1);
LocalFree(ptcSid);
return bucket_key;
}
PSID tsrm_win32_get_token_sid(HANDLE hToken)
{
BOOL bSuccess = FALSE;
DWORD dwLength = 0;
PTOKEN_USER pTokenUser = NULL;
PSID sid;
PSID *ppsid = &sid;
DWORD sid_len;
PSID pResultSid = NULL;
/* Get the actual size of the TokenUser structure */
if (!GetTokenInformation(
hToken, TokenUser, (LPVOID) pTokenUser, 0, &dwLength)) {
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
goto Finished;
}
pTokenUser = (PTOKEN_USER)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwLength);
if (pTokenUser == NULL) {
goto Finished;
}
}
/* and fetch it now */
if (!GetTokenInformation(
hToken, TokenUser, (LPVOID) pTokenUser, dwLength, &dwLength)) {
goto Finished;
}
sid_len = GetLengthSid(pTokenUser->User.Sid);
/* ConvertSidToStringSid(pTokenUser->User.Sid, &ptcSidOwner); */
pResultSid = malloc(sid_len);
if (!pResultSid) {
goto Finished;
}
if (!CopySid(sid_len, pResultSid, pTokenUser->User.Sid)) {
goto Finished;
}
HeapFree(GetProcessHeap(), 0, (LPVOID)pTokenUser);
return pResultSid;
Finished:
if (pResultSid) {
free(pResultSid);
}
/* Free the buffer for the token groups. */
if (pTokenUser != NULL) {
HeapFree(GetProcessHeap(), 0, (LPVOID)pTokenUser);
}
return NULL;
}
TSRM_API int tsrm_win32_access(const char *pathname, int mode)
{
time_t t;
HANDLE thread_token;
PSID token_sid;
SECURITY_INFORMATION sec_info = OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION;
GENERIC_MAPPING gen_map = { FILE_GENERIC_READ, FILE_GENERIC_WRITE, FILE_GENERIC_EXECUTE, FILE_ALL_ACCESS };
DWORD priv_set_length = sizeof(PRIVILEGE_SET);
PRIVILEGE_SET privilege_set = {0};
DWORD sec_desc_length = 0, desired_access = 0, granted_access = 0;
BYTE * psec_desc = NULL;
BOOL fAccess = FALSE;
BOOL bucket_key_alloc = FALSE;
realpath_cache_bucket * bucket = NULL;
char * real_path = NULL;
TSRMLS_FETCH();
if (mode == 1 /*X_OK*/) {
#if 1
/* This code is not supported by Windows 98,
* but we don't support it anymore */
DWORD type;
return GetBinaryType(pathname, &type) ? 0 : -1;
return GetBinaryType(pathname, &type)?0:-1;
#else
SHFILEINFO sfi;
return access(pathname, 0) == 0 &&
SHGetFileInfo(pathname, 0, &sfi, sizeof(SHFILEINFO), SHGFI_EXETYPE) != 0 ? 0 : -1;
#endif
} else {
if(!IS_ABSOLUTE_PATH(pathname, strlen(pathname)+1)) {
real_path = (char *)malloc(MAX_PATH);
if(tsrm_realpath(pathname, real_path TSRMLS_CC) == NULL) {
goto Finished;
}
pathname = real_path;
}
if(access(pathname, mode)) {
free(real_path);
return errno;
}
/* If only existence check is made, return now */
if (mode == 0) {
free(real_path);
return 0;
}
/* Only in NTS when impersonate==1 (aka FastCGI) */
/*
AccessCheck() requires an impersonation token. We first get a primary
token and then create a duplicate impersonation token. The
impersonation token is not actually assigned to the thread, but is
used in the call to AccessCheck. Thus, this function itself never
impersonates, but does use the identity of the thread. If the thread
was impersonating already, this function uses that impersonation context.
*/
if(!OpenThreadToken(GetCurrentThread(), TOKEN_ALL_ACCESS, TRUE, &thread_token)) {
DWORD err = GetLastError();
if (GetLastError() == ERROR_NO_TOKEN) {
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &thread_token)) {
TWG(impersonation_token) = NULL;
goto Finished;
}
}
}
/* token_sid will be freed in tsrmwin32_dtor */
token_sid = tsrm_win32_get_token_sid(thread_token);
if (!token_sid) {
if (TWG(impersonation_token_sid)) {
free(TWG(impersonation_token_sid));
}
TWG(impersonation_token_sid) = NULL;
goto Finished;
}
/* Different identity, we need a new impersontated token as well */
if (!TWG(impersonation_token_sid) || !EqualSid(token_sid, TWG(impersonation_token_sid))) {
if (TWG(impersonation_token_sid)) {
free(TWG(impersonation_token_sid));
}
TWG(impersonation_token_sid) = token_sid;
/* Duplicate the token as impersonated token */
if (!DuplicateToken(thread_token, SecurityImpersonation, &TWG(impersonation_token))) {
goto Finished;
}
} else {
/* we already have it, free it then */
free(token_sid);
}
if (CWDG(realpath_cache_size_limit)) {
t = time(0);
bucket = realpath_cache_lookup(pathname, strlen(pathname), t TSRMLS_CC);
if(bucket == NULL && real_path == NULL) {
/* We used the pathname directly. Call tsrm_realpath */
/* so that entry is created in realpath cache */
real_path = (char *)malloc(MAX_PATH);
if(tsrm_realpath(pathname, real_path TSRMLS_CC) != NULL) {
pathname = real_path;
bucket = realpath_cache_lookup(pathname, strlen(pathname), t TSRMLS_CC);
}
}
}
/* Do a full access check because access() will only check read-only attribute */
if(mode == 0 || mode > 6) {
if(bucket != NULL && bucket->is_rvalid) {
fAccess = bucket->is_readable;
goto Finished;
}
desired_access = FILE_GENERIC_READ;
} else if(mode <= 2) {
if(bucket != NULL && bucket->is_wvalid) {
fAccess = bucket->is_writable;
goto Finished;
}
desired_access = FILE_GENERIC_WRITE;
} else if(mode <= 4) {
if(bucket != NULL && bucket->is_rvalid) {
fAccess = bucket->is_readable;
goto Finished;
}
desired_access = FILE_GENERIC_READ|FILE_FLAG_BACKUP_SEMANTICS;
} else { // if(mode <= 6)
if(bucket != NULL && bucket->is_rvalid && bucket->is_wvalid) {
fAccess = bucket->is_readable & bucket->is_writable;
goto Finished;
}
desired_access = FILE_GENERIC_READ | FILE_GENERIC_WRITE;
}
if(TWG(impersonation_token) == NULL) {
goto Finished;
}
/* Get size of security buffer. Call is expected to fail */
if(GetFileSecurity(pathname, sec_info, NULL, 0, &sec_desc_length)) {
goto Finished;
}
psec_desc = (BYTE *)malloc(sec_desc_length);
if(psec_desc == NULL ||
!GetFileSecurity(pathname, sec_info, (PSECURITY_DESCRIPTOR)psec_desc, sec_desc_length, &sec_desc_length)) {
goto Finished;
}
MapGenericMask(&desired_access, &gen_map);
if(!AccessCheck((PSECURITY_DESCRIPTOR)psec_desc, TWG(impersonation_token), desired_access, &gen_map, &privilege_set, &priv_set_length, &granted_access, &fAccess)) {
goto Finished_Impersonate;
}
/* Keep the result in realpath_cache */
if(bucket != NULL) {
if(desired_access == (FILE_GENERIC_READ|FILE_FLAG_BACKUP_SEMANTICS)) {
bucket->is_rvalid = 1;
bucket->is_readable = fAccess;
}
else if(desired_access == FILE_GENERIC_WRITE) {
bucket->is_wvalid = 1;
bucket->is_writable = fAccess;
} else if (desired_access == (FILE_GENERIC_READ | FILE_GENERIC_WRITE)) {
bucket->is_rvalid = 1;
bucket->is_readable = fAccess;
bucket->is_wvalid = 1;
bucket->is_writable = fAccess;
}
}
Finished_Impersonate:
if(psec_desc != NULL) {
free(psec_desc);
psec_desc = NULL;
}
Finished:
if(real_path != NULL) {
free(real_path);
real_path = NULL;
}
if(fAccess == FALSE) {
errno = EACCES;
return errno;
} else {
return 0;
}
return access(pathname, mode);
}
}
@@ -384,22 +109,22 @@ static process_pair *process_get(FILE *stream TSRMLS_DC)
{
process_pair *ptr;
process_pair *newptr;
for (ptr = TWG(process); ptr < (TWG(process) + TWG(process_size)); ptr++) {
if (ptr->stream == stream) {
break;
}
}
if (ptr < (TWG(process) + TWG(process_size))) {
return ptr;
}
newptr = (process_pair*)realloc((void*)TWG(process), (TWG(process_size)+1)*sizeof(process_pair));
if (newptr == NULL) {
return NULL;
}
TWG(process) = newptr;
ptr = newptr + TWG(process_size);
TWG(process_size)++;
@@ -411,7 +136,7 @@ static shm_pair *shm_get(int key, void *addr)
shm_pair *ptr;
shm_pair *newptr;
TSRMLS_FETCH();
for (ptr = TWG(shm); ptr < (TWG(shm) + TWG(shm_size)); ptr++) {
if (!ptr->descriptor) {
continue;
@@ -426,12 +151,12 @@ static shm_pair *shm_get(int key, void *addr)
if (ptr < (TWG(shm) + TWG(shm_size))) {
return ptr;
}
newptr = (shm_pair*)realloc((void*)TWG(shm), (TWG(shm_size)+1)*sizeof(shm_pair));
if (newptr == NULL) {
return NULL;
}
TWG(shm) = newptr;
ptr = newptr + TWG(shm_size);
TWG(shm_size)++;
@@ -454,48 +179,23 @@ TSRM_API FILE *popen(const char *command, const char *type)
TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env)
{
FILE *stream = NULL;
int fno, type_len = strlen(type), read, mode;
int fno, str_len = strlen(type), read, mode;
STARTUPINFO startup;
PROCESS_INFORMATION process;
SECURITY_ATTRIBUTES security;
HANDLE in, out;
DWORD dwCreateFlags = 0;
BOOL res;
process_pair *proc;
char *cmd;
int i;
char *ptype = (char *)type;
HANDLE thread_token = NULL;
HANDLE token_user = NULL;
BOOL asuser = TRUE;
process_pair *proc;
TSRMLS_FETCH();
if (!type) {
return NULL;
}
/*The following two checks can be removed once we drop XP support */
type_len = strlen(type);
if (type_len <1 || type_len > 2) {
return NULL;
}
for (i=0; i < type_len; i++) {
if (!(*ptype == 'r' || *ptype == 'w' || *ptype == 'b' || *ptype == 't')) {
return NULL;
}
ptype++;
}
security.nLength = sizeof(SECURITY_ATTRIBUTES);
security.bInheritHandle = TRUE;
security.lpSecurityDescriptor = NULL;
if (!type_len || !CreatePipe(&in, &out, &security, 2048L)) {
if (!str_len || !CreatePipe(&in, &out, &security, 2048L)) {
return NULL;
}
memset(&startup, 0, sizeof(STARTUPINFO));
memset(&process, 0, sizeof(PROCESS_INFORMATION));
@@ -504,7 +204,8 @@ TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd,
startup.hStdError = GetStdHandle(STD_ERROR_HANDLE);
read = (type[0] == 'r') ? TRUE : FALSE;
mode = ((type_len == 2) && (type[1] == 'b')) ? O_BINARY : O_TEXT;
mode = ((str_len == 2) && (type[1] == 'b')) ? O_BINARY : O_TEXT;
if (read) {
in = dupHandle(in, FALSE);
@@ -516,34 +217,12 @@ TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd,
startup.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
}
dwCreateFlags = NORMAL_PRIORITY_CLASS;
if (strcmp(sapi_module.name, "cli") != 0) {
dwCreateFlags |= CREATE_NO_WINDOW;
}
/* Get a token with the impersonated user. */
if(OpenThreadToken(GetCurrentThread(), TOKEN_ALL_ACCESS, TRUE, &thread_token)) {
DuplicateTokenEx(thread_token, MAXIMUM_ALLOWED, &security, SecurityImpersonation, TokenPrimary, &token_user);
} else {
DWORD err = GetLastError();
if (err == ERROR_NO_TOKEN) {
asuser = FALSE;
}
}
cmd = (char*)malloc(strlen(command)+strlen(TWG(comspec))+sizeof(" /c ")+2);
sprintf(cmd, "%s /c \"%s\"", TWG(comspec), command);
if (asuser) {
res = CreateProcessAsUser(token_user, NULL, cmd, &security, &security, security.bInheritHandle, dwCreateFlags, env, cwd, &startup, &process);
CloseHandle(token_user);
} else {
res = CreateProcess(NULL, cmd, &security, &security, security.bInheritHandle, dwCreateFlags, env, cwd, &startup, &process);
}
free(cmd);
if (!res) {
cmd = (char*)malloc(strlen(command)+strlen(TWG(comspec))+sizeof(" /c "));
sprintf(cmd, "%s /c %s", TWG(comspec), command);
if (!CreateProcess(NULL, cmd, &security, &security, security.bInheritHandle, NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW, env, cwd, &startup, &process)) {
return NULL;
}
free(cmd);
CloseHandle(process.hThread);
proc = process_get(NULL TSRMLS_CC);
@@ -573,7 +252,7 @@ TSRM_API int pclose(FILE *stream)
}
fflush(process->stream);
fclose(process->stream);
fclose(process->stream);
WaitForSingleObject(process->prochnd, INFINITE);
GetExitCodeProcess(process->prochnd, &termstat);
+1 -5
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2011 The PHP Group |
| Copyright (c) 1997-2008 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -63,8 +63,6 @@ typedef struct {
int process_size;
int shm_size;
char *comspec;
HANDLE impersonation_token;
PSID impersonation_token_sid;
} tsrm_win32_globals;
#ifdef ZTS
@@ -90,7 +88,6 @@ typedef struct {
#define SHM_RND FILE_MAP_WRITE
#define SHM_REMAP FILE_MAP_COPY
char * tsrm_win32_get_path_sid_key(const char *pathname TSRMLS_DC);
TSRM_API void tsrm_win32_startup(void);
TSRM_API void tsrm_win32_shutdown(void);
@@ -99,7 +96,6 @@ TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd,
TSRM_API FILE *popen(const char *command, const char *type);
TSRM_API int pclose(FILE *stream);
TSRM_API int tsrm_win32_access(const char *pathname, int mode);
TSRM_API int win32_utime(const char *filename, struct utimbuf *buf);
TSRM_API int shmget(int key, int size, int flags);
TSRM_API void *shmat(int key, const void *shmaddr, int flags);
+427 -562
View File
File diff suppressed because it is too large. Load diff
-23
View File
@@ -1,23 +0,0 @@
$Id$
UPGRADE NOTES - PHP 5.3.4
1. Internal API changes
========================
1. Internal API changes
========================
a. stat/lstat support
lstat is now available on all platforms. On unix-like platform
php_sys_lstat is an alias to lstat (when avaible). On Windows it is now
available using php_sys_lstat. php_sys_stat and php_sys_lstat usage is recommended
instead of calling lstat directly, to ensure portability.
b. readlink support
readlink is now available on all platforms. On unix-like platform
php_sys_readlink is an alias to readlink (when avaible). On Windows it is now
available using php_sys_readlink. php_sys_readlink usage is recommended
instead of calling readlink directly, to ensure portability.
+186
View File
@@ -0,0 +1,186 @@
// $Header$
// FlexLexer.h -- define interfaces for lexical analyzer classes generated
// by flex
// Copyright (c) 1993 The Regents of the University of California.
// All rights reserved.
//
// This code is derived from software contributed to Berkeley by
// Kent Williams and Tom Epperly.
//
// Redistribution and use in source and binary forms with or without
// modification are permitted provided that: (1) source distributions retain
// this entire copyright notice and comment, and (2) distributions including
// binaries display the following acknowledgement: ``This product includes
// software developed by the University of California, Berkeley and its
// contributors'' in the documentation or other materials provided with the
// distribution and in all advertising materials mentioning features or use
// of this software. Neither the name of the University nor the names of
// its contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// This file defines FlexLexer, an abstract class which specifies the
// external interface provided to flex C++ lexer objects, and yyFlexLexer,
// which defines a particular lexer class.
//
// If you want to create multiple lexer classes, you use the -P flag
// to rename each yyFlexLexer to some other xxFlexLexer. You then
// include <FlexLexer.h> in your other sources once per lexer class:
//
// #undef yyFlexLexer
// #define yyFlexLexer xxFlexLexer
// #include <FlexLexer.h>
//
// #undef yyFlexLexer
// #define yyFlexLexer zzFlexLexer
// #include <FlexLexer.h>
// ...
#ifndef FLEXLEXER_H
// Never included before - need to define base class.
#define FLEXLEXER_H
#include <iostream.h>
extern "C++" {
struct yy_buffer_state;
typedef int yy_state_type;
class FlexLexer {
public:
virtual ~FlexLexer() { }
const char* YYText() { return yytext; }
int YYLeng() { return yyleng; }
virtual void
yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0;
virtual struct yy_buffer_state*
yy_create_buffer( istream* s, int size ) = 0;
virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0;
virtual void yyrestart( istream* s ) = 0;
virtual int yylex() = 0;
// Call yylex with new input/output sources.
int yylex( istream* new_in, ostream* new_out = 0 )
{
switch_streams( new_in, new_out );
return yylex();
}
// Switch to new input/output streams. A nil stream pointer
// indicates "keep the current one".
virtual void switch_streams( istream* new_in = 0,
ostream* new_out = 0 ) = 0;
int lineno() const { return yylineno; }
int debug() const { return yy_flex_debug; }
void set_debug( int flag ) { yy_flex_debug = flag; }
protected:
char* yytext;
int yyleng;
int yylineno; // only maintained if you use %option yylineno
int yy_flex_debug; // only has effect with -d or "%option debug"
};
}
#endif
#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce)
// Either this is the first time through (yyFlexLexerOnce not defined),
// or this is a repeated include to define a different flavor of
// yyFlexLexer, as discussed in the flex man page.
#define yyFlexLexerOnce
class yyFlexLexer : public FlexLexer {
public:
// arg_yyin and arg_yyout default to the cin and cout, but we
// only make that assignment when initializing in yylex().
yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 );
virtual ~yyFlexLexer();
void yy_switch_to_buffer( struct yy_buffer_state* new_buffer );
struct yy_buffer_state* yy_create_buffer( istream* s, int size );
void yy_delete_buffer( struct yy_buffer_state* b );
void yyrestart( istream* s );
virtual int yylex();
virtual void switch_streams( istream* new_in, ostream* new_out );
protected:
virtual int LexerInput( char* buf, int max_size );
virtual void LexerOutput( const char* buf, int size );
virtual void LexerError( const char* msg );
void yyunput( int c, char* buf_ptr );
int yyinput();
void yy_load_buffer_state();
void yy_init_buffer( struct yy_buffer_state* b, istream* s );
void yy_flush_buffer( struct yy_buffer_state* b );
int yy_start_stack_ptr;
int yy_start_stack_depth;
int* yy_start_stack;
void yy_push_state( int new_state );
void yy_pop_state();
int yy_top_state();
yy_state_type yy_get_previous_state();
yy_state_type yy_try_NUL_trans( yy_state_type current_state );
int yy_get_next_buffer();
istream* yyin; // input source for default LexerInput
ostream* yyout; // output sink for default LexerOutput
struct yy_buffer_state* yy_current_buffer;
// yy_hold_char holds the character lost when yytext is formed.
char yy_hold_char;
// Number of characters read into yy_ch_buf.
int yy_n_chars;
// Points to current character in buffer.
char* yy_c_buf_p;
int yy_init; // whether we need to initialize
int yy_start; // start state number
// Flag which is used to allow yywrap()'s to do buffer switches
// instead of setting up a fresh yyin. A bit of a hack ...
int yy_did_buffer_switch_on_eof;
// The following are not always needed, but may be depending
// on use of certain flex features (like REJECT or yymore()).
yy_state_type yy_last_accepting_state;
char* yy_last_accepting_cpos;
yy_state_type* yy_state_buf;
yy_state_type* yy_state_ptr;
char* yy_full_match;
int* yy_full_state;
int yy_full_lp;
int yy_lp;
int yy_looking_for_trail_begin;
int yy_more_flag;
int yy_more_len;
int yy_more_offset;
int yy_prev_more_offset;
};
#endif
+3 -3
View File
@@ -17,7 +17,7 @@ libZend_la_SOURCES=\
zend_objects_API.c zend_ts_hash.c zend_stream.c \
zend_default_classes.c \
zend_iterators.c zend_interfaces.c zend_exceptions.c \
zend_strtod.c zend_closures.c zend_float.c
zend_strtod.c zend_multibyte.c
libZend_la_LDFLAGS =
libZend_la_LIBADD = @ZEND_EXTRA_LIBS@
@@ -31,7 +31,7 @@ zend_ini_scanner.lo: zend_ini_parser.h
# Language parser/scanner rules
zend_language_scanner.c: $(srcdir)/zend_language_scanner.l
$(RE2C) $(RE2C_FLAGS) --case-inverted -cbdFt $(srcdir)/zend_language_scanner_defs.h -o$@ $(srcdir)/zend_language_scanner.l
$(LEX) -Pzend -S$(srcdir)/flex.skl -o$@ -i $(srcdir)/zend_language_scanner.l
zend_language_parser.h: zend_language_parser.c
zend_language_parser.c: $(srcdir)/zend_language_parser.y
@@ -43,7 +43,7 @@ zend_ini_parser.c: $(srcdir)/zend_ini_parser.y
$(YACC) -p ini_ -v -d $(srcdir)/zend_ini_parser.y -o zend_ini_parser.c
zend_ini_scanner.c: $(srcdir)/zend_ini_scanner.l
$(RE2C) $(RE2C_FLAGS) --case-inverted -cbdFt $(srcdir)/zend_ini_scanner_defs.h -o$@ $(srcdir)/zend_ini_scanner.l
$(LEX) -Pini_ -S$(srcdir)/flex.skl -o$@ -i $(srcdir)/zend_ini_scanner.l
zend_ini_parser.h: zend_ini_parser.c
-8
View File
@@ -123,10 +123,6 @@ SOURCE=.\zend_builtin_functions.c
# End Source File
# Begin Source File
SOURCE=.\zend_closures.c
# End Source File
# Begin Source File
SOURCE=.\zend_compile.c
# End Source File
# Begin Source File
@@ -155,10 +151,6 @@ SOURCE=.\zend_extensions.c
# End Source File
# Begin Source File
SOURCE=.\zend_float.c
# End Source File
# Begin Source File
SOURCE=.\zend_hash.c
# End Source File
# Begin Source File
+4 -36
View File
@@ -31,6 +31,7 @@ AC_DEFUN([LIBZEND_BASIC_CHECKS],[
AC_REQUIRE([AC_PROG_YACC])
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_PROG_CC_C_O])
AC_REQUIRE([AC_PROG_LEX])
AC_REQUIRE([AC_HEADER_STDC])
LIBZEND_BISON_CHECK
@@ -60,6 +61,7 @@ sys/time.h \
signal.h \
unix.h \
stdlib.h \
mach-o/dyld.h \
dlfcn.h)
AC_TYPE_SIZE_T
@@ -97,46 +99,12 @@ dnl Checks for library functions.
AC_FUNC_VPRINTF
AC_FUNC_MEMCMP
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(memcpy strdup getpid kill strtod strtol finite fpclass sigsetjmp)
AC_CHECK_FUNCS(memcpy strdup getpid kill strtod strtol finite fpclass)
AC_ZEND_BROKEN_SPRINTF
AC_CHECK_FUNCS(finite isfinite isinf isnan)
ZEND_FP_EXCEPT
ZEND_CHECK_FLOAT_PRECISION
dnl test whether double cast to long preserves least significant bits
AC_MSG_CHECKING(whether double cast to long preserves least significant bits)
AC_TRY_RUN([
#include <limits.h>
int main()
{
if (sizeof(long) == 4) {
double d = (double) LONG_MIN * LONG_MIN + 2e9;
if ((long) d == 2e9 && (long) -d == -2e9) {
exit(0);
}
} else if (sizeof(long) == 8) {
double correct = 18e18 - ((double) LONG_MIN * -2); /* Subtract ULONG_MAX + 1 */
if ((long) 18e18 == correct) { /* On 64-bit, only check between LONG_MAX and ULONG_MAX */
exit(0);
}
}
exit(1);
}
], [
AC_DEFINE([ZEND_DVAL_TO_LVAL_CAST_OK], 1, [Define if double cast to long preserves least significant bits])
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
], [
AC_MSG_RESULT(no)
])
])
@@ -197,7 +165,7 @@ AC_MSG_RESULT($ZEND_DEBUG)
AC_MSG_CHECKING(whether to enable Zend multibyte)
AC_MSG_RESULT($ZEND_MULTIBYTE)
case $PHP_ZEND_VM in
SWITCH)
AC_DEFINE(ZEND_VM_KIND,ZEND_VM_KIND_SWITCH,[virtual machine dispatch method])
-4
View File
@@ -148,10 +148,6 @@ SOURCE=.\zend_builtin_functions.c
# End Source File
# Begin Source File
SOURCE=.\zend_closures.c
# End Source File
# Begin Source File
SOURCE=.\zend_compile.c
# End Source File
# Begin Source File
+3 -9
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2008 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -19,14 +19,8 @@
/* $Id$ */
#if defined(__GNUC__) && __GNUC__ >= 4
# define ZEND_API __attribute__ ((visibility("default")))
# define ZEND_DLEXPORT __attribute__ ((visibility("default")))
#else
# define ZEND_API
# define ZEND_DLEXPORT
#endif
#define ZEND_API
#define ZEND_DLEXPORT
#define ZEND_DLIMPORT
@TOP@
+1 -115
View File
@@ -4,7 +4,7 @@ dnl This file contains local autoconf functions.
AC_DEFUN([LIBZEND_BISON_CHECK],[
# we only support certain bison versions
bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5"
bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3"
# for standalone build of Zend Engine
test -z "$SED" && SED=sed
@@ -105,117 +105,3 @@ int main(void)
AC_DEFUN([AM_SET_LIBTOOL_VARIABLE],[
LIBTOOL='$(SHELL) $(top_builddir)/libtool $1'
])
dnl x87 floating point internal precision control checks
dnl See: http://wiki.php.net/rfc/rounding
AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[
AC_MSG_CHECKING([for usable _FPU_SETCW])
AC_TRY_LINK([
#include <fpu_control.h>
],[
fpu_control_t fpu_oldcw, fpu_cw;
volatile double result;
double a = 2877.0;
volatile double b = 1000000.0;
_FPU_GETCW(fpu_oldcw);
fpu_cw = (fpu_oldcw & ~_FPU_EXTENDED & ~_FPU_SINGLE) | _FPU_DOUBLE;
_FPU_SETCW(fpu_cw);
result = a / b;
_FPU_SETCW(fpu_oldcw);
], [ac_cfp_have__fpu_setcw=yes], [ac_cfp_have__fpu_setcw=no])
if test "$ac_cfp_have__fpu_setcw" = "yes" ; then
AC_DEFINE(HAVE__FPU_SETCW, 1, [whether _FPU_SETCW is present and usable])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([for usable fpsetprec])
AC_TRY_LINK([
#include <machine/ieeefp.h>
],[
fp_prec_t fpu_oldprec;
volatile double result;
double a = 2877.0;
volatile double b = 1000000.0;
fpu_oldprec = fpgetprec();
fpsetprec(FP_PD);
result = a / b;
fpsetprec(fpu_oldprec);
], [ac_cfp_have_fpsetprec=yes], [ac_cfp_have_fpsetprec=no])
if test "$ac_cfp_have_fpsetprec" = "yes" ; then
AC_DEFINE(HAVE_FPSETPREC, 1, [whether fpsetprec is present and usable])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([for usable _controlfp])
AC_TRY_LINK([
#include <float.h>
],[
unsigned int fpu_oldcw;
volatile double result;
double a = 2877.0;
volatile double b = 1000000.0;
fpu_oldcw = _controlfp(0, 0);
_controlfp(_PC_53, _MCW_PC);
result = a / b;
_controlfp(fpu_oldcw, _MCW_PC);
], [ac_cfp_have__controlfp=yes], [ac_cfp_have__controlfp=no])
if test "$ac_cfp_have__controlfp" = "yes" ; then
AC_DEFINE(HAVE__CONTROLFP, 1, [whether _controlfp is present usable])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([for usable _controlfp_s])
AC_TRY_LINK([
#include <float.h>
],[
unsigned int fpu_oldcw, fpu_cw;
volatile double result;
double a = 2877.0;
volatile double b = 1000000.0;
_controlfp_s(&fpu_cw, 0, 0);
fpu_oldcw = fpu_cw;
_controlfp_s(&fpu_cw, _PC_53, _MCW_PC);
result = a / b;
_controlfp_s(&fpu_cw, fpu_oldcw, _MCW_PC);
], [ac_cfp_have__controlfp_s=yes], [ac_cfp_have__controlfp_s=no])
if test "$ac_cfp_have__controlfp_s" = "yes" ; then
AC_DEFINE(HAVE__CONTROLFP_S, 1, [whether _controlfp_s is present and usable])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([whether FPU control word can be manipulated by inline assembler])
AC_TRY_LINK([
/* nothing */
],[
unsigned int oldcw, cw;
volatile double result;
double a = 2877.0;
volatile double b = 1000000.0;
__asm__ __volatile__ ("fnstcw %0" : "=m" (*&oldcw));
cw = (oldcw & ~0x0 & ~0x300) | 0x200;
__asm__ __volatile__ ("fldcw %0" : : "m" (*&cw));
result = a / b;
__asm__ __volatile__ ("fldcw %0" : : "m" (*&oldcw));
], [ac_cfp_have_fpu_inline_asm_x86=yes], [ac_cfp_have_fpu_inline_asm_x86=no])
if test "$ac_cfp_have_fpu_inline_asm_x86" = "yes" ; then
AC_DEFINE(HAVE_FPU_INLINE_ASM_X86, 1, [whether FPU control word can be manipulated by inline assembler])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
])
+1 -4
View File
@@ -1,9 +1,6 @@
<?php
if (function_exists("date_default_timezone_set")) {
date_default_timezone_set("UTC");
}
date_default_timezone_set("UTC");
date_default_timezone_set('UTC');
function simple() {
$a = 0;
for ($i = 0; $i < 1000000; $i++)
+1
View File
@@ -7,6 +7,7 @@ AM_CONFIG_HEADER(zend_config.h)
AM_SANITY_CHECK
AM_MAINTAINER_MODE
AC_PROG_CC
AM_PROG_LEX
AM_PROG_CC_STDC
ZEND_VERSION=$VERSION
AC_ZEND_C_BIGENDIAN
+1648
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -13,7 +13,7 @@ var_dump(strncmp("qwerty", "qwerty123", 7));
echo "Done\n";
?>
--EXPECTF--
Warning: strncmp() expects exactly 3 parameters, 2 given in %s on line %d
Warning: Wrong parameter count for strncmp() in %s on line %d
NULL
int(0)
+1 -1
View File
@@ -15,7 +15,7 @@ var_dump(strcasecmp("01", "01"));
echo "Done\n";
?>
--EXPECTF--
Warning: strcasecmp() expects exactly 2 parameters, 1 given in %s on line %d
Warning: Wrong parameter count for strcasecmp() in %s on line %d
NULL
int(0)
int(-3)
+1 -1
View File
@@ -16,7 +16,7 @@ var_dump(strncasecmp("01", "01", 1000));
echo "Done\n";
?>
--EXPECTF--
Warning: strncasecmp() expects exactly 3 parameters, 1 given in %s on line %d
Warning: Wrong parameter count for strncasecmp() in %s on line %d
NULL
Warning: Length must be greater than or equal to 0 in %s on line %d
+1 -1
View File
@@ -22,7 +22,7 @@ var_dump(each($a));
echo "Done\n";
?>
--EXPECTF--
Warning: each() expects exactly 1 parameter, 0 given in %s on line %d
Warning: Wrong parameter count for each() in %s on line %d
NULL
Warning: Variable passed to each() is not an array or object in %s on line %d
+6 -6
View File
@@ -23,18 +23,18 @@ var_dump(constant("test const"));
echo "Done\n";
?>
--EXPECTF--
Warning: define() expects at least 2 parameters, 0 given in %s on line %d
Warning: Wrong parameter count for define() in %s on line %d
NULL
Warning: define() expects at least 2 parameters, 1 given in %s on line %d
Warning: Wrong parameter count for define() in %s on line %d
NULL
bool(true)
Warning: define() expects parameter 3 to be boolean, array given in %s on line %d
NULL
Notice: Constant true already defined in %s on line %d
bool(false)
Warning: define() expects parameter 1 to be string, array given in %s on line %d
NULL
Notice: Array to string conversion in %s on line %d
bool(true)
bool(true)
bool(true)
bool(true)
-2
View File
@@ -40,8 +40,6 @@ string(3) "foo"
Warning: get_class() called without object from outside a class in %s on line %d
bool(false)
Warning: get_class() expects parameter 1 to be object, string given in %s on line %d
bool(false)
string(3) "foo"
string(4) "foo2"
+7 -7
View File
@@ -53,22 +53,22 @@ $bar->test();
echo "Done\n";
?>
--EXPECTF--
Warning: property_exists() expects exactly 2 parameters, 0 given in %s on line %d
Warning: Wrong parameter count for property_exists() in %s on line %d
NULL
Warning: property_exists() expects exactly 2 parameters, 1 given in %s on line %d
Warning: Wrong parameter count for property_exists() in %s on line %d
NULL
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
@@ -84,6 +84,6 @@ bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
Done
+2 -2
View File
@@ -32,7 +32,7 @@ array(2) {
string(%d) "%s"
}
Warning: get_included_files() expects exactly 0 parameters, 2 given in %s on line %d
Warning: Wrong parameter count for get_included_files() in %s on line %d
NULL
array(2) {
[0]=>
@@ -41,7 +41,7 @@ array(2) {
string(%d) "%s"
}
Warning: get_included_files() expects exactly 0 parameters, 1 given in %s on line %d
Warning: Wrong parameter count for get_included_files() in %s on line %d
NULL
array(2) {
[0]=>
+5 -7
View File
@@ -9,19 +9,20 @@ var_dump(trigger_error(array()));
var_dump(trigger_error("error", -1));
var_dump(trigger_error("error", 0));
var_dump(trigger_error("error", E_USER_WARNING));
var_dump(trigger_error("error", E_USER_DEPRECATED));
echo "Done\n";
?>
--EXPECTF--
Warning: trigger_error() expects at least 1 parameter, 0 given in %s on line %d
Warning: Wrong parameter count for trigger_error() in %s on line %d
NULL
Notice: error in %s on line %d
bool(true)
Warning: trigger_error() expects parameter 1 to be string, array given in %s on line %d
NULL
Notice: Array to string conversion in %s on line %d
Notice: Array in %s on line %d
bool(true)
Warning: Invalid error type specified in %s on line %d
bool(false)
@@ -31,7 +32,4 @@ bool(false)
Warning: error in %s on line %d
bool(true)
Deprecated: error in %s on line %d
bool(true)
Done
+7 -7
View File
@@ -45,11 +45,11 @@ var_dump(count(get_extension_funcs("zend")));
echo "Done\n";
?>
--EXPECTF--
Warning: get_resource_type() expects exactly 1 parameter, 0 given in %s on line %d
Warning: Wrong parameter count for get_resource_type() in %s on line %d
NULL
Warning: get_resource_type() expects parameter 1 to be resource, string given in %s on line %d
NULL
Warning: Supplied argument is not a valid resource handle in %s on line %d
bool(false)
string(6) "stream"
string(7) "Unknown"
string(5) "array"
@@ -60,23 +60,23 @@ int(%d)
Warning: get_loaded_extensions() expects at most 1 parameter, 2 given in %s on line %d
NULL
Warning: get_defined_constants() expects at most 1 parameter, 2 given in %s on line %d
Warning: Wrong parameter count for get_defined_constants() in %s on line %d
NULL
string(5) "array"
string(5) "array"
int(%d)
Warning: get_defined_functions() expects exactly 0 parameters, 1 given in %s on line %d
Warning: Wrong parameter count for get_defined_functions() in %s on line %d
NULL
string(5) "array"
int(%d)
Warning: get_declared_interfaces() expects exactly 0 parameters, 1 given in %s on line %d
Warning: Wrong parameter count for get_declared_interfaces() in %s on line %d
NULL
string(5) "array"
int(%d)
Warning: get_extension_funcs() expects exactly 1 parameter, 0 given in %s on line %d
Warning: Wrong parameter count for get_extension_funcs() in %s on line %d
NULL
bool(false)
string(5) "array"
+5 -3
View File
@@ -18,16 +18,18 @@ var_dump(constant("TEST_CONST2"));
echo "Done\n";
?>
--EXPECTF--
Warning: constant() expects exactly 1 parameter, 0 given in %s on line %d
Warning: Wrong parameter count for constant() in %s on line %d
NULL
Warning: constant() expects exactly 1 parameter, 2 given in %s on line %d
Warning: Wrong parameter count for constant() in %s on line %d
NULL
Warning: constant(): Couldn't find constant in %s on line %d
NULL
Warning: constant() expects parameter 1 to be string, array given in %s on line %d
Notice: Array to string conversion in %s on line %d
Warning: constant(): Couldn't find constant Array in %s on line %d
NULL
int(1)
string(4) "test"
+11 -12
View File
@@ -359,8 +359,7 @@ var_dump($global_var);
//Note: No error conditions relating to passing arugments can be tested
// because these are not functions but statements, it will result in syntax error.
?>
===DONE===
echo "Done\n";
--EXPECTF--
*** Testing unset(), empty() & isset() with scalar variables ***
-- Iteration 1 --
@@ -1186,11 +1185,11 @@ bool(true)
*** Testing unset(), emtpy() & isset() with resource variables ***
-- Iteration 1 --
resource(%d) of type (stream)
resource(5) of type (stream)
bool(true)
bool(false)
bool(true)
resource(%d) of type (stream)
resource(5) of type (stream)
bool(false)
bool(true)
bool(false)
@@ -1199,11 +1198,11 @@ bool(false)
Notice: Undefined variable: resource in %s on line %d
NULL
-- Iteration 2 --
resource(%d) of type (stream)
resource(6) of type (stream)
bool(true)
bool(false)
bool(true)
resource(%d) of type (stream)
resource(6) of type (stream)
bool(false)
bool(true)
bool(false)
@@ -1218,7 +1217,7 @@ bool(false)
bool(true)
*** Testing unset(), empty() & isset() with objects ***
object(Point)#%d (3) {
object(Point)#1 (3) {
["x"]=>
int(30)
["y"]=>
@@ -1240,7 +1239,7 @@ bool(false)
Notice: Undefined variable: lable in %s on line %d
bool(true)
object(Point)#%d (3) {
object(Point)#1 (3) {
["x"]=>
int(30)
["y"]=>
@@ -1248,7 +1247,7 @@ object(Point)#%d (3) {
["lable"]=>
string(6) "Point1"
}
object(Point)#%d (2) {
object(Point)#1 (2) {
["y"]=>
int(40)
["lable"]=>
@@ -1256,7 +1255,7 @@ object(Point)#%d (2) {
}
bool(false)
bool(true)
object(Point)#%d (0) {
object(Point)#1 (0) {
}
bool(true)
bool(false)
@@ -1277,7 +1276,7 @@ array(3) {
[2]=>
string(9) "testPoint"
}
object(Point)#%d (3) {
object(Point)#1 (3) {
["x"]=>
int(5)
["y"]=>
@@ -1330,4 +1329,4 @@ bool(false)
bool(false)
bool(true)
int(10)
===DONE===
Done
+2 -5
View File
@@ -20,14 +20,11 @@ foo(1,2);
echo "Done\n";
?>
--EXPECTF--
Warning: func_get_arg() expects exactly 1 parameter, 3 given in %s on line %d
NULL
bool(false)
Warning: func_get_arg(): Called from the global scope - no function context in %s on line %d
bool(false)
Warning: func_get_arg() expects exactly 1 parameter, 0 given in %s on line %d
NULL
bool(false)
Warning: func_get_arg(): Argument 1 not passed to function in %s on line %d
bool(false)
-37
View File
@@ -1,37 +0,0 @@
--TEST--
?: operator
--FILE--
<?php
var_dump(true ?: false);
var_dump(false ?: true);
var_dump(23 ?: 42);
var_dump(0 ?: "bar");
$a = 23;
$b = 0;
$c = "";
$d = 23.5;
var_dump($a ?: $b);
var_dump($c ?: $d);
var_dump(1 ?: print(2));
$e = array();
$e['e'] = 'e';
$e['e'] = $e['e'] ?: 'e';
print_r($e);
?>
--EXPECT--
bool(true)
bool(true)
int(23)
string(3) "bar"
int(23)
float(23.5)
int(1)
Array
(
[e] => e
)
-24
View File
@@ -1,24 +0,0 @@
--TEST--
Implementating abstracting methods and optional parameters
--FILE--
<?php
abstract class Base
{
abstract function someMethod($param);
}
class Ext extends Base
{
function someMethod($param = "default")
{
echo $param, "\n";
}
}
$a = new Ext();
$a->someMethod("foo");
$a->someMethod();
--EXPECT--
foo
default
-45
View File
@@ -1,45 +0,0 @@
--TEST--
Testing variable variables as function name
--FILE--
<?php
$a = 'ucfirst';
$b = 'a';
print $$b('test');
print "\n";
class bar {
public function a() {
return "bar!";
}
}
class foo {
public function test() {
print "foo!\n";
return new bar;
}
}
function test() {
return new foo;
}
$a = 'test';
$b = 'a';
var_dump($$b()->$$b()->$b());
$a = 'strtoupper';
$b = 'a';
$c = 'b';
$d = 'c';
var_dump($$$$d('foo'));
?>
--EXPECT--
Test
foo!
string(4) "bar!"
string(3) "FOO"
-51
View File
@@ -1,51 +0,0 @@
--TEST--
Testing operations with undefined variable
--FILE--
<?php
var_dump($a[1]);
var_dump($a[$c]);
var_dump($a + 1);
var_dump($a + $b);
var_dump($a++);
var_dump(++$b);
var_dump($a->$b);
var_dump($a->$b);
var_dump($a->$b->$c[1]);
?>
--EXPECTF--
Notice: Undefined variable: a in %s on line %d
NULL
Notice: Undefined variable: %s in %s on line %d
Notice: Undefined variable: %s in %s on line %d
NULL
Notice: Undefined variable: a in %s on line %d
int(1)
Notice: Undefined variable: %s in %s on line %d
Notice: Undefined variable: %s in %s on line %d
int(0)
Notice: Undefined variable: a in %s on line %d
NULL
Notice: Undefined variable: b in %s on line %d
int(1)
Notice: Trying to get property of non-object in %s on line %d
NULL
Notice: Trying to get property of non-object in %s on line %d
NULL
Notice: Undefined variable: c in %s on line %d
Notice: Trying to get property of non-object in %s on line %d
Notice: Trying to get property of non-object in %s on line %d
NULL
-32
View File
@@ -1,32 +0,0 @@
--TEST--
Testing dynamic calls
--FILE--
<?php
class foo {
static public function a() {
print "ok\n";
}
}
$a = 'a';
$b = 'a';
$class = 'foo';
foo::a();
foo::$a();
foo::$$b();
$class::a();
$class::$a();
$class::$$b();
?>
--EXPECT--
ok
ok
ok
ok
ok
ok
-25
View File
@@ -1,25 +0,0 @@
--TEST--
Trying assign value to property when an object is not returned in a function
--FILE--
<?php
class foo {
public function a() {
}
}
$test = new foo;
$test->a()->a;
print "ok\n";
$test->a()->a = 1;
print "ok\n";
?>
--EXPECTF--
Notice: Trying to get property of non-object in %s on line %d
ok
Strict Standards: Creating default object from empty value in %s on line %d
ok
-22
View File
@@ -1,22 +0,0 @@
--TEST--
Testing dynamic calls using variable variables with curly syntax
--FILE--
<?php
$a = 'b';
$b = 'c';
$c = 'strtoupper';
var_dump(${${$a}}('foo') == 'FOO');
$a = 'b';
$b = 'c';
$c = 'strtoupper';
$strtoupper = 'strtolower';
var_dump(${${++$a}}('FOO') == 'foo');
?>
--EXPECT--
bool(true)
bool(true)
-23
View File
@@ -1,23 +0,0 @@
--TEST--
Testing function call through of array item
--FILE--
<?php
$arr = array('strtoupper', 'strtolower');
$k = 0;
var_dump($arr[0]('foo') == 'FOO');
var_dump($arr[$k]('foo') == 'FOO');
var_dump($arr[++$k]('FOO') == 'foo');
var_dump($arr[++$k]('FOO') == 'foo');
?>
--EXPECTF--
bool(true)
bool(true)
bool(true)
Notice: Undefined offset: 2 in %s on line %d
Fatal error: Function name must be a string in %s on line %d
-51
View File
@@ -1,51 +0,0 @@
--TEST--
Testing assign to property of an object in an array
--FILE--
<?php
$arr = array(new stdClass);
$arr[0]->a = clone $arr[0];
var_dump($arr);
$arr[0]->b = new $arr[0];
var_dump($arr);
$arr[0]->c = $arr[0]->a;
var_dump($arr);
?>
--EXPECT--
array(1) {
[0]=>
object(stdClass)#1 (1) {
["a"]=>
object(stdClass)#2 (0) {
}
}
}
array(1) {
[0]=>
object(stdClass)#1 (2) {
["a"]=>
object(stdClass)#2 (0) {
}
["b"]=>
object(stdClass)#3 (0) {
}
}
}
array(1) {
[0]=>
object(stdClass)#1 (3) {
["a"]=>
object(stdClass)#2 (0) {
}
["b"]=>
object(stdClass)#3 (0) {
}
["c"]=>
object(stdClass)#2 (0) {
}
}
}
-70
View File
@@ -1,70 +0,0 @@
--TEST--
Overriding $this in catch and checking the object properties later.
--FILE--
<?php
class foo {
public $test = 0;
private $test_2 = 1;
protected $test_3 = 2;
public function bar() {
try {
throw new Exception('foo');
} catch (Exception $this) {
var_dump($this);
}
$this->baz();
}
public function baz() {
foreach ($this as $k => $v) {
printf("'%s' => '%s'\n", $k, $v);
}
print "ok\n";
}
}
$test = new foo;
$test->bar();
?>
--EXPECTF--
object(Exception)#%d (7) {
["message":protected]=>
string(3) "foo"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(%d) "%s030.php"
["line":protected]=>
int(%d)
["trace":"Exception":private]=>
array(1) {
[0]=>
array(6) {
["file"]=>
string(%d) "%s030.php"
["line"]=>
int(%d)
["function"]=>
string(3) "bar"
["class"]=>
string(3) "foo"
["type"]=>
string(2) "->"
["args"]=>
array(0) {
}
}
}
["previous":"Exception":private]=>
NULL
}
'test' => '0'
'test_2' => '1'
'test_3' => '2'
ok
-11
View File
@@ -1,11 +0,0 @@
--TEST--
Testing array with '[]' passed as argument by value
--FILE--
<?php
function test($var) { }
test($arr[]);
?>
--EXPECTF--
Fatal error: Cannot use [] for reading in %s on line %d
-13
View File
@@ -1,13 +0,0 @@
--TEST--
Testing array with '[]' passed as argument by reference
--FILE--
<?php
function test(&$var) { }
test($arr[]);
print "ok!\n";
?>
--EXPECT--
ok!
-31
View File
@@ -1,31 +0,0 @@
--TEST--
Using undefined multidimensional array
--FILE--
<?php
$arr[1][2][3][4][5];
echo $arr[1][2][3][4][5];
$arr[1][2][3][4][5]->foo;
$arr[1][2][3][4][5]->foo = 1;
$arr[][] = 2;
$arr[][]->bar = 2;
?>
--EXPECTF--
Notice: Undefined variable: arr in %s on line %d
Notice: Undefined variable: arr in %s on line %d
Notice: Undefined variable: arr in %s on line %d
Notice: Trying to get property of non-object in %s on line %d
Strict Standards: Creating default object from empty value in %s on line %d
Strict Standards: Creating default object from empty value in %s on line %d
-26
View File
@@ -1,26 +0,0 @@
--TEST--
Testing multiples 'default:' in switch
--FILE--
<?php
switch (1) {
case 2:
print 'foo';
break;
case 3:
print 'bar';
break;
default:
print 1;
break;
default:
print 2;
break;
default:
print 3;
break;
}
?>
--EXPECT--
3
-18
View File
@@ -1,18 +0,0 @@
--TEST--
Using 'static' and 'global' in global scope
--FILE--
<?php
static $var, $var, $var = -1;
var_dump($var);
global $var, $var, $var;
var_dump($var);
var_dump($GLOBALS['var']);
?>
--EXPECT--
int(-1)
int(-1)
int(-1)
-13
View File
@@ -1,13 +0,0 @@
--TEST--
Trying to use lambda in array offset
--FILE--
<?php
$test[function(){}] = 1;
$a{function() { }} = 1;
?>
--EXPECTF--
Warning: Illegal offset type in %s on line %d
Warning: Illegal offset type in %s on line %d
-19
View File
@@ -1,19 +0,0 @@
--TEST--
Trying to access inexistent static property of Closure
--FILE--
<?php
namespace closure;
class closure { static $x = 1;}
$x = __NAMESPACE__;
var_dump(closure::$x);
var_dump($x::$x);
?>
--EXPECTF--
int(1)
Fatal error: Access to undeclared static property: Closure::$x in %s on line %d
-12
View File
@@ -1,12 +0,0 @@
--TEST--
Trying to use lambda as array key
--FILE--
<?php
var_dump(array(function() { } => 1));
?>
--EXPECTF--
Warning: Illegal offset type in %s on line %d
array(0) {
}
-14
View File
@@ -1,14 +0,0 @@
--TEST--
using multiple access modifiers (methods)
--FILE--
<?php
class test {
static public public static final public final function foo() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Multiple access type modifiers are not allowed in %s on line %d
-13
View File
@@ -1,13 +0,0 @@
--TEST--
using multiple access modifiers (attributes)
--FILE--
<?php
class test {
static public public static final public final $var;
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Multiple access type modifiers are not allowed in %s on line %d
-13
View File
@@ -1,13 +0,0 @@
--TEST--
using multiple access modifiers (classes)
--FILE--
<?php
final final class test {
function foo() {}
}
echo "Done\n";
?>
--EXPECTF--
Parse error: %s error,%sexpecting %s in %s on line %d
-14
View File
@@ -1,14 +0,0 @@
--TEST--
using multiple access modifiers (abstract methods)
--FILE--
<?php
class test {
abstract abstract function foo() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Multiple abstract modifiers are not allowed in %s on line %d
-14
View File
@@ -1,14 +0,0 @@
--TEST--
using multiple access modifiers (final methods)
--FILE--
<?php
class test {
final final function foo() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Multiple final modifiers are not allowed in %s on line %d
-14
View File
@@ -1,14 +0,0 @@
--TEST--
using multiple access modifiers (static methods)
--FILE--
<?php
class test {
static static function foo() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Multiple static modifiers are not allowed in %s on line %d
-13
View File
@@ -1,13 +0,0 @@
--TEST--
abstract final methods errmsg
--FILE--
<?php
class test {
final abstract function foo();
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use the final modifier on an abstract class member in %s on line %d
-21
View File
@@ -1,21 +0,0 @@
--TEST--
Inconsistencies when accessing protected members
--XFAIL--
Discussion: http://marc.info/?l=php-internals&m=120221184420957&w=2
--FILE--
<?php
class A {
static protected function f() {return 'A::f()';}
}
class B1 extends A {
static protected function f() {return 'B1::f()';}
}
class B2 extends A {
static public function test() {echo B1::f();}
}
B2::test();
?>
--EXPECTF--
Fatal error: Call to protected method B1::f() from context 'B2' in %s on line %d
-26
View File
@@ -1,26 +0,0 @@
--TEST--
Inconsistencies when accessing protected members - 2
--XFAIL--
Discussion: http://marc.info/?l=php-internals&m=120221184420957&w=2
--FILE--
<?php
class A {
static protected function f() {return 'A::f()';}
}
class B1 extends A {
static protected function f() {return 'B1::f()';}
}
class B2 extends A {
static public function test() {
var_dump(is_callable('B1::f'));
B1::f();
}
}
B2::test();
?>
--EXPECTF--
bool(false)
Fatal error: Call to protected method B1::f() from context 'B2' in %s on line %d
-31
View File
@@ -1,31 +0,0 @@
--TEST--
Testing visibility of methods
--FILE--
<?php
class d {
private function test2() {
print "Bar\n";
}
}
abstract class a extends d {
public function test() {
$this->test2();
}
}
abstract class b extends a {
}
class c extends b {
public function __construct() {
$this->test();
}
}
new c;
?>
--EXPECTF--
Fatal error: Call to private method d::test2() from context 'a' in %s on line %d
-39
View File
@@ -1,39 +0,0 @@
--TEST--
__call() for private/protected methods
--FILE--
<?php
class A {
private $var1 = 'var1 value';
protected $var2 = 'var2 value';
private function func1()
{
return "in func1";
}
protected function func2()
{
return "in func2";
}
public function __get($var)
{
return $this->$var;
}
public function __call($func, array $args = array())
{
return call_user_func_array(array($this, $func), $args);
}
}
$a = new A();
echo $a->var1,"\n";
echo $a->var2,"\n";
echo $a->func1(),"\n";
echo $a->func2(),"\n";
?>
--EXPECTF--
var1 value
var2 value
in func1
in func2
-21
View File
@@ -1,21 +0,0 @@
--TEST--
Trigger __call() in lieu of non visible methods when called via a callback.
--FILE--
<?php
class C {
protected function prot() { }
private function priv() { }
public function __call($name, $args) {
echo "In __call() for method $name()\n";
}
}
$c = new C;
call_user_func(array($c, 'none'));
call_user_func(array($c, 'prot'));
call_user_func(array($c, 'priv'));
?>
--EXPECTF--
In __call() for method none()
In __call() for method prot()
In __call() for method priv()
-35
View File
@@ -1,35 +0,0 @@
--TEST--
Testing calls to anonymous function
--FILE--
<?php
for ($i = 0; $i < 10; $i++) {
$a = create_function('', 'return '. $i .';');
var_dump($a());
$b = "\0lambda_". ($i + 1);
var_dump($b());
}
?>
--EXPECT--
int(0)
int(0)
int(1)
int(1)
int(2)
int(2)
int(3)
int(3)
int(4)
int(4)
int(5)
int(5)
int(6)
int(6)
int(7)
int(7)
int(8)
int(8)
int(9)
int(9)
-16
View File
@@ -1,16 +0,0 @@
--TEST--
Testing anonymous function return as array key and accessing $GLOBALS
--FILE--
<?php
$test = create_function('$v', 'return $v;');
$arr = array(create_function('', 'return $GLOBALS["arr"];'), 2);
var_dump($arr[$test(1)]);
var_dump($arr[$test(0)]() == $arr);
?>
--EXPECT--
int(2)
bool(true)
Loaded 100 of 10733 files, more files were not shown because too many files have changed in this diff. Show more