summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gdbinit75
-rw-r--r--.gitattributes261
-rw-r--r--EXTENSIONS4
-rw-r--r--Makefile.global6
-rw-r--r--NEWS605
-rw-r--r--README.NEW-OUTPUT-API142
-rw-r--r--README.PARAMETER_PARSING_API1
-rw-r--r--README.RELEASE_PROCESS34
-rw-r--r--README.input_filter22
-rw-r--r--TODO136
-rw-r--r--TODO-5.14
-rw-r--r--TODO-PHP589
-rw-r--r--TSRM/TSRM.c16
-rw-r--r--TSRM/TSRM.h7
-rw-r--r--TSRM/acconfig.h1
-rw-r--r--TSRM/build.mk2
-rw-r--r--TSRM/configure.in4
-rw-r--r--TSRM/tsrm.m42
-rw-r--r--TSRM/tsrm_virtual_cwd.c58
-rw-r--r--TSRM/tsrm_virtual_cwd.h10
-rw-r--r--TSRM/tsrm_win32.c12
-rw-r--r--TSRM/tsrm_win32.h4
-rwxr-xr-xUPGRADING1275
-rw-r--r--UPGRADING.INTERNALS190
-rw-r--r--Zend/Makefile.am2
-rw-r--r--Zend/README.ZEND_MM3
-rw-r--r--Zend/Zend.dsp12
-rw-r--r--Zend/Zend.m441
-rw-r--r--Zend/ZendTS.dsp12
-rw-r--r--Zend/acconfig.h127
-rw-r--r--Zend/bench.php1
-rw-r--r--Zend/build.mk2
-rw-r--r--Zend/configure.in99
-rw-r--r--Zend/micro_bench.php358
-rw-r--r--Zend/tests/026.phpt2
-rw-r--r--Zend/tests/033.phpt4
-rw-r--r--Zend/tests/argument_restriction_001.phpt16
-rw-r--r--Zend/tests/argument_restriction_002.phpt16
-rw-r--r--Zend/tests/argument_restriction_003.phpt19
-rw-r--r--Zend/tests/argument_restriction_004.phpt17
-rw-r--r--Zend/tests/argument_restriction_005.phpt11
-rw-r--r--Zend/tests/argument_restriction_006.phpt16
-rwxr-xr-xZend/tests/array_type_hint_001.phpt2
-rw-r--r--Zend/tests/binary-32bit.phpt154
-rw-r--r--Zend/tests/binary.phpt154
-rw-r--r--Zend/tests/bug31098.phpt16
-rwxr-xr-xZend/tests/bug35655.phpt1
-rw-r--r--Zend/tests/bug39018.phpt39
-rwxr-xr-xZend/tests/bug39304.phpt9
-rw-r--r--Zend/tests/bug39304_2_4.phpt18
-rw-r--r--Zend/tests/bug42767.phpt1
-rw-r--r--Zend/tests/bug47981.phpt4
-rw-r--r--Zend/tests/bug51421.phpt18
-rw-r--r--Zend/tests/bug52041.phpt49
-rw-r--r--Zend/tests/bug52237.phpt1
-rw-r--r--Zend/tests/bug52614.phpt83
-rw-r--r--Zend/tests/bug52940.phpt23
-rw-r--r--Zend/tests/bug53347.phpt17
-rw-r--r--Zend/tests/bug53511.phpt33
-rw-r--r--Zend/tests/bug53748.phpt39
-rw-r--r--Zend/tests/bug54262.phpt2
-rw-r--r--Zend/tests/bug55086.phpt36
-rw-r--r--Zend/tests/bug55135.phpt38
-rw-r--r--Zend/tests/bug55137.phpt26
-rw-r--r--Zend/tests/bug55247.phpt33
-rw-r--r--Zend/tests/bug55305.phpt16
-rw-r--r--Zend/tests/bug55339.phpt31
-rw-r--r--Zend/tests/bug55445.phpt8
-rw-r--r--Zend/tests/bug55578.phpt20
-rw-r--r--Zend/tests/bug55705.phpt9
-rw-r--r--Zend/tests/bug55825.phpt17
-rw-r--r--Zend/tests/bug60139.phpt2
-rwxr-xr-xZend/tests/bug60169.phpt11
-rw-r--r--Zend/tests/bug60350.phpt11
-rw-r--r--Zend/tests/bug60362.phpt74
-rw-r--r--Zend/tests/bug60444.phpt18
-rw-r--r--Zend/tests/bug60536_001.phpt25
-rw-r--r--Zend/tests/bug60536_002.phpt40
-rw-r--r--Zend/tests/bug60536_003.phpt46
-rw-r--r--Zend/tests/bug60536_004.phpt37
-rw-r--r--Zend/tests/bug60536_005.phpt38
-rwxr-xr-xZend/tests/bug60573.phpt84
-rw-r--r--Zend/tests/bug60611.phpt27
-rw-r--r--Zend/tests/bug60613.phpt18
-rwxr-xr-xZend/tests/bug60978.phpt10
-rw-r--r--Zend/tests/bug61011.phpt35
-rw-r--r--Zend/tests/bug61225.phpt9
-rw-r--r--Zend/tests/callable_type_hint_001.phpt39
-rw-r--r--Zend/tests/callable_type_hint_002.phpt27
-rw-r--r--Zend/tests/callable_type_hint_003.phpt21
-rw-r--r--Zend/tests/cast_to_string.phptbin621 -> 721 bytes
-rw-r--r--Zend/tests/class_exists_003.phpt6
-rw-r--r--Zend/tests/closure_005.phpt74
-rw-r--r--Zend/tests/closure_007.phpt38
-rw-r--r--Zend/tests/closure_020.phpt6
-rw-r--r--Zend/tests/closure_024.phpt26
-rw-r--r--Zend/tests/closure_026.phpt11
-rwxr-xr-xZend/tests/closure_036.phpt33
-rwxr-xr-xZend/tests/closure_037.phpt47
-rw-r--r--Zend/tests/closure_038.phpt58
-rw-r--r--Zend/tests/closure_039.phpt58
-rw-r--r--Zend/tests/closure_040.phpt45
-rw-r--r--Zend/tests/closure_041.phpt106
-rw-r--r--Zend/tests/closure_042.phpt29
-rw-r--r--Zend/tests/closure_043.phpt86
-rw-r--r--Zend/tests/closure_044.phpt78
-rw-r--r--Zend/tests/closure_045.phpt19
-rw-r--r--Zend/tests/closure_046.phpt70
-rw-r--r--Zend/tests/concat_001.phpt20
-rwxr-xr-xZend/tests/constants_005.phpt3
-rw-r--r--Zend/tests/debug_backtrace_limit.phpt133
-rw-r--r--[-rwxr-xr-x]Zend/tests/debug_backtrace_options.phpt0
-rw-r--r--Zend/tests/debug_print_backtrace_limit.phpt31
-rw-r--r--Zend/tests/declare_001.phpt20
-rw-r--r--Zend/tests/declare_002.phpt31
-rw-r--r--Zend/tests/declare_003.phpt24
-rw-r--r--Zend/tests/declare_004.phpt27
-rw-r--r--Zend/tests/dereference_001.phpt51
-rw-r--r--Zend/tests/dereference_002.phpt79
-rw-r--r--Zend/tests/dereference_003.phpt46
-rw-r--r--Zend/tests/dereference_004.phpt27
-rw-r--r--Zend/tests/dereference_005.phpt38
-rw-r--r--Zend/tests/dereference_006.phpt30
-rw-r--r--Zend/tests/dereference_007.phpt37
-rw-r--r--Zend/tests/dereference_008.phpt33
-rw-r--r--Zend/tests/dereference_009.phpt26
-rw-r--r--Zend/tests/dereference_010.phpt27
-rw-r--r--Zend/tests/dereference_011.phpt45
-rw-r--r--Zend/tests/dereference_012.phpt56
-rw-r--r--Zend/tests/dereference_013.phpt38
-rw-r--r--Zend/tests/dereference_014.phpt34
-rw-r--r--Zend/tests/empty_str_offset.phpt89
-rw-r--r--Zend/tests/error_reporting01.phpt2
-rw-r--r--Zend/tests/error_reporting05.phpt2
-rw-r--r--Zend/tests/error_reporting06.phpt2
-rw-r--r--Zend/tests/error_reporting07.phpt2
-rw-r--r--Zend/tests/error_reporting10.phpt4
-rw-r--r--Zend/tests/fr47160.phpt150
-rw-r--r--Zend/tests/function_arguments_001.phpt2
-rw-r--r--Zend/tests/function_arguments_002.phpt2
-rw-r--r--Zend/tests/gc_022.phpt2
-rw-r--r--Zend/tests/indexing_001.phpt2
-rw-r--r--Zend/tests/indirect_call_array_001.phpt11
-rw-r--r--Zend/tests/indirect_call_array_002.phpt11
-rw-r--r--Zend/tests/indirect_call_array_003.phpt38
-rw-r--r--Zend/tests/indirect_call_array_004.phpt71
-rw-r--r--Zend/tests/indirect_method_call_001.phpt20
-rw-r--r--Zend/tests/indirect_method_call_002.phpt32
-rw-r--r--Zend/tests/indirect_method_call_003.phpt23
-rw-r--r--Zend/tests/indirect_method_call_004.phpt26
-rw-r--r--Zend/tests/indirect_method_call_005.phpt16
-rw-r--r--Zend/tests/indirect_property_access.phpt26
-rw-r--r--Zend/tests/indirect_reference_this.phpt2
-rw-r--r--Zend/tests/isset_003.phpt4
-rw-r--r--Zend/tests/isset_003_2_4.phpt42
-rw-r--r--Zend/tests/isset_str_offset.phpt89
-rw-r--r--Zend/tests/magic_by_ref_010.phpt30
-rw-r--r--Zend/tests/method_static_var.phpt30
-rwxr-xr-xZend/tests/multibyte/multibyte_encoding_001.phpt3
-rwxr-xr-xZend/tests/multibyte/multibyte_encoding_002.phpt3
-rwxr-xr-xZend/tests/multibyte/multibyte_encoding_003.phptbin449 -> 471 bytes
-rw-r--r--Zend/tests/multibyte/multibyte_encoding_004.phpt5
-rw-r--r--Zend/tests/multibyte/multibyte_encoding_005.phpt5
-rw-r--r--Zend/tests/multibyte/multibyte_encoding_006.phptbin599 -> 629 bytes
-rw-r--r--Zend/tests/nowdoc_013.phpt1
-rw-r--r--Zend/tests/nowdoc_014.phpt1
-rw-r--r--Zend/tests/ns_071.phpt2
-rw-r--r--Zend/tests/ns_086.phpt8
-rw-r--r--Zend/tests/objects_002.phpt2
-rw-r--r--Zend/tests/objects_003.phpt2
-rw-r--r--Zend/tests/objects_004.phpt2
-rw-r--r--Zend/tests/objects_005.phpt2
-rw-r--r--Zend/tests/objects_006.phpt2
-rw-r--r--Zend/tests/objects_007.phpt2
-rw-r--r--Zend/tests/objects_008.phpt2
-rw-r--r--Zend/tests/objects_009.phpt2
-rw-r--r--Zend/tests/offset_assign.phpt8
-rw-r--r--Zend/tests/offset_string.phpt24
-rw-r--r--Zend/tests/result_unused.phpt29
-rw-r--r--Zend/tests/str_offset_001.phpt51
-rw-r--r--Zend/tests/str_offset_002.phpt9
-rw-r--r--Zend/tests/trait_exists_001.phpt21
-rw-r--r--Zend/tests/trait_exists_002.phpt21
-rw-r--r--Zend/tests/trait_exists_003.phpt24
-rw-r--r--Zend/tests/traits/bug54441.phpt19
-rw-r--r--Zend/tests/traits/bug55137.phpt26
-rw-r--r--Zend/tests/traits/bug55214.phpt71
-rw-r--r--Zend/tests/traits/bug55355.phpt46
-rw-r--r--Zend/tests/traits/bug55372.phpt28
-rw-r--r--Zend/tests/traits/bug55424.phpt35
-rw-r--r--Zend/tests/traits/bug55524.phpt15
-rw-r--r--Zend/tests/traits/bug55554a.phpt34
-rw-r--r--Zend/tests/traits/bug55554b.phpt56
-rw-r--r--Zend/tests/traits/bug55554c.phpt46
-rw-r--r--Zend/tests/traits/bug55554d.phpt32
-rw-r--r--Zend/tests/traits/bug55554e.phpt30
-rw-r--r--Zend/tests/traits/bug55554f.phpt29
-rw-r--r--Zend/tests/traits/bug55554g.phpt29
-rw-r--r--Zend/tests/traits/bug60145.phpt17
-rw-r--r--Zend/tests/traits/bug60153.phpt19
-rw-r--r--Zend/tests/traits/bug60165a.phpt17
-rw-r--r--Zend/tests/traits/bug60165b.phpt17
-rw-r--r--Zend/tests/traits/bug60165c.phpt22
-rw-r--r--Zend/tests/traits/bug60165d.phpt21
-rw-r--r--Zend/tests/traits/bug60173.phpt12
-rw-r--r--Zend/tests/traits/bug60217a.phpt26
-rw-r--r--Zend/tests/traits/bug60217b.phpt26
-rw-r--r--Zend/tests/traits/bug60217c.phpt26
-rw-r--r--Zend/tests/traits/bug60369.phpt17
-rw-r--r--Zend/tests/traits/bug60717.phpt73
-rw-r--r--Zend/tests/traits/bug60809.phpt36
-rw-r--r--Zend/tests/traits/bug61052.phpt18
-rw-r--r--Zend/tests/traits/bugs/abstract-methods01.phpt19
-rw-r--r--Zend/tests/traits/bugs/abstract-methods02.phpt26
-rw-r--r--Zend/tests/traits/bugs/abstract-methods03.phpt22
-rw-r--r--Zend/tests/traits/bugs/abstract-methods04.phpt36
-rw-r--r--Zend/tests/traits/bugs/abstract-methods05.phpt25
-rw-r--r--Zend/tests/traits/bugs/abstract-methods06.phpt26
-rw-r--r--Zend/tests/traits/bugs/alias-semantics.phpt23
-rw-r--r--Zend/tests/traits/bugs/alias-semantics02.phpt25
-rw-r--r--Zend/tests/traits/bugs/alias01.phpt26
-rw-r--r--Zend/tests/traits/bugs/case-sensitive.phpt23
-rw-r--r--Zend/tests/traits/bugs/interfaces.phpt19
-rw-r--r--Zend/tests/traits/bugs/missing-trait.phpt15
-rw-r--r--Zend/tests/traits/bugs/overridding-conflicting-methods.phpt31
-rw-r--r--Zend/tests/traits/bugs/overridding-conflicting-property-initializer.phpt23
-rw-r--r--Zend/tests/traits/conflict001.phpt25
-rw-r--r--Zend/tests/traits/conflict002.phpt32
-rw-r--r--Zend/tests/traits/conflict003.phpt31
-rw-r--r--Zend/tests/traits/error_001.phpt28
-rw-r--r--Zend/tests/traits/error_002.phpt12
-rw-r--r--Zend/tests/traits/error_003.phpt15
-rw-r--r--Zend/tests/traits/error_004.phpt15
-rw-r--r--Zend/tests/traits/error_005.phpt15
-rw-r--r--Zend/tests/traits/error_006.phpt15
-rw-r--r--Zend/tests/traits/error_007.phpt13
-rw-r--r--Zend/tests/traits/error_008.phpt12
-rw-r--r--Zend/tests/traits/error_009.phpt12
-rw-r--r--Zend/tests/traits/error_010.phpt27
-rw-r--r--Zend/tests/traits/error_011.phpt26
-rw-r--r--Zend/tests/traits/error_012.phpt19
-rw-r--r--Zend/tests/traits/error_013.phpt19
-rw-r--r--Zend/tests/traits/error_014.phpt23
-rw-r--r--Zend/tests/traits/error_015.phpt26
-rw-r--r--Zend/tests/traits/error_016.phpt12
-rw-r--r--Zend/tests/traits/flattening001.phpt42
-rw-r--r--Zend/tests/traits/flattening002.phpt28
-rw-r--r--Zend/tests/traits/flattening003.phpt32
-rw-r--r--Zend/tests/traits/get_declared_traits_001.phpt19
-rw-r--r--Zend/tests/traits/get_declared_traits_002.phpt20
-rw-r--r--Zend/tests/traits/get_declared_traits_003.phpt25
-rw-r--r--Zend/tests/traits/inheritance001.phpt24
-rw-r--r--Zend/tests/traits/inheritance002.phpt27
-rw-r--r--Zend/tests/traits/inheritance003.phpt38
-rw-r--r--Zend/tests/traits/interface_001.phpt25
-rw-r--r--Zend/tests/traits/interface_002.phpt24
-rw-r--r--Zend/tests/traits/interface_003.phpt27
-rw-r--r--Zend/tests/traits/language001.phpt21
-rw-r--r--Zend/tests/traits/language002.phpt32
-rw-r--r--Zend/tests/traits/language003.phpt29
-rw-r--r--Zend/tests/traits/language004.phpt31
-rw-r--r--Zend/tests/traits/language005.phpt40
-rw-r--r--Zend/tests/traits/language006.phpt31
-rw-r--r--Zend/tests/traits/language007.phpt30
-rw-r--r--Zend/tests/traits/language008a.phpt23
-rw-r--r--Zend/tests/traits/language008b.phpt30
-rw-r--r--Zend/tests/traits/language009.phpt36
-rw-r--r--Zend/tests/traits/language010.phpt30
-rw-r--r--Zend/tests/traits/language011.phpt30
-rw-r--r--Zend/tests/traits/language012.phpt27
-rw-r--r--Zend/tests/traits/language013.phpt37
-rw-r--r--Zend/tests/traits/methods_001.phpt39
-rw-r--r--Zend/tests/traits/methods_002.phpt28
-rw-r--r--Zend/tests/traits/methods_003.phpt24
-rw-r--r--Zend/tests/traits/noctor001.phpt28
-rw-r--r--Zend/tests/traits/property001.phpt41
-rw-r--r--Zend/tests/traits/property002.phpt32
-rw-r--r--Zend/tests/traits/property003.phpt30
-rw-r--r--Zend/tests/traits/property004.phpt30
-rw-r--r--Zend/tests/traits/property005.phpt40
-rw-r--r--Zend/tests/traits/property006.phpt37
-rw-r--r--Zend/tests/traits/property007.phpt38
-rw-r--r--Zend/tests/traits/property008.phpt62
-rw-r--r--Zend/tests/traits/property009.phpt59
-rw-r--r--Zend/tests/traits/static_001.phpt22
-rw-r--r--Zend/tests/traits/static_002.phpt23
-rw-r--r--Zend/tests/traits/static_003.phpt27
-rw-r--r--Zend/tests/traits/static_004.phpt22
-rw-r--r--Zend/tests/traits/static_forward_static_call.phpt28
-rw-r--r--Zend/tests/traits/static_get_called_class.phpt24
-rw-r--r--Zend/tests/traits/trait_constant_001.phpt36
-rw-r--r--Zend/tests/traits/trait_constant_002.phpt27
-rw-r--r--Zend/tests/unset_cv05.phpt10
-rw-r--r--Zend/tests/unset_cv06.phpt17
-rw-r--r--Zend/tests/unset_cv07.phpt2
-rw-r--r--Zend/tests/unset_cv08.phpt2
-rw-r--r--Zend/zend.c178
-rw-r--r--Zend/zend.h171
-rw-r--r--Zend/zend_API.c598
-rw-r--r--Zend/zend_API.h180
-rw-r--r--Zend/zend_alloc.c206
-rw-r--r--Zend/zend_alloc.h34
-rw-r--r--Zend/zend_builtin_functions.c301
-rw-r--r--Zend/zend_builtin_functions.h2
-rw-r--r--Zend/zend_closures.c241
-rw-r--r--Zend/zend_closures.h3
-rw-r--r--Zend/zend_compile.c3696
-rw-r--r--Zend/zend_compile.h268
-rw-r--r--Zend/zend_constants.c143
-rw-r--r--Zend/zend_constants.h1
-rw-r--r--Zend/zend_dtrace.c108
-rw-r--r--Zend/zend_dtrace.d37
-rw-r--r--Zend/zend_dtrace.h48
-rw-r--r--Zend/zend_errors.h2
-rw-r--r--Zend/zend_exceptions.c28
-rw-r--r--Zend/zend_execute.c856
-rw-r--r--Zend/zend_execute.h103
-rw-r--r--Zend/zend_execute_API.c281
-rw-r--r--Zend/zend_extensions.h2
-rw-r--r--Zend/zend_fast_cache.h141
-rw-r--r--Zend/zend_float.c20
-rw-r--r--Zend/zend_gc.c185
-rw-r--r--Zend/zend_gc.h2
-rw-r--r--Zend/zend_globals.h47
-rw-r--r--Zend/zend_hash.c193
-rw-r--r--Zend/zend_hash.h15
-rw-r--r--Zend/zend_highlight.c23
-rw-r--r--Zend/zend_highlight.h1
-rw-r--r--Zend/zend_indent.c8
-rw-r--r--Zend/zend_ini.c10
-rw-r--r--Zend/zend_ini.h2
-rw-r--r--Zend/zend_ini_scanner.c2
-rw-r--r--Zend/zend_ini_scanner_defs.h2
-rwxr-xr-xZend/zend_interfaces.c2
-rwxr-xr-xZend/zend_interfaces.h2
-rwxr-xr-xZend/zend_iterators.c6
-rw-r--r--Zend/zend_language_parser.y483
-rw-r--r--Zend/zend_language_scanner.c5319
-rw-r--r--Zend/zend_language_scanner.h7
-rw-r--r--Zend/zend_language_scanner.l604
-rw-r--r--Zend/zend_language_scanner_defs.h2
-rw-r--r--Zend/zend_list.c17
-rw-r--r--Zend/zend_list.h14
-rw-r--r--Zend/zend_modules.h4
-rw-r--r--Zend/zend_multibyte.c1194
-rw-r--r--Zend/zend_multibyte.h78
-rw-r--r--Zend/zend_multiply.h12
-rw-r--r--Zend/zend_object_handlers.c535
-rw-r--r--Zend/zend_object_handlers.h30
-rw-r--r--Zend/zend_objects.c66
-rw-r--r--Zend/zend_objects_API.c15
-rw-r--r--Zend/zend_objects_API.h2
-rw-r--r--Zend/zend_opcode.c274
-rw-r--r--Zend/zend_operators.c103
-rw-r--r--Zend/zend_operators.h437
-rw-r--r--Zend/zend_ptr_stack.c5
-rw-r--r--Zend/zend_ptr_stack.h17
-rw-r--r--Zend/zend_signal.c414
-rw-r--r--Zend/zend_signal.h108
-rw-r--r--Zend/zend_stack.c12
-rw-r--r--Zend/zend_stream.c5
-rw-r--r--Zend/zend_stream.h2
-rw-r--r--Zend/zend_string.c233
-rw-r--r--Zend/zend_string.h71
-rw-r--r--Zend/zend_strtod.c67
-rw-r--r--Zend/zend_strtod.h7
-rw-r--r--Zend/zend_types.h2
-rw-r--r--Zend/zend_variables.c62
-rw-r--r--Zend/zend_variables.h16
-rw-r--r--Zend/zend_vm_def.h3284
-rw-r--r--Zend/zend_vm_execute.h27889
-rw-r--r--Zend/zend_vm_execute.skl19
-rw-r--r--Zend/zend_vm_gen.php214
-rw-r--r--Zend/zend_vm_opcodes.h6
-rw-r--r--acconfig.h.in1
-rw-r--r--acinclude.m4159
-rw-r--r--build/build.mk1
-rw-r--r--build/build2.mk8
-rwxr-xr-xbuild/buildcheck.sh25
-rwxr-xr-xbuildconf7
-rw-r--r--configure.in281
-rw-r--r--ext/bz2/bz2.c22
-rw-r--r--ext/calendar/tests/jdtomonthname.phpt4
-rw-r--r--ext/com_dotnet/com_com.c10
-rw-r--r--ext/com_dotnet/com_dotnet.c4
-rw-r--r--ext/com_dotnet/com_handlers.c27
-rw-r--r--ext/com_dotnet/com_misc.c2
-rw-r--r--ext/com_dotnet/com_olechar.c4
-rwxr-xr-xext/com_dotnet/com_persist.c46
-rw-r--r--ext/com_dotnet/com_saproxy.c14
-rw-r--r--ext/com_dotnet/com_typeinfo.c4
-rw-r--r--ext/com_dotnet/com_variant.c6
-rw-r--r--ext/com_dotnet/com_wrapper.c20
-rw-r--r--ext/com_dotnet/php_com_dotnet_internal.h3
-rw-r--r--ext/curl/interface.c85
-rw-r--r--ext/curl/streams.c4
-rw-r--r--ext/curl/tests/bug55767.phpt53
-rw-r--r--ext/curl/tests/curl_setopt_CURLOPT_FOLLOWLOCATION_open_basedir.phpt4
-rw-r--r--ext/curl/tests/curl_setopt_basic001.phpt35
-rw-r--r--ext/date/lib/parse_date.c2
-rw-r--r--ext/date/lib/parse_iso_intervals.c2
-rw-r--r--ext/date/php_date.c103
-rw-r--r--ext/date/php_date.h2
-rw-r--r--ext/date/tests/bug52062.phpt2
-rw-r--r--ext/date/tests/date-lenient-create.phpt149
-rw-r--r--ext/date/tests/date-lenient.phpt146
-rw-r--r--ext/date/tests/date_default_timezone_get-1.phpt4
-rw-r--r--ext/date/tests/date_default_timezone_get-2-win32.phpt20
-rw-r--r--ext/date/tests/date_default_timezone_get-2.phpt2
-rw-r--r--ext/date/tests/date_default_timezone_set-1.phpt4
-rw-r--r--ext/dba/config.m437
-rw-r--r--ext/dba/dba.c32
-rw-r--r--ext/dba/dba_db4.c2
-rw-r--r--ext/dba/dba_tcadb.c221
-rw-r--r--ext/dba/libflatfile/flatfile.c1
-rw-r--r--ext/dba/libinifile/inifile.c1
-rw-r--r--ext/dba/php_tcadb.h (renamed from sapi/cli/php_cli_readline.h)26
-rw-r--r--ext/dba/tests/dba_cdb_make.phpt3
-rw-r--r--ext/dba/tests/dba_tcadb.phpt50
-rw-r--r--ext/dom/attr.c2
-rw-r--r--ext/dom/document.c74
-rw-r--r--ext/dom/dom_iterators.c4
-rw-r--r--ext/dom/domimplementation.c7
-rw-r--r--ext/dom/element.c24
-rw-r--r--ext/dom/namednodemap.c12
-rw-r--r--ext/dom/node.c28
-rw-r--r--ext/dom/nodelist.c4
-rw-r--r--ext/dom/php_dom.c24
-rw-r--r--ext/dom/tests/DOMDocument_loadHTML_error1.phpt2
-rw-r--r--ext/dom/tests/DOMDocument_saveHTML_variant2.phpt26
-rw-r--r--ext/dom/tests/bug47430.phpt4
-rw-r--r--ext/dom/text.c2
-rw-r--r--ext/dom/xml_common.h8
-rw-r--r--ext/dom/xpath.c6
-rwxr-xr-xext/enchant/enchant.c21
-rw-r--r--ext/ereg/config.w322
-rw-r--r--ext/ereg/ereg.c76
-rw-r--r--ext/ereg/php_ereg.h16
-rw-r--r--ext/ereg/tests/ereg_replace_variation_001.phpt5
-rw-r--r--ext/ereg/tests/ereg_replace_variation_002.phpt5
-rw-r--r--ext/ereg/tests/ereg_replace_variation_003.phpt5
-rw-r--r--ext/ereg/tests/ereg_variation_001.phpt5
-rw-r--r--ext/ereg/tests/ereg_variation_002.phpt5
-rw-r--r--ext/ereg/tests/eregi_replace_variation_001.phpt5
-rw-r--r--ext/ereg/tests/eregi_replace_variation_002.phpt5
-rw-r--r--ext/ereg/tests/eregi_replace_variation_003.phpt5
-rw-r--r--ext/ereg/tests/eregi_variation_001.phpt5
-rw-r--r--ext/ereg/tests/eregi_variation_002.phpt5
-rw-r--r--ext/ereg/tests/split_variation_001.phpt5
-rw-r--r--ext/ereg/tests/split_variation_002.phpt5
-rw-r--r--ext/ereg/tests/split_variation_003.phpt5
-rw-r--r--ext/ereg/tests/spliti_variation_001.phpt5
-rw-r--r--ext/ereg/tests/spliti_variation_002.phpt5
-rw-r--r--ext/ereg/tests/spliti_variation_003.phpt5
-rw-r--r--ext/ereg/tests/sql_regcase_variation_001.phpt5
-rw-r--r--ext/exif/exif.c156
-rwxr-xr-xext/exif/tests/bug34704.phpt1
-rw-r--r--ext/exif/tests/exif002.phpt1
-rw-r--r--ext/exif/tests/exif006.phpt90
-rw-r--r--ext/fileinfo/fileinfo.c23
-rw-r--r--ext/fileinfo/libmagic/print.c3
-rw-r--r--ext/fileinfo/php_fileinfo.h2
-rw-r--r--ext/filter/filter.c23
-rw-r--r--ext/filter/sanitizing_filters.c15
-rw-r--r--ext/filter/tests/bug39763.phpt19
-rw-r--r--ext/filter/tests/bug42718-2.phpt3
-rw-r--r--ext/filter/tests/bug42718.phpt1
-rw-r--r--ext/ftp/ftp.c12
-rw-r--r--ext/ftp/php_ftp.c32
-rw-r--r--ext/gd/config.m450
-rw-r--r--ext/gd/config.w328
-rw-r--r--ext/gd/gd.c116
-rw-r--r--ext/gd/gd_ctx.c100
-rw-r--r--ext/gd/libgd/gd.h5
-rw-r--r--ext/gd/libgd/gd_io.h1
-rw-r--r--ext/gd/libgd/gd_webp.c201
-rw-r--r--ext/gd/libgd/webpimg.c900
-rw-r--r--ext/gd/libgd/webpimg.h181
-rw-r--r--ext/gd/php_gd.h15
-rw-r--r--ext/gmp/gmp.c8
-rw-r--r--ext/hash/config.m46
-rw-r--r--ext/hash/config.w324
-rw-r--r--ext/hash/hash.c23
-rw-r--r--ext/hash/hash_adler32.c11
-rw-r--r--ext/hash/hash_fnv.c229
-rw-r--r--ext/hash/hash_joaat.c99
-rw-r--r--ext/hash/hash_md.c4
-rw-r--r--ext/hash/hash_salsa.c224
-rw-r--r--ext/hash/hash_sha.c4
-rw-r--r--ext/hash/hash_tiger.c80
-rw-r--r--ext/hash/php_hash.h5
-rw-r--r--ext/hash/php_hash_fnv.h79
-rw-r--r--ext/hash/php_hash_joaat.h (renamed from main/safe_mode.h)38
-rw-r--r--ext/hash/tests/fnv132.phpt202
-rw-r--r--ext/hash/tests/fnv164.phpt202
-rw-r--r--ext/hash/tests/hash_algos.phpt92
-rw-r--r--ext/hash/tests/hash_copy_001.phpt156
-rw-r--r--ext/hash/tests/hash_file_basic1.phpt2
-rw-r--r--ext/hash/tests/hash_hmac_basic.phpt2
-rw-r--r--ext/hash/tests/hash_hmac_file_basic.phpt2
-rw-r--r--ext/hash/tests/joaat.phpt34
-rw-r--r--ext/hash/tests/mhash_001.phpt4
-rw-r--r--ext/hash/tests/mhash_003.phpt2
-rw-r--r--ext/hash/tests/mhash_004.phpt2
-rw-r--r--ext/hash/tests/tiger.phpt11
-rw-r--r--ext/iconv/iconv.c145
-rw-r--r--ext/iconv/tests/bug52211.phpt17
-rw-r--r--ext/iconv/tests/translit-utf8.phpt1
-rw-r--r--ext/imap/php_imap.c22
-rw-r--r--ext/interbase/ibase_query.c9
-rw-r--r--ext/interbase/interbase.rc81
-rwxr-xr-xext/intl/collator/collator_class.c2
-rwxr-xr-xext/intl/common/common_error.c5
-rwxr-xr-xext/intl/config.m418
-rwxr-xr-xext/intl/config.w3216
-rwxr-xr-xext/intl/dateformat/dateformat_class.c2
-rwxr-xr-xext/intl/formatter/formatter_class.c2
-rwxr-xr-xext/intl/grapheme/grapheme_string.c14
-rw-r--r--ext/intl/idn/idn.c238
-rwxr-xr-xext/intl/locale/locale_class.c2
-rwxr-xr-xext/intl/msgformat/msgformat_class.c2
-rwxr-xr-xext/intl/normalizer/normalizer_class.c2
-rwxr-xr-xext/intl/php_intl.c66
-rw-r--r--ext/intl/resourcebundle/resourcebundle.c2
-rw-r--r--ext/intl/resourcebundle/resourcebundle_class.c2
-rwxr-xr-xext/intl/spoofchecker/spoofchecker.c60
-rwxr-xr-xext/intl/spoofchecker/spoofchecker.h24
-rwxr-xr-xext/intl/spoofchecker/spoofchecker_class.c209
-rwxr-xr-xext/intl/spoofchecker/spoofchecker_class.h70
-rwxr-xr-xext/intl/spoofchecker/spoofchecker_create.c59
-rwxr-xr-xext/intl/spoofchecker/spoofchecker_create.h24
-rwxr-xr-xext/intl/spoofchecker/spoofchecker_main.c142
-rwxr-xr-xext/intl/spoofchecker/spoofchecker_main.h27
-rw-r--r--ext/intl/tests/bug55562.phpt13
-rw-r--r--[-rwxr-xr-x]ext/intl/tests/dateformat_clone.phpt0
-rw-r--r--[-rwxr-xr-x]ext/intl/tests/formatter_clone.phpt0
-rw-r--r--ext/intl/tests/idn_uts46_basic.phpt53
-rw-r--r--ext/intl/tests/idn_uts46_errors.phpt89
-rwxr-xr-xext/intl/tests/locale_accept.phpt2
-rw-r--r--[-rwxr-xr-x]ext/intl/tests/msgfmt_clone.phpt0
-rwxr-xr-xext/intl/tests/spoofchecker_001.phpt23
-rwxr-xr-xext/intl/tests/spoofchecker_002.phpt20
-rwxr-xr-xext/intl/tests/spoofchecker_003.phpt25
-rwxr-xr-xext/intl/tests/spoofchecker_004.phpt28
-rw-r--r--ext/intl/tests/transliterator_clone.phpt21
-rw-r--r--ext/intl/tests/transliterator_create_basic.phpt20
-rw-r--r--ext/intl/tests/transliterator_create_error.phpt21
-rw-r--r--ext/intl/tests/transliterator_create_from_rule_basic.phpt28
-rw-r--r--ext/intl/tests/transliterator_create_from_rule_error.phpt53
-rw-r--r--ext/intl/tests/transliterator_create_inverse_basic.phpt32
-rw-r--r--ext/intl/tests/transliterator_create_inverse_error.phpt21
-rw-r--r--ext/intl/tests/transliterator_get_error_code_basic.phpt25
-rw-r--r--ext/intl/tests/transliterator_get_error_code_error.phpt24
-rw-r--r--ext/intl/tests/transliterator_get_error_message_basic.phpt25
-rw-r--r--ext/intl/tests/transliterator_get_error_message_error.phpt24
-rw-r--r--ext/intl/tests/transliterator_list_ids_basic.phpt16
-rw-r--r--ext/intl/tests/transliterator_list_ids_error.phpt18
-rw-r--r--ext/intl/tests/transliterator_property_id.phpt21
-rw-r--r--ext/intl/tests/transliterator_transliterate_basic.phpt20
-rw-r--r--ext/intl/tests/transliterator_transliterate_error.phpt60
-rw-r--r--ext/intl/tests/transliterator_transliterate_variant1.phpt37
-rw-r--r--ext/intl/transliterator/transliterator.c138
-rw-r--r--ext/intl/transliterator/transliterator.h29
-rw-r--r--ext/intl/transliterator/transliterator_class.c434
-rw-r--r--ext/intl/transliterator/transliterator_class.h65
-rw-r--r--ext/intl/transliterator/transliterator_methods.c542
-rw-r--r--ext/intl/transliterator/transliterator_methods.h38
-rw-r--r--ext/json/JSON_parser.c29
-rw-r--r--ext/json/JSON_parser.h9
-rw-r--r--ext/json/config.w321
-rw-r--r--ext/json/json.c162
-rw-r--r--ext/json/php_json.h24
-rw-r--r--ext/json/tests/008.phpt17
-rw-r--r--ext/json/tests/bug53946.phpt20
-rw-r--r--ext/json/tests/json_decode_error.phpt4
-rw-r--r--ext/json/tests/json_encode_basic.phpt2
-rw-r--r--ext/json/tests/json_encode_numeric.phpt26
-rw-r--r--ext/json/tests/json_encode_pretty_print.phpt40
-rw-r--r--ext/json/tests/json_encode_unescaped_slashes.phpt12
-rw-r--r--ext/json/tests/serialize.phpt80
-rw-r--r--ext/json/utf8_to_utf16.c15
-rw-r--r--ext/json/utf8_to_utf16.h2
-rw-r--r--ext/ldap/config.w3211
-rw-r--r--ext/ldap/ldap.c208
-rw-r--r--ext/ldap/tests/ldap_control_paged_results_variation1.phpt56
-rw-r--r--ext/ldap/tests/ldap_control_paged_results_variation2.phpt72
-rw-r--r--ext/ldap/tests/ldap_control_paged_results_variation3.phpt100
-rw-r--r--ext/libxml/libxml.c262
-rw-r--r--ext/libxml/php_libxml.h4
-rw-r--r--ext/libxml/tests/libxml_set_external_entity_loader_basic.phpt48
-rw-r--r--ext/libxml/tests/libxml_set_external_entity_loader_error1.phpt39
-rw-r--r--ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt72
-rw-r--r--ext/libxml/tests/libxml_set_external_entity_loader_variation2.phpt45
-rw-r--r--ext/mbstring/config.m48
-rw-r--r--ext/mbstring/config.w3210
-rw-r--r--ext/mbstring/libmbfl/NEWS30
-rw-r--r--ext/mbstring/libmbfl/filters/Makefile.am30
-rw-r--r--ext/mbstring/libmbfl/filters/emoji2uni.h1227
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_ascii.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_base64.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_big5.c133
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_big5.h5
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c23
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp850.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp866.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp932.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp936.c146
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c10
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c6
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.c78
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.h43
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_gb18030.c473
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_gb18030.h43
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_htmlent.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_hz.c12
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c6
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_2004.c168
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_2004.h44
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c433
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.h43
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_jis.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_qprint.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis.c11
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c725
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.h49
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c700
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.h44
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c927
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h70
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_open.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_open.h1
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_uhc.c1
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf32.c11
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf7.c2
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf8.c219
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c362
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.h55
-rwxr-xr-xext/mbstring/libmbfl/filters/mk_emoji_tbl.pl425
-rw-r--r--ext/mbstring/libmbfl/filters/sjis_mac2uni.h349
-rw-r--r--ext/mbstring/libmbfl/filters/unicode_table_cp932_ext.h35
-rw-r--r--ext/mbstring/libmbfl/filters/unicode_table_cp936.h283
-rw-r--r--ext/mbstring/libmbfl/filters/unicode_table_gb18030.h233
-rw-r--r--ext/mbstring/libmbfl/filters/unicode_table_jis.h59
-rw-r--r--ext/mbstring/libmbfl/filters/unicode_table_jis2004.h5067
-rw-r--r--ext/mbstring/libmbfl/filters/unicode_table_uhc.h90
-rw-r--r--ext/mbstring/libmbfl/mbfl/eaw_table.h32
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.c364
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.h16
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_consts.h5
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_convert.c42
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_encoding.c22
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_encoding.h14
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_ident.c48
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_ident.h2
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c4
-rw-r--r--ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk7
-rw-r--r--ext/mbstring/libmbfl/tests/emoji.c119
-rw-r--r--ext/mbstring/mb_gpc.c70
-rw-r--r--ext/mbstring/mb_gpc.h9
-rw-r--r--ext/mbstring/mbstring.c1419
-rw-r--r--ext/mbstring/mbstring.h46
-rw-r--r--ext/mbstring/php_mbregex.c123
-rw-r--r--ext/mbstring/php_mbregex.h2
-rw-r--r--ext/mbstring/tests/bug20087.phpt2
-rw-r--r--ext/mbstring/tests/bug28220.phpt2
-rw-r--r--ext/mbstring/tests/bug40685.phpt7
-rw-r--r--ext/mbstring/tests/bug43301.phpt2
-rw-r--r--ext/mbstring/tests/bug49536.phpt2
-rw-r--r--ext/mbstring/tests/bug60306.phpt11
-rw-r--r--ext/mbstring/tests/htmlent.phpt1
-rw-r--r--ext/mbstring/tests/illformed_utf_sequences.phpt241
-rw-r--r--ext/mbstring/tests/mb_encoding_aliases.phpt18
-rw-r--r--ext/mbstring/tests/mb_ereg_replace_callback.phpt15
-rw-r--r--ext/mbstring/tests/mb_internal_encoding_variation2.phpt4
-rw-r--r--ext/mbstring/tests/mb_parse_str.phpt3
-rw-r--r--ext/mbstring/tests/mb_parse_str02.phpt3
-rw-r--r--ext/mbstring/tests/mb_str_functions_opt-parameter.phpt32
-rw-r--r--ext/mbstring/tests/pictogram1.phpt172
-rw-r--r--ext/mbstring/tests/zend_multibyte-10.phpt1
-rw-r--r--ext/mcrypt/mcrypt.c2
-rw-r--r--ext/mcrypt/tests/blowfish.phpt10
-rw-r--r--ext/mssql/php_mssql.c20
-rw-r--r--ext/mysql/config.m428
-rw-r--r--ext/mysql/php_mysql.c52
-rw-r--r--ext/mysql/tests/bug55473.phpt10
-rwxr-xr-xext/mysql/tests/mysql_pconn_kill.phpt2
-rw-r--r--ext/mysql/tests/mysql_phpinfo.phpt2
-rw-r--r--ext/mysql/tests/mysql_query_load_data_openbasedir.phpt10
-rw-r--r--ext/mysqli/config.m416
-rw-r--r--ext/mysqli/config.w321
-rw-r--r--ext/mysqli/mysqli.c215
-rw-r--r--ext/mysqli/mysqli_api.c27
-rw-r--r--ext/mysqli/mysqli_driver.c16
-rw-r--r--ext/mysqli/mysqli_fe.c13
-rw-r--r--ext/mysqli/mysqli_fe.h4
-rw-r--r--ext/mysqli/mysqli_libmysql.h26
-rw-r--r--ext/mysqli/mysqli_mysqlnd.h4
-rw-r--r--ext/mysqli/mysqli_nonapi.c112
-rw-r--r--ext/mysqli/mysqli_priv.h24
-rw-r--r--ext/mysqli/mysqli_prop.c177
-rw-r--r--ext/mysqli/mysqli_report.h2
-rw-r--r--ext/mysqli/mysqli_result_iterator.c182
-rw-r--r--ext/mysqli/mysqli_warning.c49
-rw-r--r--ext/mysqli/php_mysqli_structs.h50
-rw-r--r--ext/mysqli/tests/057.phpt3
-rw-r--r--ext/mysqli/tests/bug34810.phpt11
-rw-r--r--ext/mysqli/tests/bug55582.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_auth_pam.phpt98
-rw-r--r--ext/mysqli/tests/mysqli_class_mysqli_properties_no_conn.phpt49
-rw-r--r--ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt25
-rw-r--r--ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt18
-rw-r--r--ext/mysqli/tests/mysqli_class_mysqli_stmt_interface.phpt8
-rw-r--r--ext/mysqli/tests/mysqli_fetch_array_large.phpt4
-rw-r--r--ext/mysqli/tests/mysqli_fetch_object.phpt29
-rw-r--r--ext/mysqli/tests/mysqli_fetch_object_oo.phpt30
-rw-r--r--ext/mysqli/tests/mysqli_free_result.phpt3
-rw-r--r--ext/mysqli/tests/mysqli_get_cache_stats_off.phpt56
-rw-r--r--ext/mysqli/tests/mysqli_kill.phpt26
-rw-r--r--ext/mysqli/tests/mysqli_magic_quotes.phpt128
-rw-r--r--ext/mysqli/tests/mysqli_options_openbasedir.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_phpinfo.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_query_iterators.phpt201
-rw-r--r--ext/mysqli/tests/mysqli_real_connect.phpt48
-rw-r--r--ext/mysqli/tests/mysqli_real_connect_pconn.phpt2
-rw-r--r--ext/mysqlnd/CREDITS2
-rw-r--r--ext/mysqlnd/config.w329
-rw-r--r--ext/mysqlnd/config9.m47
-rw-r--r--ext/mysqlnd/mysqlnd.c2143
-rw-r--r--ext/mysqlnd/mysqlnd.h150
-rw-r--r--ext/mysqlnd/mysqlnd_alloc.c726
-rw-r--r--ext/mysqlnd/mysqlnd_alloc.h100
-rw-r--r--ext/mysqlnd/mysqlnd_auth.c477
-rw-r--r--ext/mysqlnd/mysqlnd_bt.c484
-rw-r--r--ext/mysqlnd/mysqlnd_charset.c45
-rw-r--r--ext/mysqlnd/mysqlnd_charset.h14
-rw-r--r--ext/mysqlnd/mysqlnd_debug.c1117
-rw-r--r--ext/mysqlnd/mysqlnd_debug.h75
-rw-r--r--ext/mysqlnd/mysqlnd_driver.c304
-rw-r--r--ext/mysqlnd/mysqlnd_enum_n_def.h15
-rw-r--r--ext/mysqlnd/mysqlnd_ext_plugin.c226
-rw-r--r--ext/mysqlnd/mysqlnd_ext_plugin.h72
-rw-r--r--ext/mysqlnd/mysqlnd_loaddata.c77
-rw-r--r--ext/mysqlnd/mysqlnd_net.c419
-rw-r--r--ext/mysqlnd/mysqlnd_net.h10
-rw-r--r--ext/mysqlnd/mysqlnd_plugin.c192
-rw-r--r--ext/mysqlnd/mysqlnd_priv.h99
-rw-r--r--ext/mysqlnd/mysqlnd_ps.c442
-rw-r--r--ext/mysqlnd/mysqlnd_ps_codec.c43
-rw-r--r--ext/mysqlnd/mysqlnd_result.c221
-rw-r--r--ext/mysqlnd/mysqlnd_result.h7
-rw-r--r--ext/mysqlnd/mysqlnd_result_meta.c10
-rw-r--r--ext/mysqlnd/mysqlnd_result_meta.h4
-rw-r--r--ext/mysqlnd/mysqlnd_reverse_api.c100
-rw-r--r--ext/mysqlnd/mysqlnd_reverse_api.h50
-rw-r--r--ext/mysqlnd/mysqlnd_statistics.c323
-rw-r--r--ext/mysqlnd/mysqlnd_statistics.h6
-rw-r--r--ext/mysqlnd/mysqlnd_structs.h491
-rw-r--r--ext/mysqlnd/mysqlnd_wireprotocol.c612
-rw-r--r--ext/mysqlnd/mysqlnd_wireprotocol.h82
-rw-r--r--ext/mysqlnd/php_mysqlnd.c112
-rw-r--r--ext/mysqlnd/php_mysqlnd.h6
-rw-r--r--ext/oci8/tests/null_byte_1.phpt20
-rw-r--r--ext/oci8/tests/oci8safemode.phpt23
-rw-r--r--ext/odbc/birdstep.c6
-rw-r--r--ext/odbc/php_odbc.c12
-rw-r--r--ext/openssl/openssl.c483
-rw-r--r--ext/openssl/php_openssl.h3
-rw-r--r--ext/openssl/tests/004.phpt2
-rw-r--r--ext/openssl/tests/011.phpt15
-rw-r--r--ext/openssl/tests/bug54060.phpt2
-rw-r--r--ext/openssl/tests/bug54061.phpt4
-rw-r--r--ext/openssl/tests/bug55646.phpt38
-rw-r--r--ext/openssl/tests/openssl_decrypt_error.phpt2
-rw-r--r--ext/openssl/xp_ssl.c10
-rwxr-xr-xext/pcntl/pcntl.c8
-rw-r--r--ext/pcntl/php_signal.c15
-rw-r--r--ext/pcntl/tests/pcntl_signal.phpt6
-rw-r--r--ext/pcre/php_pcre.c12
-rw-r--r--ext/pcre/tests/002.phpt2
-rw-r--r--ext/pcre/tests/bug33200.phpt13
-rw-r--r--ext/pcre/tests/preg_match_all_basic.phpt12
-rw-r--r--ext/pcre/tests/preg_match_all_error.phpt7
-rwxr-xr-xext/pdo/pdo.c2
-rwxr-xr-xext/pdo/pdo_dbh.c80
-rwxr-xr-xext/pdo/pdo_stmt.c121
-rwxr-xr-xext/pdo/php_pdo_driver.h11
-rw-r--r--ext/pdo/tests/bug61292.phpt36
-rw-r--r--ext/pdo/tests/pdo_test.inc3
-rw-r--r--ext/pdo_dblib/config.m410
-rw-r--r--ext/pdo_dblib/db.php31
-rw-r--r--ext/pdo_dblib/dblib_driver.c94
-rw-r--r--ext/pdo_dblib/dblib_stmt.c379
-rw-r--r--ext/pdo_dblib/php_pdo_dblib_int.h21
-rw-r--r--ext/pdo_dblib/tests/bug_38955.phpt57
-rw-r--r--ext/pdo_dblib/tests/bug_45876.phpt35
-rw-r--r--ext/pdo_dblib/tests/bug_47588.phpt45
-rw-r--r--ext/pdo_dblib/tests/bug_50755.phpt29
-rw-r--r--ext/pdo_dblib/tests/config.inc26
-rw-r--r--ext/pdo_firebird/EXPERIMENTAL0
-rw-r--r--ext/pdo_firebird/config.m42
-rwxr-xr-xext/pdo_mysql/config.m458
-rwxr-xr-xext/pdo_mysql/mysql_driver.c47
-rwxr-xr-xext/pdo_mysql/mysql_statement.c43
-rwxr-xr-xext/pdo_mysql/pdo_mysql.c29
-rwxr-xr-xext/pdo_mysql/php_pdo_mysql_int.h2
-rw-r--r--ext/pdo_mysql/tests/common.phpt2
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct.phpt2
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_exec_load_data.phpt4
-rwxr-xr-xext/pdo_oci/config.m410
-rwxr-xr-xext/pdo_oci/oci_driver.c4
-rwxr-xr-xext/pdo_odbc/config.m410
-rwxr-xr-xext/pdo_odbc/pdo_odbc.c4
-rw-r--r--ext/pdo_pgsql/config.m410
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c14
-rw-r--r--ext/pdo_pgsql/tests/is_in_transaction.phpt66
-rw-r--r--ext/pdo_sqlite/config.m412
-rw-r--r--ext/pdo_sqlite/sqlite_driver.c9
-rw-r--r--ext/pdo_sqlite/tests/bug60104.phpt21
-rw-r--r--ext/pgsql/pgsql.c53
-rw-r--r--ext/phar/func_interceptors.c30
-rw-r--r--ext/phar/phar.c50
-rw-r--r--ext/phar/phar_internal.h6
-rw-r--r--ext/phar/phar_object.c22
-rw-r--r--ext/phar/phar_path_check.c2
-rw-r--r--ext/phar/stream.c2
-rw-r--r--ext/phar/tests/fatal_error_webphar.phpt2
-rw-r--r--ext/phar/tests/fgc_edgecases.phpt26
-rw-r--r--ext/phar/tests/files/stuboflength1041.phar.inc21
-rw-r--r--ext/phar/tests/fopen_edgecases2.phpt2
-rw-r--r--ext/phar/tests/opendir_edgecases.phpt4
-rw-r--r--ext/phar/tests/phar_gobyebye.phpt2
-rw-r--r--ext/phar/tests/phar_mount.phpt2
-rw-r--r--ext/phar/tests/phpinfo_003.phpt2
-rw-r--r--ext/phar/tests/readfile_edgecases.phpt4
-rw-r--r--ext/phar/tests/zip/notphar.phpt1
-rw-r--r--ext/phar/util.c9
-rw-r--r--ext/posix/posix.c27
-rw-r--r--ext/posix/tests/posix_access.phpt5
-rw-r--r--ext/posix/tests/posix_access_error_modes.phpt7
-rw-r--r--ext/posix/tests/posix_access_error_wrongparams.phpt5
-rw-r--r--ext/posix/tests/posix_access_safemode.phpt5
-rw-r--r--ext/posix/tests/posix_getgrgid_variation.phpt10
-rw-r--r--ext/posix/tests/posix_getpgid_variation.phpt10
-rw-r--r--ext/posix/tests/posix_getpwuid_variation.phpt10
-rw-r--r--ext/posix/tests/posix_kill_variation1.phpt10
-rw-r--r--ext/posix/tests/posix_kill_variation2.phpt10
-rw-r--r--ext/posix/tests/posix_mkfifo_safemode.phpt5
-rw-r--r--ext/posix/tests/posix_strerror_variation1.phpt10
-rw-r--r--ext/posix/tests/posix_times_basic.phpt10
-rw-r--r--ext/pspell/pspell.c40
-rw-r--r--ext/readline/config.m423
-rw-r--r--ext/readline/readline.c30
-rw-r--r--ext/readline/readline_cli.c (renamed from sapi/cli/php_cli_readline.c)345
-rw-r--r--ext/readline/readline_cli.h43
-rw-r--r--ext/reflection/php_reflection.c1160
-rw-r--r--ext/reflection/php_reflection.h1
-rw-r--r--ext/reflection/tests/ReflectionClass_getStaticPropertyValue_001.phpt2
-rw-r--r--ext/reflection/tests/ReflectionClass_getStaticPropertyValue_001_2_4.phpt61
-rw-r--r--ext/reflection/tests/ReflectionClass_isCloneable_001.phpt71
-rw-r--r--ext/reflection/tests/ReflectionClass_isCloneable_002.phpt25
-rw-r--r--ext/reflection/tests/ReflectionClass_newInstanceArgs_002.phpt2
-rw-r--r--ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt33
-rw-r--r--ext/reflection/tests/ReflectionClass_setStaticPropertyValue_001.phpt2
-rw-r--r--ext/reflection/tests/ReflectionClass_setStaticPropertyValue_001_2_4.phpt61
-rw-r--r--ext/reflection/tests/ReflectionClass_toString_001.phpt38
-rw-r--r--ext/reflection/tests/ReflectionExtension_getClasses_basic.phpt7
-rw-r--r--ext/reflection/tests/ReflectionExtension_isPersistant.phpt11
-rw-r--r--ext/reflection/tests/ReflectionExtension_isTemporary.phpt11
-rw-r--r--ext/reflection/tests/ReflectionFunction_getClosureScopeClass.phpt31
-rwxr-xr-xext/reflection/tests/ReflectionFunction_getClosureThis.phpt17
-rw-r--r--ext/reflection/tests/ReflectionFunction_getClosure_basic.phpt37
-rw-r--r--ext/reflection/tests/ReflectionFunction_getClosure_error.phpt27
-rwxr-xr-xext/reflection/tests/ReflectionMethod_getClosureThis.phpt53
-rw-r--r--ext/reflection/tests/ReflectionMethod_getClosure_basic.phpt55
-rw-r--r--ext/reflection/tests/ReflectionMethod_getClosure_error.phpt73
-rw-r--r--ext/reflection/tests/ReflectionMethod_getModifiers_basic.phpt82
-rw-r--r--ext/reflection/tests/ReflectionMethod_invokeArgs_error2.phpt2
-rw-r--r--ext/reflection/tests/ReflectionParameter_canBePassedByValue.phpt84
-rw-r--r--ext/reflection/tests/bug40431.phpt4
-rw-r--r--ext/reflection/tests/bug60357.phpt10
-rwxr-xr-xext/reflection/tests/closures_003_v1.phpt25
-rw-r--r--ext/reflection/tests/closures_004.phpt43
-rw-r--r--ext/reflection/tests/traits001.phpt70
-rw-r--r--ext/reflection/tests/traits002.phpt54
-rw-r--r--ext/reflection/tests/traits003.phpt30
-rw-r--r--ext/reflection/tests/traits004.phpt58
-rw-r--r--ext/reflection/tests/traits005.phpt41
-rw-r--r--ext/session/config.m42
-rw-r--r--ext/session/config.w322
-rw-r--r--ext/session/mod_files.c18
-rw-r--r--ext/session/mod_user.c29
-rw-r--r--ext/session/mod_user_class.c144
-rw-r--r--ext/session/package.xml1
-rw-r--r--ext/session/php_session.h46
-rw-r--r--ext/session/session.c849
-rw-r--r--ext/session/tests/001.phpt14
-rw-r--r--ext/session/tests/003.phpt10
-rw-r--r--ext/session/tests/004.phpt16
-rw-r--r--ext/session/tests/005.phpt41
-rw-r--r--ext/session/tests/006.phpt18
-rw-r--r--ext/session/tests/007.phpt67
-rw-r--r--ext/session/tests/008-php4.2.3.phpt78
-rw-r--r--ext/session/tests/009.phpt25
-rw-r--r--ext/session/tests/010.phpt3
-rw-r--r--ext/session/tests/011.phpt3
-rw-r--r--ext/session/tests/012.phpt10
-rw-r--r--ext/session/tests/013.phpt4
-rw-r--r--ext/session/tests/014.phpt4
-rw-r--r--ext/session/tests/019.phpt16
-rw-r--r--ext/session/tests/bug24592.phpt1
-rw-r--r--ext/session/tests/bug26862.phpt1
-rw-r--r--ext/session/tests/bug55688.phpt15
-rw-r--r--ext/session/tests/rfc1867.phpt129
-rw-r--r--ext/session/tests/rfc1867_cleanup.phpt83
-rw-r--r--ext/session/tests/rfc1867_disabled.phpt76
-rw-r--r--ext/session/tests/rfc1867_disabled_2.phpt76
-rw-r--r--ext/session/tests/rfc1867_inter.phpt133
-rw-r--r--ext/session/tests/rfc1867_invalid_settings.phpt16
-rw-r--r--ext/session/tests/rfc1867_invalid_settings_2.phpt16
-rw-r--r--ext/session/tests/rfc1867_no_name.phpt76
-rw-r--r--ext/session/tests/rfc1867_sid_cookie.phpt128
-rw-r--r--ext/session/tests/rfc1867_sid_get.phpt126
-rw-r--r--ext/session/tests/rfc1867_sid_get_2.phpt128
-rw-r--r--ext/session/tests/rfc1867_sid_invalid.phpt79
-rw-r--r--ext/session/tests/rfc1867_sid_only_cookie.phpt128
-rw-r--r--ext/session/tests/rfc1867_sid_only_cookie_2.phpt80
-rw-r--r--ext/session/tests/rfc1867_sid_post.phpt124
-rw-r--r--ext/session/tests/session_encode_basic.phpt4
-rw-r--r--ext/session/tests/session_id_variation2.phpt2
-rw-r--r--ext/session/tests/session_is_registered_basic.phpt318
-rw-r--r--ext/session/tests/session_is_registered_variation1.phpt109
-rw-r--r--ext/session/tests/session_is_registered_variation2.phpt75
-rw-r--r--ext/session/tests/session_is_registered_variation3.phpt72
-rw-r--r--ext/session/tests/session_register_basic.phpt364
-rw-r--r--ext/session/tests/session_register_variation1.phpt159
-rw-r--r--ext/session/tests/session_register_variation2.phpt43
-rw-r--r--ext/session/tests/session_register_variation3.phpt46
-rw-r--r--ext/session/tests/session_register_variation4.phpt47
-rw-r--r--ext/session/tests/session_save_path_variation5.phpt3
-rw-r--r--ext/session/tests/session_set_save_handler_class_001.phpt68
-rw-r--r--ext/session/tests/session_set_save_handler_class_002.phpt113
-rw-r--r--ext/session/tests/session_set_save_handler_class_003.phpt78
-rw-r--r--ext/session/tests/session_set_save_handler_class_004.phpt48
-rw-r--r--ext/session/tests/session_set_save_handler_class_005.phpt54
-rw-r--r--ext/session/tests/session_set_save_handler_class_006.phpt54
-rw-r--r--ext/session/tests/session_set_save_handler_class_007.phpt74
-rw-r--r--ext/session/tests/session_set_save_handler_class_008.phpt65
-rw-r--r--ext/session/tests/session_set_save_handler_class_009.phpt62
-rw-r--r--ext/session/tests/session_set_save_handler_class_010.phpt63
-rw-r--r--ext/session/tests/session_set_save_handler_class_011.phpt66
-rw-r--r--ext/session/tests/session_set_save_handler_class_012.phpt59
-rw-r--r--ext/session/tests/session_set_save_handler_class_013.phpt56
-rw-r--r--ext/session/tests/session_set_save_handler_class_014.phpt30
-rw-r--r--ext/session/tests/session_set_save_handler_class_015.phpt24
-rw-r--r--ext/session/tests/session_set_save_handler_iface_001.phpt113
-rw-r--r--ext/session/tests/session_set_save_handler_iface_002.phpt90
-rw-r--r--ext/session/tests/session_status.phpt24
-rw-r--r--ext/session/tests/session_status_disabled.phpt17
-rw-r--r--ext/session/tests/session_unregister_basic.phpt225
-rw-r--r--ext/session/tests/session_unregister_variation1.phpt159
-rw-r--r--ext/session/tests/session_unregister_variation2.phpt47
-rw-r--r--ext/session/tests/session_unregister_variation3.phpt48
-rw-r--r--ext/session/tests/sessionhandler_open_001.phpt19
-rw-r--r--ext/shmop/shmop.c2
-rw-r--r--ext/simplexml/simplexml.c50
-rwxr-xr-xext/simplexml/tests/034.phpt6
-rw-r--r--ext/simplexml/tests/bug51615.phpt4
-rw-r--r--ext/snmp/CREDITS2
-rw-r--r--ext/snmp/config.m4174
-rw-r--r--ext/snmp/config.w323
-rw-r--r--ext/snmp/php_snmp.h54
-rw-r--r--ext/snmp/snmp.c2590
-rw-r--r--ext/snmp/tests/README46
-rw-r--r--ext/snmp/tests/bug60749.phpt28
-rw-r--r--ext/snmp/tests/clean.inc4
-rw-r--r--ext/snmp/tests/generic_timeout_error.phpt27
-rw-r--r--ext/snmp/tests/ipv6.phpt25
-rw-r--r--ext/snmp/tests/skipif.inc13
-rw-r--r--ext/snmp/tests/snmp-object-errno-errstr.phpt147
-rw-r--r--ext/snmp/tests/snmp-object-error.phpt122
-rw-r--r--ext/snmp/tests/snmp-object-properties.phpt208
-rw-r--r--ext/snmp/tests/snmp-object-setSecurity_error.phpt66
-rw-r--r--ext/snmp/tests/snmp-object.phpt234
-rw-r--r--ext/snmp/tests/snmp2_get.phpt104
-rw-r--r--ext/snmp/tests/snmp2_getnext.phpt39
-rw-r--r--ext/snmp/tests/snmp2_real_walk.phpt86
-rw-r--r--ext/snmp/tests/snmp2_set-nomib.phpt59
-rw-r--r--ext/snmp/tests/snmp2_set.phpt248
-rw-r--r--ext/snmp/tests/snmp2_walk.phpt99
-rw-r--r--ext/snmp/tests/snmp3-error.phpt76
-rw-r--r--ext/snmp/tests/snmp3.phpt127
-rw-r--r--ext/snmp/tests/snmp_get_quick_print.phpt41
-rw-r--r--ext/snmp/tests/snmp_get_valueretrieval.phpt53
-rw-r--r--ext/snmp/tests/snmp_getvalue.phpt83
-rw-r--r--ext/snmp/tests/snmp_include.inc31
-rw-r--r--ext/snmp/tests/snmp_read_mib.phpt34
-rw-r--r--ext/snmp/tests/snmp_set_enum_print.phpt28
-rw-r--r--ext/snmp/tests/snmp_set_oid_output_format.phpt32
-rw-r--r--ext/snmp/tests/snmpd.conf25
-rw-r--r--ext/snmp/tests/snmpget.phpt106
-rw-r--r--ext/snmp/tests/snmpgetnext.phpt39
-rw-r--r--ext/snmp/tests/snmprealwalk.phpt86
-rw-r--r--ext/snmp/tests/snmpset-nomib.phpt60
-rw-r--r--ext/snmp/tests/snmpset.phpt248
-rw-r--r--ext/snmp/tests/snmpwalk.phpt99
-rw-r--r--ext/snmp/tests/wrong_hostname.phpt22
-rw-r--r--ext/soap/TODO.old1
-rw-r--r--ext/soap/php_encoding.c389
-rw-r--r--ext/soap/php_encoding.h16
-rw-r--r--ext/soap/php_http.c16
-rw-r--r--ext/soap/php_packet_soap.c20
-rw-r--r--ext/soap/php_sdl.c10
-rw-r--r--ext/soap/php_xml.c26
-rw-r--r--ext/soap/php_xml.h7
-rw-r--r--ext/soap/soap.c357
-rw-r--r--ext/soap/tests/bugs/bug31422.phpt1
-rw-r--r--ext/soap/tests/error_handler.phpt17
-rw-r--r--ext/sockets/config.m46
-rw-r--r--ext/sockets/config.w323
-rw-r--r--ext/sockets/multicast.c545
-rw-r--r--ext/sockets/multicast.h91
-rw-r--r--ext/sockets/php_sockets.h10
-rw-r--r--ext/sockets/sockets.c615
-rw-r--r--ext/sockets/tests/mcast_helpers.php.inc8
-rw-r--r--ext/sockets/tests/mcast_ipv4_recv.phpt197
-rw-r--r--ext/sockets/tests/mcast_ipv4_send.phpt65
-rw-r--r--ext/sockets/tests/mcast_ipv4_send_error.phpt79
-rw-r--r--ext/sockets/tests/mcast_ipv6_recv.phpt223
-rw-r--r--ext/sockets/tests/mcast_ipv6_recv_limited.phpt131
-rw-r--r--ext/sockets/tests/mcast_ipv6_send.phpt70
-rw-r--r--ext/sockets/tests/socket_import_stream-1.phpt26
-rw-r--r--ext/sockets/tests/socket_import_stream-2.phpt49
-rw-r--r--ext/sockets/tests/socket_import_stream-3.phpt46
-rw-r--r--ext/sockets/tests/socket_import_stream-4.phpt98
-rw-r--r--ext/sockets/tests/socket_import_stream-5.phpt23
-rw-r--r--ext/sockets/tests/socket_set_option_seolinger.phpt9
-rwxr-xr-xext/spl/examples/dbaarray.inc5
-rwxr-xr-xext/spl/internal/regexiterator.inc7
-rwxr-xr-xext/spl/php_spl.c49
-rwxr-xr-xext/spl/php_spl.h1
-rwxr-xr-xext/spl/spl_array.c326
-rwxr-xr-xext/spl/spl_directory.c104
-rw-r--r--ext/spl/spl_dllist.c124
-rw-r--r--ext/spl/spl_fixedarray.c17
-rwxr-xr-xext/spl/spl_functions.c12
-rwxr-xr-xext/spl/spl_functions.h1
-rw-r--r--ext/spl/spl_heap.c7
-rwxr-xr-xext/spl/spl_iterators.c182
-rwxr-xr-xext/spl/spl_iterators.h11
-rwxr-xr-xext/spl/spl_observer.c271
-rw-r--r--ext/spl/tests/CallbackFilterIteratorTest-002.phpt50
-rw-r--r--ext/spl/tests/CallbackFilterIteratorTest.phpt133
-rw-r--r--ext/spl/tests/RecursiveCallbackFilterIteratorTest.phpt138
-rw-r--r--ext/spl/tests/SplDoublyLinkedList_serialization.phpt67
-rw-r--r--ext/spl/tests/SplFileObject_fflush_basic_001.phpt5
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv.phpt106
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_002.phpt42
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_error.phpt35
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation1.phpt826
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation10.phpt327
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation11.phpt826
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation12.phpt827
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation13.phpt29
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation14.phpt29
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation5.phpt826
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation6.phpt829
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation7.phpt829
-rw-r--r--ext/spl/tests/SplFileObject_fputcsv_variation8.phpt829
-rw-r--r--ext/spl/tests/SplFileObject_ftruncate_error_001.phpt3
-rw-r--r--ext/spl/tests/SplFileObject_fwrite_variation_003.phpt22
-rw-r--r--ext/spl/tests/SplObjectStorage_getHash.phpt60
-rw-r--r--ext/spl/tests/SplObjectStorage_unserialize_bad.phpt6
-rw-r--r--ext/spl/tests/SplObjectStorage_unserialize_nested.phpt2
-rwxr-xr-xext/spl/tests/array_004.phpt111
-rwxr-xr-xext/spl/tests/array_008.phpt29
-rw-r--r--ext/spl/tests/bug49263.phpt2
-rw-r--r--ext/spl/tests/bug53515.phpt2
-rw-r--r--ext/spl/tests/bug54323.phpt24
-rwxr-xr-xext/spl/tests/bug60082.phpt23
-rw-r--r--ext/spl/tests/bug60201.phpt30
-rw-r--r--ext/spl/tests/bug61453.phpt19
-rw-r--r--ext/spl/tests/class_uses_basic.phpt33
-rw-r--r--ext/spl/tests/class_uses_basic2.phpt69
-rw-r--r--ext/spl/tests/class_uses_variation.phpt45
-rw-r--r--ext/spl/tests/class_uses_variation1.phpt221
-rw-r--r--ext/spl/tests/class_uses_variation2.phpt261
-rw-r--r--ext/spl/tests/dllist_001.phpt12
-rw-r--r--ext/spl/tests/dllist_004.phpt7
-rw-r--r--ext/spl/tests/dllist_005.phpt7
-rwxr-xr-xext/spl/tests/fileobject_003.phpt59
-rw-r--r--ext/spl/tests/filesystemiterator_flags.phpt40
-rw-r--r--ext/spl/tests/fixedarray_001.phpt2
-rw-r--r--ext/spl/tests/fixedarray_002.phpt2
-rwxr-xr-xext/spl/tests/iterator_026.phpt4
-rwxr-xr-xext/spl/tests/iterator_041b.phpt13
-rwxr-xr-xext/spl/tests/iterator_047.phpt8
-rwxr-xr-xext/spl/tests/iterator_050.phpt4
-rwxr-xr-xext/spl/tests/iterator_052.phpt4
-rwxr-xr-xext/spl/tests/iterator_054.phpt2
-rw-r--r--ext/spl/tests/regexiterator_getregex.phpt29
-rwxr-xr-xext/spl/tests/spl_004.phpt2
-rw-r--r--ext/sqlite/CREDITS2
-rw-r--r--ext/sqlite/Makefile.frag2
-rw-r--r--ext/sqlite/README14
-rw-r--r--ext/sqlite/TODO19
-rw-r--r--ext/sqlite/config.m4157
-rw-r--r--ext/sqlite/config.w3239
-rw-r--r--ext/sqlite/libsqlite/README37
-rw-r--r--ext/sqlite/libsqlite/VERSION1
-rw-r--r--ext/sqlite/libsqlite/src/attach.c311
-rw-r--r--ext/sqlite/libsqlite/src/auth.c219
-rw-r--r--ext/sqlite/libsqlite/src/btree.c3584
-rw-r--r--ext/sqlite/libsqlite/src/btree.h156
-rw-r--r--ext/sqlite/libsqlite/src/btree_rb.c1488
-rw-r--r--ext/sqlite/libsqlite/src/build.c2156
-rwxr-xr-xext/sqlite/libsqlite/src/config_static.w32.h1
-rw-r--r--ext/sqlite/libsqlite/src/copy.c110
-rw-r--r--ext/sqlite/libsqlite/src/date.c881
-rw-r--r--ext/sqlite/libsqlite/src/delete.c393
-rw-r--r--ext/sqlite/libsqlite/src/encode.c257
-rw-r--r--ext/sqlite/libsqlite/src/expr.c1662
-rw-r--r--ext/sqlite/libsqlite/src/func.c658
-rw-r--r--ext/sqlite/libsqlite/src/hash.c356
-rw-r--r--ext/sqlite/libsqlite/src/hash.h109
-rw-r--r--ext/sqlite/libsqlite/src/insert.c919
-rwxr-xr-xext/sqlite/libsqlite/src/libsqlite.dsp353
-rw-r--r--ext/sqlite/libsqlite/src/main.c1143
-rw-r--r--ext/sqlite/libsqlite/src/opcodes.c140
-rw-r--r--ext/sqlite/libsqlite/src/opcodes.h138
-rw-r--r--ext/sqlite/libsqlite/src/os.c1850
-rw-r--r--ext/sqlite/libsqlite/src/os.h191
-rw-r--r--ext/sqlite/libsqlite/src/pager.c2220
-rw-r--r--ext/sqlite/libsqlite/src/pager.h107
-rw-r--r--ext/sqlite/libsqlite/src/parse.c3355
-rw-r--r--ext/sqlite/libsqlite/src/parse.h130
-rw-r--r--ext/sqlite/libsqlite/src/parse.y897
-rw-r--r--ext/sqlite/libsqlite/src/pragma.c712
-rw-r--r--ext/sqlite/libsqlite/src/printf.c858
-rw-r--r--ext/sqlite/libsqlite/src/random.c97
-rw-r--r--ext/sqlite/libsqlite/src/select.c2434
-rw-r--r--ext/sqlite/libsqlite/src/sqlite.h.in886
-rw-r--r--ext/sqlite/libsqlite/src/sqlite.w32.h764
-rw-r--r--ext/sqlite/libsqlite/src/sqliteInt.h1270
-rw-r--r--ext/sqlite/libsqlite/src/sqlite_config.w32.h8
-rw-r--r--ext/sqlite/libsqlite/src/table.c203
-rw-r--r--ext/sqlite/libsqlite/src/tokenize.c679
-rw-r--r--ext/sqlite/libsqlite/src/trigger.c764
-rw-r--r--ext/sqlite/libsqlite/src/update.c459
-rw-r--r--ext/sqlite/libsqlite/src/util.c1134
-rw-r--r--ext/sqlite/libsqlite/src/vacuum.c305
-rw-r--r--ext/sqlite/libsqlite/src/vdbe.c4921
-rw-r--r--ext/sqlite/libsqlite/src/vdbe.h112
-rw-r--r--ext/sqlite/libsqlite/src/vdbeInt.h303
-rw-r--r--ext/sqlite/libsqlite/src/vdbeaux.c1061
-rw-r--r--ext/sqlite/libsqlite/src/where.c1235
-rw-r--r--ext/sqlite/package.xml136
-rw-r--r--ext/sqlite/pdo_sqlite2.c638
-rw-r--r--ext/sqlite/php_sqlite.def43
-rw-r--r--ext/sqlite/php_sqlite.h107
-rw-r--r--ext/sqlite/sess_sqlite.c201
-rw-r--r--ext/sqlite/sqlite.c3448
-rw-r--r--ext/sqlite/sqlite.dsp339
-rw-r--r--ext/sqlite/sqlite.php36
-rw-r--r--ext/sqlite/tests/blankdb.inc3
-rwxr-xr-xext/sqlite/tests/blankdb_oo.inc3
-rw-r--r--ext/sqlite/tests/bug26911.phpt12
-rwxr-xr-xext/sqlite/tests/bug28112.phpt16
-rw-r--r--ext/sqlite/tests/bug35248.phpt15
-rw-r--r--ext/sqlite/tests/bug38759.phpt18
-rw-r--r--ext/sqlite/tests/bug48679.phpt20
-rw-r--r--ext/sqlite/tests/pdo/common.phpt12
-rwxr-xr-xext/sqlite/tests/sqlite_001.phpt16
-rwxr-xr-xext/sqlite/tests/sqlite_002.phpt32
-rwxr-xr-xext/sqlite/tests/sqlite_003.phpt52
-rw-r--r--ext/sqlite/tests/sqlite_004.phpt49
-rw-r--r--ext/sqlite/tests/sqlite_005.phpt50
-rw-r--r--ext/sqlite/tests/sqlite_006.phpt55
-rwxr-xr-xext/sqlite/tests/sqlite_007.phpt52
-rwxr-xr-xext/sqlite/tests/sqlite_008.phpt46
-rwxr-xr-xext/sqlite/tests/sqlite_009.phpt46
-rwxr-xr-xext/sqlite/tests/sqlite_010.phpt81
-rwxr-xr-xext/sqlite/tests/sqlite_011.phpt34
-rwxr-xr-xext/sqlite/tests/sqlite_012.phpt38
-rwxr-xr-xext/sqlite/tests/sqlite_013.phpt78
-rwxr-xr-xext/sqlite/tests/sqlite_014.phpt120
-rwxr-xr-xext/sqlite/tests/sqlite_015.phpt49
-rwxr-xr-xext/sqlite/tests/sqlite_016.phpt45
-rwxr-xr-xext/sqlite/tests/sqlite_017.phpt33
-rwxr-xr-xext/sqlite/tests/sqlite_018.phpt14
-rwxr-xr-xext/sqlite/tests/sqlite_019.phpt47
-rwxr-xr-xext/sqlite/tests/sqlite_022.phpt101
-rw-r--r--ext/sqlite/tests/sqlite_023.phpt105
-rwxr-xr-xext/sqlite/tests/sqlite_024.phpt76
-rwxr-xr-xext/sqlite/tests/sqlite_025.phpt38
-rwxr-xr-xext/sqlite/tests/sqlite_026.phpt27
-rwxr-xr-xext/sqlite/tests/sqlite_027.phpt15
-rwxr-xr-xext/sqlite/tests/sqlite_closures_001.phpt54
-rwxr-xr-xext/sqlite/tests/sqlite_closures_002.phpt52
-rw-r--r--ext/sqlite/tests/sqlite_exec_basic.phpt34
-rw-r--r--ext/sqlite/tests/sqlite_exec_error.phpt44
-rw-r--r--ext/sqlite/tests/sqlite_last_error_basic.phpt48
-rw-r--r--ext/sqlite/tests/sqlite_last_error_error.phpt47
-rwxr-xr-xext/sqlite/tests/sqlite_oo_001.phpt17
-rwxr-xr-xext/sqlite/tests/sqlite_oo_002.phpt41
-rwxr-xr-xext/sqlite/tests/sqlite_oo_003.phpt51
-rwxr-xr-xext/sqlite/tests/sqlite_oo_008.phpt43
-rwxr-xr-xext/sqlite/tests/sqlite_oo_009.phpt43
-rwxr-xr-xext/sqlite/tests/sqlite_oo_010.phpt44
-rwxr-xr-xext/sqlite/tests/sqlite_oo_011.phpt33
-rwxr-xr-xext/sqlite/tests/sqlite_oo_012.phpt35
-rwxr-xr-xext/sqlite/tests/sqlite_oo_013.phpt75
-rwxr-xr-xext/sqlite/tests/sqlite_oo_014.phpt118
-rwxr-xr-xext/sqlite/tests/sqlite_oo_015.phpt47
-rwxr-xr-xext/sqlite/tests/sqlite_oo_016.phpt42
-rwxr-xr-xext/sqlite/tests/sqlite_oo_020.phpt66
-rwxr-xr-xext/sqlite/tests/sqlite_oo_021.phpt48
-rwxr-xr-xext/sqlite/tests/sqlite_oo_022.phpt98
-rwxr-xr-xext/sqlite/tests/sqlite_oo_024.phpt74
-rwxr-xr-xext/sqlite/tests/sqlite_oo_025.phpt103
-rwxr-xr-xext/sqlite/tests/sqlite_oo_026.phpt56
-rwxr-xr-xext/sqlite/tests/sqlite_oo_027.phpt42
-rwxr-xr-xext/sqlite/tests/sqlite_oo_028.phpt25
-rwxr-xr-xext/sqlite/tests/sqlite_oo_029.phpt53
-rwxr-xr-xext/sqlite/tests/sqlite_oo_030.phpt44
-rw-r--r--ext/sqlite/tests/sqlite_popen_basic.phpt27
-rw-r--r--ext/sqlite/tests/sqlite_popen_error.phpt34
-rw-r--r--ext/sqlite/tests/sqlite_session_001.phpt46
-rw-r--r--ext/sqlite/tests/sqlite_session_002.phpt54
-rwxr-xr-xext/sqlite/tests/sqlite_spl_001.phpt125
-rwxr-xr-xext/sqlite/tests/sqlite_spl_002.phpt29
-rwxr-xr-xext/sqlite/tests/sqlite_spl_003.phpt28
-rw-r--r--ext/sqlite/tests/sqlitedatabase_arrayquery.phpt23
-rw-r--r--ext/sqlite3/php_sqlite3.h2
-rw-r--r--ext/sqlite3/sqlite3.c14
-rw-r--r--ext/sqlite3/tests/bug53463.phpt2
-rw-r--r--ext/sqlite3/tests/sqlite3_15_open_error.phpt4
-rw-r--r--ext/standard/array.c50
-rw-r--r--ext/standard/assert.c2
-rw-r--r--ext/standard/basic_functions.c425
-rw-r--r--ext/standard/basic_functions.h31
-rw-r--r--ext/standard/browscap.c4
-rw-r--r--ext/standard/config.m44
-rw-r--r--ext/standard/credits.c1
-rw-r--r--ext/standard/credits_ext.h15
-rw-r--r--ext/standard/crypt.c4
-rw-r--r--ext/standard/crypt_sha256.c2
-rw-r--r--ext/standard/crypt_sha512.c2
-rw-r--r--ext/standard/cyr_convert.c2
-rw-r--r--ext/standard/datetime.c21
-rw-r--r--ext/standard/dir.c39
-rw-r--r--ext/standard/dl.c3
-rw-r--r--ext/standard/dns.c60
-rw-r--r--ext/standard/dns_win32.c61
-rw-r--r--ext/standard/exec.c57
-rw-r--r--ext/standard/file.c318
-rw-r--r--ext/standard/file.h6
-rw-r--r--ext/standard/filestat.c316
-rw-r--r--ext/standard/formatted_print.c3
-rw-r--r--ext/standard/fsock.c2
-rw-r--r--ext/standard/ftok.c10
-rw-r--r--ext/standard/ftp_fopen_wrapper.c5
-rw-r--r--ext/standard/head.c41
-rw-r--r--ext/standard/head.h1
-rw-r--r--ext/standard/html.c2466
-rw-r--r--ext/standard/html.h40
-rw-r--r--ext/standard/html_tables.h6235
-rw-r--r--ext/standard/html_tables/ents_basic.txt5
-rw-r--r--ext/standard/html_tables/ents_basic_apos.txt5
-rw-r--r--ext/standard/html_tables/ents_html401.txt253
-rw-r--r--ext/standard/html_tables/ents_html5.txt2125
-rw-r--r--ext/standard/html_tables/ents_xhtml.txt253
-rw-r--r--ext/standard/html_tables/html_table_gen.php812
-rw-r--r--ext/standard/html_tables/mappings/8859-1.TXT303
-rw-r--r--ext/standard/html_tables/mappings/8859-15.TXT303
-rw-r--r--ext/standard/html_tables/mappings/8859-5.TXT303
-rw-r--r--ext/standard/html_tables/mappings/CP1251.TXT274
-rw-r--r--ext/standard/html_tables/mappings/CP1252.TXT274
-rw-r--r--ext/standard/html_tables/mappings/CP866.TXT275
-rw-r--r--ext/standard/html_tables/mappings/KOI8-R.TXT302
-rw-r--r--ext/standard/html_tables/mappings/ROMAN.TXT370
-rw-r--r--ext/standard/http.c46
-rw-r--r--ext/standard/http_fopen_wrapper.c11
-rw-r--r--ext/standard/image.c73
-rw-r--r--ext/standard/incomplete_class.c14
-rw-r--r--ext/standard/info.c694
-rw-r--r--ext/standard/iptc.c16
-rw-r--r--ext/standard/link.c47
-rw-r--r--ext/standard/link_win32.c15
-rw-r--r--ext/standard/mail.c20
-rw-r--r--ext/standard/math.c39
-rw-r--r--ext/standard/md5.c4
-rw-r--r--ext/standard/pack.c1
-rw-r--r--ext/standard/pageinfo.c38
-rw-r--r--ext/standard/pageinfo.h4
-rw-r--r--ext/standard/php_array.h2
-rw-r--r--ext/standard/php_crypt_r.c7
-rw-r--r--ext/standard/php_dir.h4
-rw-r--r--ext/standard/php_ext_syslog.h1
-rw-r--r--ext/standard/php_http.h2
-rw-r--r--ext/standard/php_image.h1
-rw-r--r--ext/standard/php_incomplete_class.h2
-rw-r--r--ext/standard/php_math.h3
-rw-r--r--ext/standard/php_string.h10
-rw-r--r--ext/standard/php_var.h80
-rw-r--r--ext/standard/proc_open.c82
-rw-r--r--ext/standard/sha1.c4
-rw-r--r--ext/standard/streamsfuncs.c91
-rw-r--r--ext/standard/streamsfuncs.h1
-rw-r--r--ext/standard/string.c700
-rw-r--r--ext/standard/syslog.c91
-rw-r--r--ext/standard/tests/array/002.phpt40
-rw-r--r--ext/standard/tests/array/array_change_key_case_variation7.phpt28
-rw-r--r--ext/standard/tests/array/array_change_key_case_variation8.phpt6
-rw-r--r--ext/standard/tests/array/array_combine_error2.phpt5
-rw-r--r--ext/standard/tests/array/array_combine_variation3.phpt5
-rw-r--r--ext/standard/tests/array/array_combine_variation4.phpt5
-rw-r--r--ext/standard/tests/array/array_combine_variation5.phpt5
-rw-r--r--ext/standard/tests/array/array_diff_variation9.phpt56
-rw-r--r--ext/standard/tests/array/array_fill_object.phpt2
-rw-r--r--ext/standard/tests/array/array_fill_object_2_4.phpt434
-rw-r--r--ext/standard/tests/array/array_intersect_assoc_variation9.phpt24
-rw-r--r--ext/standard/tests/array/array_intersect_variation9.phpt92
-rw-r--r--ext/standard/tests/array/array_key_exists_variation4.phpt15
-rw-r--r--ext/standard/tests/array/array_map_variation19.phpt2
-rw-r--r--ext/standard/tests/array/array_merge_variation9.phpt15
-rw-r--r--ext/standard/tests/array/array_multisort_basic1.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_basic2.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_case.phpt73
-rw-r--r--ext/standard/tests/array/array_multisort_error.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_incase.phpt73
-rw-r--r--ext/standard/tests/array/array_multisort_natural.phpt61
-rw-r--r--ext/standard/tests/array/array_multisort_natural_case.phpt73
-rw-r--r--ext/standard/tests/array/array_multisort_natural_incase.phpt73
-rw-r--r--ext/standard/tests/array/array_multisort_variation1.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation10.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation11.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation2.phpt4
-rw-r--r--ext/standard/tests/array/array_multisort_variation3.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation4.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation5.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation6.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation7.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation8.phpt2
-rw-r--r--ext/standard/tests/array/array_multisort_variation9.phpt2
-rw-r--r--ext/standard/tests/array/array_push_variation4.phpt110
-rw-r--r--ext/standard/tests/array/array_slice_variation9.phpt25
-rw-r--r--ext/standard/tests/array/array_unique_variation8.phpt28
-rw-r--r--ext/standard/tests/array/array_values_variation6.phpt16
-rw-r--r--ext/standard/tests/array/arsort_basic.phpt120
-rw-r--r--ext/standard/tests/array/arsort_variation2.phpt6
-rw-r--r--ext/standard/tests/array/arsort_variation5.phpt12
-rw-r--r--ext/standard/tests/array/asort_basic.phpt122
-rw-r--r--ext/standard/tests/array/asort_variation2.phpt4
-rw-r--r--ext/standard/tests/array/asort_variation5.phpt12
-rwxr-xr-xext/standard/tests/array/bug29253.phpt2
-rwxr-xr-xext/standard/tests/array/bug33940.phpt63
-rw-r--r--ext/standard/tests/array/current_variation5.phpt2
-rw-r--r--ext/standard/tests/array/each_variation4.phpt31
-rw-r--r--ext/standard/tests/array/krsort_basic.phpt157
-rw-r--r--ext/standard/tests/array/krsort_variation2.phpt4
-rw-r--r--ext/standard/tests/array/krsort_variation5.phpt12
-rw-r--r--ext/standard/tests/array/ksort_basic.phpt158
-rw-r--r--ext/standard/tests/array/ksort_variation2.phpt4
-rw-r--r--ext/standard/tests/array/ksort_variation5.phpt12
-rw-r--r--ext/standard/tests/array/natcasesort_variation4.phpt6
-rw-r--r--ext/standard/tests/array/range_variation.phpt2
-rw-r--r--ext/standard/tests/array/rsort_basic.phpt128
-rw-r--r--ext/standard/tests/array/rsort_variation4.phpt18
-rw-r--r--ext/standard/tests/array/rsort_variation5.phpt26
-rw-r--r--ext/standard/tests/array/sort_basic.phpt130
-rw-r--r--ext/standard/tests/array/sort_variation2.phpt4
-rw-r--r--ext/standard/tests/array/sort_variation5.phpt24
-rw-r--r--ext/standard/tests/class_object/AutoTrait.inc5
-rw-r--r--ext/standard/tests/class_object/class_exists_variation_001.phpt5
-rw-r--r--ext/standard/tests/class_object/class_exists_variation_002.phpt5
-rw-r--r--ext/standard/tests/class_object/get_class_methods_variation_001.phpt5
-rw-r--r--ext/standard/tests/class_object/get_class_variation_001.phpt2
-rw-r--r--ext/standard/tests/class_object/get_declared_traits_basic_001.phpt56
-rw-r--r--ext/standard/tests/class_object/get_declared_traits_error_001.phpt27
-rw-r--r--ext/standard/tests/class_object/get_declared_traits_variation1.phpt41
-rw-r--r--ext/standard/tests/class_object/get_object_vars_variation_003.phpt2
-rw-r--r--ext/standard/tests/class_object/get_parent_class_variation_002.phpt5
-rw-r--r--ext/standard/tests/class_object/is_a_variation_001.phpt2
-rw-r--r--ext/standard/tests/class_object/is_a_variation_002.phpt2
-rw-r--r--ext/standard/tests/class_object/is_subclass_of_variation_001.phpt5
-rw-r--r--ext/standard/tests/class_object/is_subclass_of_variation_002.phpt5
-rw-r--r--ext/standard/tests/class_object/is_subclass_of_variation_004.phpt5
-rw-r--r--ext/standard/tests/class_object/method_exists_variation_001.phpt5
-rw-r--r--ext/standard/tests/class_object/method_exists_variation_002.phpt5
-rw-r--r--ext/standard/tests/class_object/trait_class_exists_variation_003.phpt18
-rw-r--r--ext/standard/tests/class_object/trait_exists_basic_001.phpt57
-rw-r--r--ext/standard/tests/class_object/trait_exists_error_001.phpt42
-rw-r--r--ext/standard/tests/class_object/trait_exists_variation_001.phpt187
-rw-r--r--ext/standard/tests/class_object/trait_exists_variation_002.phpt198
-rw-r--r--ext/standard/tests/dir/chdir_variation1.phpt4
-rw-r--r--ext/standard/tests/dir/dir_variation1-win32.phpt170
-rw-r--r--ext/standard/tests/dir/dir_variation5-win32.phpt37
-rw-r--r--ext/standard/tests/dir/dir_variation6-win32.phpt61
-rw-r--r--ext/standard/tests/dir/dir_variation8-win32.phpt68
-rw-r--r--ext/standard/tests/dir/dir_variation9-win32.phpt125
-rw-r--r--ext/standard/tests/dir/opendir_error2-win32.phpt47
-rw-r--r--ext/standard/tests/dir/opendir_variation1-win32.phpt248
-rw-r--r--ext/standard/tests/dir/readdir_variation4.phpt2
-rw-r--r--ext/standard/tests/dir/scandir_basic.phpt2
-rw-r--r--ext/standard/tests/dir/scandir_error2-win32.phpt51
-rw-r--r--ext/standard/tests/dir/scandir_variation1-win32.phpt289
-rw-r--r--ext/standard/tests/dir/scandir_variation1.phpt4
-rw-r--r--ext/standard/tests/dir/scandir_variation10.phpt79
-rw-r--r--ext/standard/tests/dir/scandir_variation3.phpt2
-rw-r--r--ext/standard/tests/dir/scandir_variation6-win32.phpt84
-rw-r--r--ext/standard/tests/dir/scandir_variation8.phpt2
-rw-r--r--ext/standard/tests/file/005_variation2-win32.phpt8
-rw-r--r--ext/standard/tests/file/005_variation2.phpt6
-rw-r--r--ext/standard/tests/file/007_error.phpt4
-rw-r--r--ext/standard/tests/file/bug22414.phpt3
-rw-r--r--ext/standard/tests/file/bug38450_3.phpt2
-rw-r--r--ext/standard/tests/file/bug39863.phpt3
-rw-r--r--ext/standard/tests/file/bug52820.phpt22
-rw-r--r--ext/standard/tests/file/bug55124.phpt18
-rw-r--r--ext/standard/tests/file/chmod_variation3.phpt10
-rw-r--r--ext/standard/tests/file/copy_variation4.phptbin4468 -> 4966 bytes
-rw-r--r--ext/standard/tests/file/disk_free_space_variation.phpt32
-rw-r--r--ext/standard/tests/file/disk_total_space_variation.phpt16
-rw-r--r--ext/standard/tests/file/fclose_variation1.phpt15
-rw-r--r--ext/standard/tests/file/file_get_contents_variation8-win32.phpt15
-rw-r--r--ext/standard/tests/file/file_get_contents_variation8.phpt13
-rw-r--r--ext/standard/tests/file/file_put_contents_variation8-win32.phpt4
-rw-r--r--ext/standard/tests/file/file_put_contents_variation8.phptbin2229 -> 2388 bytes
-rw-r--r--ext/standard/tests/file/file_variation2.phpt10
-rw-r--r--ext/standard/tests/file/filegroup_variation2.phpt2
-rw-r--r--ext/standard/tests/file/filegroup_variation3.phpt8
-rw-r--r--ext/standard/tests/file/fileinode_variation2.phpt2
-rw-r--r--ext/standard/tests/file/fileinode_variation3.phpt8
-rw-r--r--ext/standard/tests/file/fileowner_variation2.phpt2
-rw-r--r--ext/standard/tests/file/fileowner_variation3.phpt8
-rw-r--r--ext/standard/tests/file/fileperms_variation2.phpt2
-rw-r--r--ext/standard/tests/file/fileperms_variation3.phpt8
-rw-r--r--ext/standard/tests/file/fnmatch_error.phpt6
-rw-r--r--ext/standard/tests/file/fnmatch_variation.phpt134
-rw-r--r--ext/standard/tests/file/fpassthru_variation1.phpt2
-rw-r--r--ext/standard/tests/file/fseek_variation1.phpt2
-rw-r--r--ext/standard/tests/file/glob_variation-win32.phpt28
-rwxr-xr-xext/standard/tests/file/glob_variation.phpt28
-rw-r--r--ext/standard/tests/file/is_dir_variation3.phpt2
-rw-r--r--ext/standard/tests/file/is_dir_variation4.phpt8
-rw-r--r--ext/standard/tests/file/is_executable_variation1.phpt8
-rw-r--r--ext/standard/tests/file/is_executable_variation3.phpt2
-rw-r--r--ext/standard/tests/file/is_file_error.phpt2
-rw-r--r--ext/standard/tests/file/is_file_variation3.phpt2
-rw-r--r--ext/standard/tests/file/is_file_variation4.phpt8
-rw-r--r--ext/standard/tests/file/is_readable_variation1.phpt12
-rw-r--r--ext/standard/tests/file/is_readable_variation3.phpt2
-rw-r--r--ext/standard/tests/file/is_writable_variation1.phpt26
-rw-r--r--ext/standard/tests/file/is_writable_variation3.phpt4
-rw-r--r--ext/standard/tests/file/lchown_error.phpt4
-rw-r--r--ext/standard/tests/file/lstat_stat_error.phpt4
-rw-r--r--ext/standard/tests/file/lstat_stat_variation7.phpt2
-rw-r--r--ext/standard/tests/file/magic_quotes.phpt77
-rw-r--r--ext/standard/tests/file/mkdir_rmdir_variation2.phpt6
-rw-r--r--ext/standard/tests/file/parse_ini_file_variation3.phpt4
-rw-r--r--ext/standard/tests/file/parse_ini_file_variation4.phpt10
-rw-r--r--ext/standard/tests/file/readfile_variation10-win32.phpt18
-rw-r--r--ext/standard/tests/file/readfile_variation10.phptbin1852 -> 1869 bytes
-rw-r--r--ext/standard/tests/file/rename_variation13-win32.phptbin3962 -> 4692 bytes
-rw-r--r--ext/standard/tests/file/rename_variation13.phpt14
-rw-r--r--ext/standard/tests/file/rename_variation7-win32.phpt6
-rw-r--r--ext/standard/tests/file/stat_error-win32.phpt2
-rw-r--r--ext/standard/tests/file/stream_enclosed.phpt20
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_006.phpt7
-rw-r--r--ext/standard/tests/file/tempnam_variation3-win32.phpt5
-rw-r--r--ext/standard/tests/file/tempnam_variation3.phpt6
-rw-r--r--ext/standard/tests/file/tempnam_variation7-win32.phpt10
-rw-r--r--ext/standard/tests/file/tempnam_variation7.phpt8
-rw-r--r--ext/standard/tests/file/umask_variation3.phpt6
-rw-r--r--ext/standard/tests/file/userstreams_005.phpt63
-rw-r--r--ext/standard/tests/file/userstreams_006.phpt38
-rw-r--r--ext/standard/tests/file/userstreams_007.phpt49
-rw-r--r--ext/standard/tests/filters/php_user_filter_01.phpt2
-rw-r--r--ext/standard/tests/filters/php_user_filter_02.phpt2
-rw-r--r--ext/standard/tests/filters/php_user_filter_03.phpt2
-rw-r--r--ext/standard/tests/general_functions/bug41518.phpt7
-rw-r--r--ext/standard/tests/general_functions/bug55371.phpt10
-rw-r--r--ext/standard/tests/general_functions/call_user_func_array_variation_001.phpt2
-rw-r--r--ext/standard/tests/general_functions/debug_zval_dump_b.phptbin7279 -> 5004 bytes
-rw-r--r--ext/standard/tests/general_functions/debug_zval_dump_b_64bit.phptbin7279 -> 5004 bytes
-rw-r--r--ext/standard/tests/general_functions/debug_zval_dump_v.phpt11
-rw-r--r--ext/standard/tests/general_functions/get_cfg_var_variation8.phpt37
-rw-r--r--ext/standard/tests/general_functions/get_magic_quotes_gpc.phpt39
-rw-r--r--ext/standard/tests/general_functions/get_magic_quotes_runtime.phpt52
-rwxr-xr-xext/standard/tests/general_functions/getservbyname_variation10.phpt6
-rwxr-xr-xext/standard/tests/general_functions/getservbyname_variation9.phpt6
-rw-r--r--ext/standard/tests/general_functions/import_request.phpt4
-rw-r--r--ext/standard/tests/general_functions/import_request1.phpt2
-rw-r--r--ext/standard/tests/general_functions/import_request2.phpt2
-rw-r--r--ext/standard/tests/general_functions/import_request3.phpt2
-rw-r--r--ext/standard/tests/general_functions/ob_get_flush_error.phpt2
-rw-r--r--ext/standard/tests/general_functions/parse_ini_basic.data4
-rw-r--r--ext/standard/tests/general_functions/parse_ini_basic.phpt4
-rw-r--r--ext/standard/tests/general_functions/parse_ini_booleans.phpt8
-rw-r--r--ext/standard/tests/general_functions/phpinfo.phpt3
-rw-r--r--ext/standard/tests/general_functions/proc_nice_basic.phpt2
-rw-r--r--ext/standard/tests/general_functions/proc_nice_error.phpt19
-rw-r--r--ext/standard/tests/general_functions/putenv_error1.phpt26
-rw-r--r--ext/standard/tests/general_functions/putenv_error2.phpt20
-rw-r--r--ext/standard/tests/general_functions/set_magic_quotes_runtime_basic.phpt24
-rw-r--r--ext/standard/tests/general_functions/set_magic_quotes_runtime_variation1.phpt204
-rw-r--r--ext/standard/tests/general_functions/strval.phpt8
-rw-r--r--ext/standard/tests/general_functions/sys_getloadavg.phpt13
-rw-r--r--ext/standard/tests/image/getimagesizefromstring1.phpt49
-rw-r--r--ext/standard/tests/image/test.gifbin0 -> 2523 bytes
-rw-r--r--ext/standard/tests/mail/mail_basic2.phpt17
-rw-r--r--ext/standard/tests/mail/mail_variation2.phpt15
-rw-r--r--ext/standard/tests/math/bug45712.phpt2
-rw-r--r--ext/standard/tests/math/number_format_multichar.phpt77
-rw-r--r--ext/standard/tests/misc/syslog_vars_variation1.phpt11
-rw-r--r--ext/standard/tests/misc/syslog_vars_variation2.phpt52
-rw-r--r--ext/standard/tests/network/define_syslog_variables_basic-win32.phpt107
-rw-r--r--ext/standard/tests/network/define_syslog_variables_basic.phpt126
-rw-r--r--ext/standard/tests/network/define_syslog_variables_error.phpt29
-rw-r--r--ext/standard/tests/network/define_syslog_variables_variation.phpt92
-rw-r--r--ext/standard/tests/network/define_syslog_variables_variation2-win32.phpt96
-rw-r--r--ext/standard/tests/network/define_syslog_variables_variation2.phpt96
-rw-r--r--ext/standard/tests/network/ip2long_variation1.phpt2
-rw-r--r--ext/standard/tests/serialize/bug36424.phpt72
-rw-r--r--ext/standard/tests/serialize/serialization_miscTypes_001.phptbin7586 -> 7617 bytes
-rw-r--r--ext/standard/tests/streams/bug49936.phpt13
-rw-r--r--ext/standard/tests/streams/bug53427.phpt27
-rw-r--r--ext/standard/tests/streams/bug54623.phpt4
-rw-r--r--ext/standard/tests/streams/stream_set_chunk_size.phpt93
-rw-r--r--ext/standard/tests/strings/add-and-stripslashes.phpt12
-rw-r--r--ext/standard/tests/strings/addslashes_variation3.phpt196
-rw-r--r--ext/standard/tests/strings/bug22904.phpt30
-rw-r--r--ext/standard/tests/strings/bug44703.phpt12
-rw-r--r--ext/standard/tests/strings/bug49785.phpt293
-rw-r--r--ext/standard/tests/strings/bug54322.phpt9
-rw-r--r--ext/standard/tests/strings/bug54454.phpt8
-rw-r--r--ext/standard/tests/strings/bug55871.phpt47
-rw-r--r--ext/standard/tests/strings/bug60965.phpt10
-rw-r--r--ext/standard/tests/strings/bug61374.phpt7
-rw-r--r--ext/standard/tests/strings/bug61660.phpt11
-rw-r--r--ext/standard/tests/strings/crypt_blowfish.phpt32
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic1.phpt1094
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic2.phpt2494
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic3.phpt36
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic4.phpt352
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic5.phpt1598
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic6.phpt249
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic7.phpt342
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic8.phpt93
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic9.phpt95
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_variation1.phpt108
-rw-r--r--ext/standard/tests/strings/highlight_file.phpt1
-rw-r--r--ext/standard/tests/strings/html_entity_decode1.phpt67
-rw-r--r--ext/standard/tests/strings/html_entity_decode2.phpt33
-rw-r--r--ext/standard/tests/strings/html_entity_decode3.phpt193
-rw-r--r--ext/standard/tests/strings/html_entity_decode_cp866.phpt533
-rw-r--r--ext/standard/tests/strings/html_entity_decode_html4.phpt504
-rw-r--r--ext/standard/tests/strings/html_entity_decode_html5.phpt4264
-rw-r--r--ext/standard/tests/strings/html_entity_decode_iso8859-15.phpt405
-rw-r--r--ext/standard/tests/strings/html_entity_decode_iso8859-5.phpt405
-rw-r--r--ext/standard/tests/strings/html_entity_decode_koi8-r.phpt533
-rw-r--r--ext/standard/tests/strings/html_entity_decode_macroman.phpt540
-rw-r--r--ext/standard/tests/strings/html_entity_decode_win1251.phpt537
-rw-r--r--ext/standard/tests/strings/html_entity_decode_win1252.phpt169
-rw-r--r--ext/standard/tests/strings/htmlentities.phpt10
-rw-r--r--ext/standard/tests/strings/htmlentities04.phpt3
-rw-r--r--ext/standard/tests/strings/htmlentities05.phpt9
-rw-r--r--ext/standard/tests/strings/htmlentities06.phpt7
-rw-r--r--ext/standard/tests/strings/htmlentities07.phpt8
-rw-r--r--ext/standard/tests/strings/htmlentities08.phpt9
-rw-r--r--ext/standard/tests/strings/htmlentities09.phpt9
-rw-r--r--ext/standard/tests/strings/htmlentities13.phpt5
-rw-r--r--ext/standard/tests/strings/htmlentities14.phpt5
-rw-r--r--ext/standard/tests/strings/htmlentities15.phpt5
-rw-r--r--ext/standard/tests/strings/htmlentities16.phpt12
-rw-r--r--ext/standard/tests/strings/htmlentities18.phpt4
-rw-r--r--ext/standard/tests/strings/htmlentities19.phpt30
-rw-r--r--ext/standard/tests/strings/htmlentities20.phpt199
-rw-r--r--ext/standard/tests/strings/htmlentities21.phpt198
-rw-r--r--ext/standard/tests/strings/htmlentities22.phpt283
-rw-r--r--ext/standard/tests/strings/htmlentities23.phpt95
-rw-r--r--ext/standard/tests/strings/htmlentities24.phpt (renamed from ext/standard/tests/file/htmlentities19.phpt)12
-rw-r--r--ext/standard/tests/strings/htmlentities_html5.phpt1623
-rw-r--r--ext/standard/tests/strings/htmlspecialchars.phpt (renamed from ext/standard/tests/file/htmlspecialchars.phpt)0
-rw-r--r--ext/standard/tests/strings/htmlspecialchars_decode_variation7.phpt192
-rw-r--r--ext/standard/tests/strings/md5_file.phptbin2837 -> 2849 bytes
-rw-r--r--ext/standard/tests/strings/nl_langinfo_variation1.phpt104
-rw-r--r--ext/standard/tests/strings/parse_str_basic3.phptbin5243 -> 5141 bytes
-rw-r--r--ext/standard/tests/strings/print_variation1.phpt6
-rw-r--r--ext/standard/tests/strings/sha1_file.phpt4
-rw-r--r--ext/standard/tests/strings/stripslashes_variation5.phptbin8397 -> 0 bytes
-rw-r--r--ext/standard/tests/strings/strrchr_variation5.phpt12
-rw-r--r--ext/standard/tests/strings/strspn_variation6.phpt10
-rw-r--r--ext/standard/tests/strings/strtok_variation6.phpt2
-rw-r--r--ext/standard/tests/strings/strtolower.phptbin5049 -> 3889 bytes
-rw-r--r--ext/standard/tests/strings/strtoupper1.phptbin5060 -> 3900 bytes
-rw-r--r--ext/standard/tests/strings/strval.phpt4
-rw-r--r--ext/standard/tests/strings/substr_compare.phpt2
-rwxr-xr-x[-rw-r--r--]ext/standard/tests/time/bug60222.phpt0
-rw-r--r--ext/standard/tests/time/strptime_basic.phpt1
-rw-r--r--ext/standard/tests/time/strptime_parts.phpt76
-rw-r--r--ext/standard/tests/url/base64_encode_variation_001.phpt5
-rw-r--r--ext/standard/tests/url/parse_url_variation_001.phpt5
-rw-r--r--ext/standard/tests/url/parse_url_variation_002_32bit.phpt5
-rw-r--r--ext/standard/tests/url/parse_url_variation_002_64bit.phpt5
-rw-r--r--ext/standard/tests/url/rawurldecode_variation_001.phpt5
-rw-r--r--ext/standard/tests/url/rawurlencode_variation_001.phpt5
-rw-r--r--ext/standard/tests/url/urldecode_variation_001.phpt5
-rw-r--r--ext/standard/tests/url/urlencode_variation_001.phpt5
-rw-r--r--ext/standard/type.c7
-rw-r--r--ext/standard/url.c2
-rw-r--r--ext/standard/url.h3
-rw-r--r--ext/standard/url_scanner_ex.c12
-rw-r--r--ext/standard/url_scanner_ex.re10
-rw-r--r--ext/standard/user_filters.c5
-rw-r--r--ext/standard/var.c83
-rw-r--r--ext/standard/var_unserializer.c144
-rw-r--r--ext/standard/var_unserializer.re80
-rwxr-xr-xext/standard/winver.h9
-rw-r--r--ext/sybase_ct/php_sybase_ct.c25
-rw-r--r--ext/sysvmsg/sysvmsg.c2
-rw-r--r--ext/sysvmsg/tests/006.phpt2
-rw-r--r--ext/sysvsem/tests/sysv.phpt2
-rw-r--r--ext/tidy/php_tidy.h1
-rw-r--r--ext/tidy/tests/019.phpt2
-rw-r--r--ext/tidy/tests/022.phpt2
-rw-r--r--ext/tidy/tests/bug54682.phpt2
-rw-r--r--ext/tidy/tidy.c307
-rw-r--r--ext/tokenizer/tests/bug54089.phpt274
-rw-r--r--ext/tokenizer/tests/token_get_all_basic.phpt18
-rw-r--r--ext/tokenizer/tests/token_get_all_error.phpt2
-rw-r--r--ext/tokenizer/tests/token_get_all_variation1.phpt26
-rw-r--r--ext/tokenizer/tests/token_get_all_variation10.phpt148
-rw-r--r--ext/tokenizer/tests/token_get_all_variation11.phpt238
-rw-r--r--ext/tokenizer/tests/token_get_all_variation12.phpt223
-rw-r--r--ext/tokenizer/tests/token_get_all_variation13.phpt228
-rw-r--r--ext/tokenizer/tests/token_get_all_variation14.phpt56
-rw-r--r--ext/tokenizer/tests/token_get_all_variation15.phpt154
-rw-r--r--ext/tokenizer/tests/token_get_all_variation16.phpt47
-rw-r--r--ext/tokenizer/tests/token_get_all_variation17.phpt114
-rw-r--r--ext/tokenizer/tests/token_get_all_variation18.phpt18
-rw-r--r--ext/tokenizer/tests/token_get_all_variation19.phpt2
-rw-r--r--ext/tokenizer/tests/token_get_all_variation2.phpt82
-rw-r--r--ext/tokenizer/tests/token_get_all_variation3.phpt112
-rw-r--r--ext/tokenizer/tests/token_get_all_variation4.phpt154
-rw-r--r--ext/tokenizer/tests/token_get_all_variation5.phpt150
-rw-r--r--ext/tokenizer/tests/token_get_all_variation6.phpt88
-rw-r--r--ext/tokenizer/tests/token_get_all_variation7.phpt54
-rw-r--r--ext/tokenizer/tests/token_get_all_variation8.phpt180
-rw-r--r--ext/tokenizer/tests/token_get_all_variation9.phpt82
-rw-r--r--ext/tokenizer/tokenizer.c37
-rw-r--r--ext/tokenizer/tokenizer_data.c8
-rwxr-xr-xext/tokenizer/tokenizer_data_gen.sh2
-rw-r--r--ext/wddx/wddx.c4
-rw-r--r--ext/xml/config.w322
-rw-r--r--ext/xml/tests/utf8_decode_variation1.phpt2
-rw-r--r--ext/xml/tests/utf8_encode_variation1.phpt2
-rw-r--r--ext/xml/tests/xml001.phpt2
-rw-r--r--ext/xml/tests/xml002.phpt2
-rw-r--r--ext/xml/tests/xml003.phpt2
-rw-r--r--ext/xml/tests/xml004.phpt2
-rwxr-xr-xext/xml/tests/xml_closures_001.phpt2
-rw-r--r--ext/xml/tests/xml_error_string_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_get_current_byte_index_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_get_current_column_number_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_get_current_line_number_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_get_error_code_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parse_into_struct_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parse_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parser_create_ns_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parser_create_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parser_free_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parser_get_option_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parser_get_option_variation2.phpt2
-rw-r--r--ext/xml/tests/xml_parser_set_option_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parser_set_option_variation2.phpt2
-rw-r--r--ext/xml/tests/xml_parser_set_option_variation3.phpt2
-rw-r--r--ext/xml/tests/xml_set_character_data_handler_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_default_handler_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_element_handler_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_end_namespace_decl_handler_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_external_entity_ref_handler_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_notation_decl_handler_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_object_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_object_variation2.phpt2
-rw-r--r--ext/xml/tests/xml_set_processing_instruction_handler_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_start_namespace_decl_handler_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_set_unparsed_entity_decl_handler_variation1.phpt2
-rw-r--r--ext/xml/xml.c102
-rw-r--r--ext/xmlreader/php_xmlreader.c26
-rw-r--r--ext/xmlwriter/php_xmlwriter.c6
-rw-r--r--ext/xsl/php_xsl.c7
-rw-r--r--ext/xsl/php_xsl.h2
-rw-r--r--ext/xsl/tests/bug54446.phpt95
-rw-r--r--ext/xsl/tests/bug54446_with_ini.phpt40
-rw-r--r--ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcnostring.phpt6
-rw-r--r--ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcundef.phpt6
-rw-r--r--ext/xsl/xsl_fe.h3
-rw-r--r--ext/xsl/xsltprocessor.c93
-rw-r--r--ext/zip/php_zip.c117
-rw-r--r--ext/zlib/CREDITS2
-rw-r--r--ext/zlib/config0.m49
-rw-r--r--ext/zlib/php_zlib.h52
-rw-r--r--ext/zlib/tests/001.phpt2
-rw-r--r--ext/zlib/tests/003.phpt2
-rw-r--r--ext/zlib/tests/004.phpt23
-rw-r--r--ext/zlib/tests/006.phpt2
-rw-r--r--ext/zlib/tests/007.phpt16
-rw-r--r--ext/zlib/tests/bug60761.phpt108
-rw-r--r--ext/zlib/tests/bug61287.phpt24
-rw-r--r--ext/zlib/tests/data.inc2
-rw-r--r--ext/zlib/tests/gzcompress_basic1.phpt6
-rw-r--r--ext/zlib/tests/gzcompress_error1.phpt28
-rw-r--r--ext/zlib/tests/gzcompress_variation1.phpt6
-rw-r--r--ext/zlib/tests/gzdeflate_basic1.phpt2
-rw-r--r--ext/zlib/tests/gzdeflate_error1.phpt18
-rw-r--r--ext/zlib/tests/gzencode_basic1.phpt27
-rw-r--r--ext/zlib/tests/gzencode_error1.phpt8
-rw-r--r--ext/zlib/tests/gzencode_variation1.phpt6
-rw-r--r--ext/zlib/tests/gzencode_variation2-win32.phpt40
-rw-r--r--ext/zlib/tests/gzencode_variation2.phpt8
-rw-r--r--ext/zlib/tests/gzfile_basic.phpt2
-rw-r--r--ext/zlib/tests/gzfile_basic2.phpt2
-rw-r--r--ext/zlib/tests/gzfile_variation1.phpt10
-rw-r--r--ext/zlib/tests/gzfile_variation6.phpt4
-rw-r--r--ext/zlib/tests/gzinflate-bug42663.phpt11
-rw-r--r--ext/zlib/tests/gzinflate_length.phpt2
-rw-r--r--ext/zlib/tests/gzreadgzwrite.phpt9
-rw-r--r--ext/zlib/tests/gzreadgzwriteplain.phpt15
-rw-r--r--ext/zlib/tests/gzuncompress_error1.phpt8
-rw-r--r--ext/zlib/tests/gzwrite_variation1.phpt2
-rw-r--r--ext/zlib/tests/ob_001.phpt20
-rw-r--r--ext/zlib/tests/ob_002.phpt18
-rw-r--r--ext/zlib/tests/ob_003.phpt23
-rw-r--r--ext/zlib/tests/ob_004.phpt24
-rw-r--r--ext/zlib/tests/ob_005.phpt22
-rw-r--r--ext/zlib/tests/ob_gzhandler_legacy_002.phpt24
-rw-r--r--ext/zlib/tests/readgzfile_variation14.phpt2
-rw-r--r--ext/zlib/tests/readgzfile_variation4.phpt9
-rw-r--r--ext/zlib/tests/readgzfile_variation5.phpt9
-rw-r--r--ext/zlib/tests/readgzfile_variation6.phpt1
-rw-r--r--ext/zlib/tests/readgzfile_variation7.phpt7
-rw-r--r--ext/zlib/tests/zlib_filter_inflate2.phpt4
-rw-r--r--ext/zlib/zlib.c1662
-rw-r--r--ext/zlib/zlib_filter.c25
-rw-r--r--ext/zlib/zlib_fopen_wrapper.c2
-rw-r--r--main/SAPI.c341
-rw-r--r--main/SAPI.h18
-rw-r--r--main/fopen_wrappers.c147
-rw-r--r--main/fopen_wrappers.h3
-rw-r--r--main/main.c445
-rw-r--r--main/network.c6
-rw-r--r--main/output.c1670
-rw-r--r--main/php.h32
-rw-r--r--main/php3_compat.h122
-rw-r--r--main/php_content_types.c6
-rw-r--r--main/php_globals.h20
-rw-r--r--main/php_ini.c63
-rw-r--r--main/php_logos.c2
-rw-r--r--main/php_main.h1
-rw-r--r--main/php_network.h5
-rw-r--r--main/php_open_temporary_file.c2
-rw-r--r--main/php_output.h298
-rwxr-xr-xmain/php_streams.h24
-rw-r--r--main/php_variables.c337
-rw-r--r--main/php_version.h10
-rw-r--r--main/rfc1867.c391
-rw-r--r--main/rfc1867.h15
-rw-r--r--main/safe_mode.c276
-rw-r--r--main/snprintf.c6
-rw-r--r--main/spprintf.c2
-rw-r--r--main/streams/cast.c2
-rwxr-xr-xmain/streams/glob_wrapper.c2
-rw-r--r--main/streams/memory.c18
-rw-r--r--main/streams/php_stream_context.h6
-rw-r--r--main/streams/plain_wrapper.c284
-rwxr-xr-xmain/streams/streams.c98
-rw-r--r--main/streams/userspace.c341
-rw-r--r--main/streams/xp_socket.c4
-rwxr-xr-xmakedist8
-rw-r--r--pear/Makefile.frag2
-rw-r--r--php.ini-development287
-rw-r--r--php.ini-production289
-rw-r--r--sapi/apache/mod_php5.c16
-rw-r--r--sapi/apache/php_apache.c19
-rw-r--r--sapi/apache2filter/php_functions.c4
-rw-r--r--sapi/apache2filter/sapi_apache2.c26
-rw-r--r--sapi/apache2handler/config.w3223
-rw-r--r--sapi/apache2handler/php_functions.c6
-rw-r--r--sapi/apache2handler/sapi_apache2.c36
-rw-r--r--sapi/apache_hooks/mod_php5.c29
-rw-r--r--sapi/apache_hooks/php_apache.c26
-rw-r--r--sapi/apache_hooks/sapi_apache.c10
-rw-r--r--sapi/cgi/Makefile.frag9
-rw-r--r--sapi/cgi/cgi_main.c680
-rw-r--r--sapi/cgi/config9.m432
-rw-r--r--sapi/cgi/fastcgi.c517
-rw-r--r--sapi/cgi/fastcgi.h45
-rw-r--r--sapi/cli/CREDITS2
-rw-r--r--sapi/cli/Makefile.frag8
-rw-r--r--sapi/cli/README4
-rw-r--r--sapi/cli/cli.h52
-rw-r--r--sapi/cli/config.m429
-rw-r--r--sapi/cli/config.w325
-rw-r--r--sapi/cli/php.1.in10
-rw-r--r--sapi/cli/php_cli.c608
-rw-r--r--sapi/cli/php_cli_server.c2459
-rw-r--r--sapi/cli/php_cli_server.h (renamed from ext/hash/php_hash_salsa.h)39
-rw-r--r--sapi/cli/php_http_parser.c1604
-rw-r--r--sapi/cli/php_http_parser.h174
-rw-r--r--sapi/cli/tests/007.phpt4
-rw-r--r--sapi/cli/tests/008.phpt4
-rw-r--r--sapi/cli/tests/009.phpt8
-rw-r--r--sapi/cli/tests/011.phpt4
-rw-r--r--sapi/cli/tests/012.phpt32
-rw-r--r--sapi/cli/tests/014.phpt4
-rw-r--r--sapi/cli/tests/016.phpt2
-rw-r--r--sapi/cli/tests/php_cli_server.inc46
-rw-r--r--sapi/cli/tests/php_cli_server_001.phpt16
-rw-r--r--sapi/cli/tests/php_cli_server_002.phpt20
-rw-r--r--sapi/cli/tests/php_cli_server_003.phpt18
-rw-r--r--sapi/cli/tests/php_cli_server_004.phpt48
-rw-r--r--sapi/cli/tests/php_cli_server_005.phpt71
-rw-r--r--sapi/cli/tests/php_cli_server_006.phpt42
-rw-r--r--sapi/cli/tests/php_cli_server_007.phpt40
-rw-r--r--sapi/cli/tests/php_cli_server_008.phpt68
-rw-r--r--sapi/cli/tests/php_cli_server_009.phpt93
-rw-r--r--sapi/cli/tests/php_cli_server_010.phpt75
-rw-r--r--sapi/cli/tests/php_cli_server_011.phpt41
-rw-r--r--sapi/cli/tests/php_cli_server_012.phpt55
-rw-r--r--sapi/cli/tests/php_cli_server_013.phpt108
-rw-r--r--sapi/cli/tests/php_cli_server_014.phpt76
-rw-r--r--sapi/cli/tests/php_cli_server_015.phpt49
-rw-r--r--sapi/cli/tests/php_cli_server_016.phpt46
-rw-r--r--sapi/cli/tests/php_cli_server_017.phpt44
-rw-r--r--sapi/continuity/capi.c3
-rw-r--r--sapi/embed/config.w321
-rw-r--r--sapi/embed/php_embed.c2
-rw-r--r--sapi/fpm/Makefile.frag13
-rw-r--r--sapi/fpm/config.m416
-rw-r--r--sapi/fpm/fpm/fpm_main.c44
-rw-r--r--sapi/fpm/fpm/fpm_status.c3
-rw-r--r--sapi/fpm/php-fpm.conf.in4
-rw-r--r--sapi/litespeed/Makefile.frag8
-rw-r--r--sapi/litespeed/config.m49
-rw-r--r--sapi/milter/Makefile.frag8
-rw-r--r--sapi/milter/config.m43
-rw-r--r--sapi/milter/php_milter.c12
-rw-r--r--sapi/nsapi/nsapi.c43
-rw-r--r--sapi/phttpd/phttpd.c8
-rw-r--r--scripts/php-config.in1
-rw-r--r--scripts/phpize.in1
-rw-r--r--scripts/phpize.m45
-rw-r--r--tests/basic/011.phpt7
-rw-r--r--tests/basic/012.phpt7
-rw-r--r--tests/basic/022.phpt1
-rw-r--r--tests/basic/023.phpt2
-rw-r--r--tests/basic/024.phpt1
-rw-r--r--tests/basic/025.phpt1
-rw-r--r--tests/basic/026.phpt1
-rw-r--r--tests/basic/027.phpt1
-rw-r--r--tests/basic/028.phpt105
-rw-r--r--tests/basic/029.phpt51
-rw-r--r--tests/basic/bug46313-win.phpt64
-rw-r--r--tests/basic/bug46313.phpt63
-rw-r--r--tests/basic/bug46759.phpt20
-rw-r--r--tests/basic/bug51709_1.phpt2
-rw-r--r--tests/basic/bug51709_2.phpt2
-rw-r--r--tests/basic/bug54514.phpt12
-rw-r--r--tests/basic/enable_post_data_reading_01.phpt22
-rw-r--r--tests/basic/enable_post_data_reading_02.phpt28
-rw-r--r--tests/basic/enable_post_data_reading_03.phpt23
-rw-r--r--tests/basic/enable_post_data_reading_04.phpt23
-rw-r--r--tests/basic/magic_quotes_gpc.phpt11
-rw-r--r--tests/basic/req44164.phpt17
-rwxr-xr-xtests/classes/array_access_010.phpt8
-rwxr-xr-xtests/classes/ctor_in_interface_01.phpt2
-rwxr-xr-xtests/classes/ctor_in_interface_02.phpt3
-rwxr-xr-xtests/classes/ctor_in_interface_03.phpt2
-rwxr-xr-xtests/classes/ctor_in_interface_04.phpt2
-rw-r--r--tests/classes/implicit_instantiation_001.phpt18
-rwxr-xr-xtests/classes/inheritance_003.phpt2
-rwxr-xr-xtests/classes/inheritance_004.phpt2
-rw-r--r--tests/classes/is_a.phpt378
-rw-r--r--tests/classes/method_override_optional_arg_001.phpt2
-rw-r--r--tests/classes/method_override_optional_arg_002.phpt2
-rwxr-xr-xtests/classes/type_hinting_003.phpt2
-rw-r--r--tests/classes/type_hinting_005a.phpt4
-rw-r--r--tests/classes/type_hinting_005b.phpt4
-rw-r--r--tests/classes/type_hinting_005c.phpt4
-rw-r--r--tests/classes/type_hinting_005d.phpt4
-rw-r--r--tests/lang/019.phpt2
-rw-r--r--tests/lang/array_shortcut_001.phpt13
-rw-r--r--tests/lang/array_shortcut_002.phpt13
-rw-r--r--tests/lang/array_shortcut_003.phpt13
-rw-r--r--tests/lang/array_shortcut_005.phpt20
-rw-r--r--tests/lang/bug19943.phpt4
-rw-r--r--tests/lang/bug21820.phpt4
-rwxr-xr-xtests/lang/bug29566.phpt2
-rwxr-xr-xtests/lang/bug35176.phpt5
-rw-r--r--tests/lang/bug55754.phpt14
-rw-r--r--tests/lang/bug7515.phpt3
-rw-r--r--tests/lang/engine_assignExecutionOrder_008.phpt14
-rw-r--r--tests/lang/foreachLoop.016.phpt10
-rw-r--r--tests/lang/short_tags.004.phpt10
-rw-r--r--tests/output/bug46897.phpt4
-rw-r--r--tests/output/bug60282.phpt12
-rw-r--r--tests/output/bug60321.phpt9
-rw-r--r--tests/output/bug60322.phpt8
-rw-r--r--tests/output/bug60768.phpt25
-rw-r--r--tests/output/ob_013.phpt72
-rw-r--r--tests/output/ob_017.phpt12
-rw-r--r--tests/output/ob_get_clean_basic_001.phpt2
-rw-r--r--tests/output/ob_get_status.phpt23
-rw-r--r--tests/output/ob_start_basic_004.phpt18
-rw-r--r--tests/output/ob_start_basic_005.phpt4
-rw-r--r--tests/output/ob_start_basic_006.phpt51
-rw-r--r--tests/output/ob_start_basic_unerasable_002.phpt8
-rw-r--r--tests/output/ob_start_basic_unerasable_003.phpt9
-rw-r--r--tests/output/ob_start_basic_unerasable_004.phpt9
-rw-r--r--tests/output/ob_start_basic_unerasable_005.phpt4
-rw-r--r--tests/output/ob_start_error_001.phpt11
-rw-r--r--tests/output/ob_start_error_002.phpt17
-rw-r--r--tests/output/ob_start_error_003.phpt6
-rw-r--r--tests/output/ob_start_error_004.phpt6
-rw-r--r--tests/security/magic_quotes_gpc.phpt13
-rw-r--r--tests/security/open_basedir_linkinfo.phpt11
-rw-r--r--tests/security/open_basedir_readlink.phpt8
-rw-r--r--tests/strings/004.phpt1
-rw-r--r--tests/strings/bug26703.phpt1
-rw-r--r--tests/strings/offsets_chaining_1.phpt3
-rw-r--r--tests/strings/offsets_chaining_2.phpt3
-rw-r--r--tests/strings/offsets_chaining_3.phpt3
-rw-r--r--tests/strings/offsets_chaining_4.phpt3
-rw-r--r--tests/strings/offsets_chaining_5.phpt8
-rw-r--r--tests/strings/offsets_general.phpt11
-rw-r--r--win32/build/Makefile20
-rw-r--r--win32/build/config.w3244
-rw-r--r--win32/build/config.w32.h.in2
-rw-r--r--win32/build/config.w32.phpize.in7
-rw-r--r--win32/build/confutils.js16
-rw-r--r--win32/build/libs_version.txt1
-rw-r--r--win32/install.txt12
-rw-r--r--win32/php5dll.dsp4
-rw-r--r--win32/php5dllts.dsp4
-rw-r--r--win32/syslog.reg4
-rw-r--r--win32/winutil.c2
-rw-r--r--win32/winutil.h4
1949 files changed, 142055 insertions, 98494 deletions
diff --git a/.gdbinit b/.gdbinit
index 2445825..4a26d96 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -37,9 +37,60 @@ end
define dump_bt
set $t = $arg0
while $t
- printf "[0x%08x] ", $t
+ printf "[%p] ", $t
if $t->function_state.function->common.function_name
- printf "%s() ", $t->function_state.function->common.function_name
+ if $t->function_state.arguments
+ set $count = (int)*($t->function_state.arguments)
+ printf "%s(", $t->function_state.function->common.function_name
+ while $count > 0
+ set $zvalue = *(zval **)($t->function_state.arguments - $count)
+ set $type = $zvalue->type
+ if $type == 0
+ printf "NULL"
+ end
+ if $type == 1
+ printf "%ld", $zvalue->value.lval
+ end
+ if $type == 2
+ printf "%lf", $zvalue->value.dval
+ end
+ if $type == 3
+ if $zvalue->value.lval
+ printf "true"
+ else
+ printf "false"
+ end
+ end
+ if $type == 4
+ printf "array(%d)[%p]", $zvalue->value.ht->nNumOfElements, $zvalue
+ end
+ if $type == 5
+ printf "object[%p]", $zvalue
+ end
+ if $type == 6
+ ____print_str $zvalue->value.str.val $zvalue->value.str.len
+ end
+ if $type == 7
+ printf "resource(#%d)", $zvalue->value.lval
+ end
+ if $type == 8
+ printf "constant"
+ end
+ if $type == 9
+ printf "const_array"
+ end
+ if $type > 9
+ printf "unknown type %d", $type
+ end
+ set $count = $count -1
+ if $count > 0
+ printf ", "
+ end
+ end
+ printf ") "
+ else
+ printf "%s() ", $t->function_state.function->common.function_name
+ end
else
printf "??? "
end
@@ -167,7 +218,7 @@ define ____printzv
____executor_globals
set $zvalue = $arg0
- printf "[0x%08x] ", $zvalue
+ printf "[%p] ", $zvalue
if $zvalue == $eg.uninitialized_zval_ptr
printf "*uninitialized* "
@@ -208,7 +259,7 @@ end
define print_const_table
set $ind = 1
- printf "[0x%08x] {\n", $arg0
+ printf "[%p] {\n", $arg0
____print_const_table $arg0
printf "}\n"
end
@@ -248,7 +299,7 @@ end
define print_ht
set $ind = 1
- printf "[0x%08x] {\n", $arg0
+ printf "[%p] {\n", $arg0
____print_ht $arg0 1
printf "}\n"
end
@@ -259,7 +310,7 @@ end
define print_htptr
set $ind = 1
- printf "[0x%08x] {\n", $arg0
+ printf "[%p] {\n", $arg0
____print_ht $arg0 0
printf "}\n"
end
@@ -270,7 +321,7 @@ end
define print_htstr
set $ind = 1
- printf "[0x%08x] {\n", $arg0
+ printf "[%p] {\n", $arg0
____print_ht $arg0 2
printf "}\n"
end
@@ -306,7 +357,7 @@ end
define print_ft
set $ind = 1
- printf "[0x%08x] {\n", $arg0
+ printf "[%p] {\n", $arg0
____print_ft $arg0
printf "}\n"
end
@@ -383,7 +434,7 @@ end
define print_pi
set $pi = $arg0
- printf "[0x%08x] {\n", $pi
+ printf "[%p] {\n", $pi
printf " h = %lu\n", $pi->h
printf " flags = %d (", $pi->flags
if $pi->flags & 0x100
@@ -439,7 +490,7 @@ define printzn
set $optype = "IS_UNUSED"
end
- printf "[0x%08x] %s", $znode, $optype
+ printf "[%p] %s", $znode, $optype
if $znode->op_type == 1
printf ": "
@@ -519,7 +570,7 @@ define zmemcheck
else
set $filename = $filename + 1
end
- printf " 0x%08x ", $aptr
+ printf " %p ", $aptr
if $p->size == sizeof(struct _zval_struct) && ((struct _zval_struct *)$aptr)->type >= 0 && ((struct _zval_struct *)$aptr)->type < 10
printf "ZVAL?(%-2d) ", $p->size
else
@@ -549,7 +600,7 @@ define zmemcheck
end
end
if $not_found
- printf "no such block that begins at 0x%08x.\n", $aptr
+ printf "no such block that begins at %p.\n", $aptr
end
if $arg0 == 0
printf "-------------------------------------------------------------------------------\n"
diff --git a/.gitattributes b/.gitattributes
index d53e569..1f4a719 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -22,152 +22,153 @@ sapi/continuity/capi.c ident
Zend/RFCs/002.txt ident
Zend/RFCs/003.txt ident
NEWS merge=NEWS
-/ext/bz2/tests/005.phpt -crlf
-/ext/dom/tests/dom005.phpt -crlf
-/ext/dom/tests/DOMImplementation_createDocumentType_basic.phpt -crlf
-/ext/ereg/tests/009.phpt -crlf
-/ext/iconv/tests/eucjp2sjis.phpt -crlf
-/ext/iconv/tests/eucjp2utf8.phpt -crlf
-/ext/iconv/tests/iconv_stream_filter_delimiter.phpt -crlf
-/ext/iconv/tests/iconv_stream_filter.phpt -crlf
-/ext/mbstring/tests/mb_split-compat-01.phpt -crlf
-/ext/phar/tests/005.phpt -crlf
-/ext/phar/tests/phar_commitwrite.phpt -crlf
-/ext/phar/tests/phar_create_in_cwd.phpt -crlf
-/ext/phar/tests/phar_mount.phpt -crlf
-/ext/reflection/tests/009.phpt -crlf
-/ext/reflection/tests/025.phpt -crlf
-/ext/standard/tests/general_functions/highlight_heredoc.phpt -crlf
-/ext/standard/tests/general_functions/parse_ini_file.phpt -crlf
-/ext/standard/tests/general_functions/parse_ini_string_002.phpt -crlf
-/ext/standard/tests/strings/006.phpt -crlf
-/ext/standard/tests/strings/addslashes_variation2.phpt -crlf
-/ext/standard/tests/strings/addslashes_variation3.phpt -crlf
-/ext/standard/tests/strings/bug21453.phpt -crlf
-/ext/standard/tests/strings/chop_variation3.phpt -crlf
-/ext/standard/tests/strings/chunk_split_variation11.phpt -crlf
-/ext/standard/tests/strings/chunk_split_variation12.phpt -crlf
-/ext/standard/tests/strings/chunk_split_variation4.phpt -crlf
-/ext/standard/tests/strings/crc32_variation2.phpt -crlf
-/ext/standard/tests/strings/crc32_variation3.phpt -crlf
-/ext/standard/tests/strings/crc32_variation4.phpt -crlf
+/ext/bz2/tests/with_strings.phpt -crlf
+/ext/dom/tests/bug40836.phpt -crlf
+/ext/dom/tests/domelement.phpt -crlf
+/ext/ereg/tests/eregi_basic_002.phpt -crlf
+/ext/iconv/tests/iconv004.phpt -crlf
+/ext/iconv/tests/iconv_basic.phpt -crlf
+/ext/iconv/tests/iconv_strpos.phpt -crlf
+/ext/iconv/tests/iconv_strpos_variation2.phpt -crlf
+/ext/mbstring/tests/mb_strtoupper_error2.phpt -crlf
+/ext/phar/tests/delete_in_phar_confirm.phpt -crlf
+/ext/phar/tests/frontcontroller12.phpt -crlf
+/ext/phar/tests/security.phpt -crlf
+/ext/phar/tests/test_signaturealgos.phpt -crlf
+/ext/reflection/tests/ReflectionMethod_invokeArgs_basic.phpt -crlf
+/ext/reflection/tests/ReflectionProperty_getModifiers_basic.phpt -crlf
+/ext/spl/tests/dllist_007.phpt -crlf
+/ext/spl/tests/iterator_012.phpt -crlf
+/ext/spl/tests/SplArray_fromArray.phpt -crlf
+/ext/standard/tests/dir/scandir_variation3.phpt -crlf
+/ext/standard/tests/general_functions/escapeshellcmd-win32.phpt -crlf
+/ext/standard/tests/general_functions/set_magic_quotes_runtime_error.phpt -crlf
+/ext/standard/tests/strings/bug26817.phpt -crlf
+/ext/standard/tests/strings/bug26973.phpt -crlf
+/ext/standard/tests/strings/bug27457.phpt -crlf
+/ext/standard/tests/strings/bug28386.phpt -crlf
+/ext/standard/tests/strings/bug37262.phpt -crlf
+/ext/standard/tests/strings/bug40637.phpt -crlf
+/ext/standard/tests/strings/bug40915.phpt -crlf
+/ext/standard/tests/strings/bug61374.phpt -crlf
+/ext/standard/tests/strings/chop_error.phpt -crlf
+/ext/standard/tests/strings/chop_variation2.phpt -crlf
+/ext/standard/tests/strings/chunk_split_variation10.phpt -crlf
+/ext/standard/tests/strings/chunk_split_variation8.phpt -crlf
+/ext/standard/tests/strings/count_chars_variation2.phpt -crlf
+/ext/standard/tests/strings/dirname_error.phpt -crlf
+/ext/standard/tests/strings/fprintf_variation_007_64bit.phpt -crlf
/ext/standard/tests/strings/highlight_file.phpt -crlf
-/ext/standard/tests/strings/htmlentities_html4.phpt -crlf
-/ext/standard/tests/strings/lcfirst.phpt -crlf
-/ext/standard/tests/strings/ltrim.phpt -crlf
-/ext/standard/tests/strings/nl2br_variation2.phpt -crlf
-/ext/standard/tests/strings/php_strip_whitespace.phpt -crlf
+/ext/standard/tests/strings/htmlentities03.phpt -crlf
+/ext/standard/tests/strings/htmlentities04.phpt -crlf
+/ext/standard/tests/strings/htmlentities08.phpt -crlf
+/ext/standard/tests/strings/htmlentities15.phpt -crlf
+/ext/standard/tests/strings/http_build_query.phpt -crlf
+/ext/standard/tests/strings/metaphone.phpt -crlf
+/ext/standard/tests/strings/ord_error.phpt -crlf
+/ext/standard/tests/strings/printf_basic2.phpt -crlf
+/ext/standard/tests/strings/printf_variation2.phpt -crlf
+/ext/standard/tests/strings/quoted_printable_decode_basic.phpt -crlf
/ext/standard/tests/strings/rtrim.phpt -crlf
-/ext/standard/tests/strings/sprintf_f_2.phpt -crlf
-/ext/standard/tests/strings/sprintf_variation15.phpt -crlf
-/ext/standard/tests/strings/strcspn_variation6.phpt -crlf
-/ext/standard/tests/strings/strcspn_variation7.phpt -crlf
-/ext/standard/tests/strings/strcspn_variation8.phpt -crlf
-/ext/standard/tests/strings/stripos_variation1.phpt -crlf
-/ext/standard/tests/strings/stripos_variation3.phpt -crlf
-/ext/standard/tests/strings/stripos_variation4.phpt -crlf
-/ext/standard/tests/strings/stripos_variation5.phpt -crlf
-/ext/standard/tests/strings/stripos_variation6.phpt -crlf
+/ext/standard/tests/strings/setlocale_variation1.phpt -crlf
+/ext/standard/tests/strings/sha1_basic.phpt -crlf
+/ext/standard/tests/strings/similar_text_basic.phpt -crlf
+/ext/standard/tests/strings/soundex.phpt -crlf
+/ext/standard/tests/strings/sprintf_basic1.phpt -crlf
+/ext/standard/tests/strings/sprintf_basic4.phpt -crlf
+/ext/standard/tests/strings/sprintf_basic7.phpt -crlf
+/ext/standard/tests/strings/sprintf_variation12.phpt -crlf
+/ext/standard/tests/strings/sprintf_variation28.phpt -crlf
+/ext/standard/tests/strings/sprintf_variation29.phpt -crlf
+/ext/standard/tests/strings/sprintf_variation30.phpt -crlf
+/ext/standard/tests/strings/sprintf_variation31.phpt -crlf
+/ext/standard/tests/strings/sprintf_variation38.phpt -crlf
+/ext/standard/tests/strings/sprintf_variation42.phpt -crlf
+/ext/standard/tests/strings/sprintf_variation6.phpt -crlf
+/ext/standard/tests/strings/sscanf_basic2.phpt -crlf
+/ext/standard/tests/strings/sscanf_basic3.phpt -crlf
+/ext/standard/tests/strings/str_getcsv_001.phpt -crlf
+/ext/standard/tests/strings/stripcslashes_basic.phpt -crlf
+/ext/standard/tests/strings/stripos_variation11.phpt -crlf
+/ext/standard/tests/strings/stripos_variation13.phpt -crlf
+/ext/standard/tests/strings/stripslashes_variation1.phpt -crlf
/ext/standard/tests/strings/stripslashes_variation2.phpt -crlf
-/ext/standard/tests/strings/stripslashes_variation3.phpt -crlf
-/ext/standard/tests/strings/stripslashes_variation4.phpt -crlf
-/ext/standard/tests/strings/stripslashes_variation5.phpt -crlf
-/ext/standard/tests/strings/str_ireplace.phpt -crlf
-/ext/standard/tests/strings/strnatcmp_basic.phpt -crlf
-/ext/standard/tests/strings/strncasecmp_variation9.phpt -crlf
-/ext/standard/tests/strings/strpos.phpt -crlf
-/ext/standard/tests/strings/strrchr_variation1.phpt -crlf
-/ext/standard/tests/strings/strrchr_variation2.phpt -crlf
-/ext/standard/tests/strings/strrchr_variation3.phpt -crlf
-/ext/standard/tests/strings/strrchr_variation4.phpt -crlf
-/ext/standard/tests/strings/strrchr_variation6.phpt -crlf
-/ext/standard/tests/strings/strrchr_variation7.phpt -crlf
-/ext/standard/tests/strings/str_replace.phpt -crlf
-/ext/standard/tests/strings/strrev_variation3.phpt -crlf
-/ext/standard/tests/strings/strrev_variation4.phpt -crlf
-/ext/standard/tests/strings/strripos_variation1.phpt -crlf
-/ext/standard/tests/strings/strripos_variation2.phpt -crlf
-/ext/standard/tests/strings/strripos_variation3.phpt -crlf
-/ext/standard/tests/strings/strripos_variation4.phpt -crlf
-/ext/standard/tests/strings/strripos_variation5.phpt -crlf
-/ext/standard/tests/strings/strrpos_variation1.phpt -crlf
-/ext/standard/tests/strings/strrpos_variation2.phpt -crlf
-/ext/standard/tests/strings/strrpos_variation3.phpt -crlf
+/ext/standard/tests/strings/stristr_error.phpt -crlf
+/ext/standard/tests/strings/strnatcasecmp_basic.phpt -crlf
+/ext/standard/tests/strings/strncasecmp_variation6.phpt -crlf
+/ext/standard/tests/strings/strncasecmp_variation7.phpt -crlf
+/ext/standard/tests/strings/strncasecmp_variation8.phpt -crlf
+/ext/standard/tests/strings/strrchr_error.phpt -crlf
+/ext/standard/tests/strings/strrchr.phpt -crlf
+/ext/standard/tests/strings/strrchr_variation11.phpt -crlf
+/ext/standard/tests/strings/strrpos_error.phpt -crlf
/ext/standard/tests/strings/strrpos_variation4.phpt -crlf
-/ext/standard/tests/strings/strrpos_variation5.phpt -crlf
-/ext/standard/tests/strings/strrpos_variation6.phpt -crlf
-/ext/standard/tests/strings/strspn_variation5.phpt -crlf
-/ext/standard/tests/strings/strspn_variation6.phpt -crlf
-/ext/standard/tests/strings/strspn_variation7.phpt -crlf
-/ext/standard/tests/strings/strspn_variation8.phpt -crlf
-/ext/standard/tests/strings/strstr.phpt -crlf
-/ext/standard/tests/strings/strtok_variation1.phpt -crlf
-/ext/standard/tests/strings/strtok_variation3.phpt -crlf
-/ext/standard/tests/strings/strtr_variation1.phpt -crlf
-/ext/standard/tests/strings/strtr_variation2.phpt -crlf
-/ext/standard/tests/strings/str_word_count.phpt -crlf
-/ext/standard/tests/strings/trim1.phpt -crlf
-/ext/standard/tests/strings/ucfirst.phpt -crlf
-/ext/standard/tests/strings/vfprintf_variation10.phpt -crlf
+/ext/standard/tests/strings/strrpos_variation8.phpt -crlf
+/ext/standard/tests/strings/strstr2.phpt -crlf
+/ext/standard/tests/strings/strtok_error.phpt -crlf
+/ext/standard/tests/strings/strtok_variation2.phpt -crlf
+/ext/standard/tests/strings/strtolower-win32.phpt -crlf
+/ext/standard/tests/strings/substr_compare.phpt -crlf
+/ext/standard/tests/strings/ucwords_variation1.phpt -crlf
+/ext/standard/tests/strings/unpack.phpt -crlf
+/ext/standard/tests/strings/vfprintf_basic7_64bit.phpt -crlf
+/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt -crlf
+/ext/standard/tests/strings/vfprintf_variation12_64bit.phpt -crlf
/ext/standard/tests/strings/vfprintf_variation12.phpt -crlf
-/ext/standard/tests/strings/vfprintf_variation16.phpt -crlf
-/ext/standard/tests/strings/vfprintf_variation18.phpt -crlf
-/ext/standard/tests/strings/vfprintf_variation4.phpt -crlf
-/ext/standard/tests/strings/vfprintf_variation6.phpt -crlf
+/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt -crlf
/ext/standard/tests/strings/vfprintf_variation7.phpt -crlf
-/ext/standard/tests/strings/vfprintf_variation8.phpt -crlf
+/ext/standard/tests/strings/vprintf_basic2.phpt -crlf
+/ext/standard/tests/strings/vprintf_basic7_64bit.phpt -crlf
/ext/standard/tests/strings/vprintf_variation10.phpt -crlf
-/ext/standard/tests/strings/vprintf_variation12.phpt -crlf
-/ext/standard/tests/strings/vprintf_variation14.phpt -crlf
-/ext/standard/tests/strings/vprintf_variation18.phpt -crlf
+/ext/standard/tests/strings/vprintf_variation14_64bit.phpt -crlf
+/ext/standard/tests/strings/vprintf_variation17.phpt -crlf
/ext/standard/tests/strings/vprintf_variation4.phpt -crlf
-/ext/standard/tests/strings/vprintf_variation6.phpt -crlf
-/ext/standard/tests/strings/vprintf_variation7.phpt -crlf
-/ext/standard/tests/strings/vprintf_variation8.phpt -crlf
-/ext/standard/tests/strings/vsprintf_variation10.phpt -crlf
-/ext/standard/tests/strings/vsprintf_variation12.phpt -crlf
-/ext/standard/tests/strings/vsprintf_variation14.phpt -crlf
-/ext/standard/tests/strings/vsprintf_variation16.phpt -crlf
-/ext/standard/tests/strings/vsprintf_variation4.phpt -crlf
-/ext/standard/tests/strings/vsprintf_variation6.phpt -crlf
+/ext/standard/tests/strings/vsprintf_basic4.phpt -crlf
+/ext/standard/tests/strings/vsprintf_basic8.phpt -crlf
+/ext/standard/tests/strings/vsprintf_variation12_64bit.phpt -crlf
+/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt -crlf
+/ext/standard/tests/strings/vsprintf_variation15_64bit.phpt -crlf
+/ext/standard/tests/strings/vsprintf_variation17.phpt -crlf
+/ext/standard/tests/strings/vsprintf_variation4_64bit.phpt -crlf
/ext/standard/tests/strings/vsprintf_variation7.phpt -crlf
-/ext/standard/tests/strings/vsprintf_variation8.phpt -crlf
/ext/standard/tests/strings/wordwrap.phpt -crlf
-/ext/tidy/tests/010.phpt -crlf
-/ext/tidy/tests/012.phpt -crlf
-/ext/tidy/tests/025.phpt -crlf
-/ext/tidy/tests/030.phpt -crlf
+/ext/standard/tests/strings/wordwrap_variation5.phpt -crlf
+/ext/standard/tests/url/rawurldecode_variation_001.phpt -crlf
+/ext/tidy/tests/009.phpt -crlf
+/ext/tidy/tests/013.phpt -crlf
+/ext/tidy/tests/021.phpt -crlf
+/ext/tidy/tests/tidy_error.phpt -crlf
+/ext/tokenizer/tests/002.phpt -crlf
/ext/tokenizer/tests/bug26463.phpt -crlf
+/ext/tokenizer/tests/token_get_all_error.phpt -crlf
+/ext/tokenizer/tests/token_get_all_variation11.phpt -crlf
/ext/tokenizer/tests/token_get_all_variation12.phpt -crlf
/ext/tokenizer/tests/token_get_all_variation13.phpt -crlf
/ext/tokenizer/tests/token_get_all_variation14.phpt -crlf
/ext/tokenizer/tests/token_get_all_variation15.phpt -crlf
-/ext/tokenizer/tests/token_get_all_variation16.phpt -crlf
-/ext/tokenizer/tests/token_get_all_variation17.phpt -crlf
/ext/tokenizer/tests/token_get_all_variation18.phpt -crlf
/ext/tokenizer/tests/token_get_all_variation19.phpt -crlf
-/ext/tokenizer/tests/token_get_all_variation4.phpt -crlf
+/ext/tokenizer/tests/token_get_all_variation1.phpt -crlf
+/ext/tokenizer/tests/token_get_all_variation2.phpt -crlf
+/ext/tokenizer/tests/token_get_all_variation3.phpt -crlf
/ext/tokenizer/tests/token_get_all_variation5.phpt -crlf
-/ext/tokenizer/tests/token_get_all_variation6.phpt -crlf
-/ext/tokenizer/tests/token_get_all_variation7.phpt -crlf
/ext/tokenizer/tests/token_get_all_variation8.phpt -crlf
-/ext/tokenizer/tests/token_get_all_variation9.phpt -crlf
-/ext/xml/tests/bug26614_libxml.phpt -crlf
-/ext/xmlwriter/tests/004.phpt -crlf
-/ext/xmlwriter/tests/OO_004.phpt -crlf
-/ext/zlib/tests/005.phpt -crlf
-/ext/zlib/tests/gzfile_basic2.phpt -crlf
-/ext/zlib/tests/gzfile_basic.phpt -crlf
-/ext/zlib/tests/gzfilegzreadfile.phpt -crlf
-/ext/zlib/tests/readgzfile_basic2.phpt -crlf
-/ext/zlib/tests/readgzfile_basic.phpt -crlf
-/sapi/cli/tests/014.phpt -crlf
-/tests/run-test/test010.phpt -crlf
-/Zend/tests/bug35655.phpt -crlf
-/Zend/tests/bug48930.phpt -crlf
-/Zend/tests/bug61095.phpt -crlf
-/Zend/tests/heredoc_017.phpt -crlf
-/Zend/tests/heredoc_018.phpt -crlf
-/Zend/tests/nowdoc_013.phpt -crlf
-/Zend/tests/nowdoc_014.phpt -crlf
-/Zend/tests/nowdoc_015.phpt -crlf
+/ext/xml/tests/bug32001b.phpt -crlf
+/ext/xmlwriter/tests/OO_003.phpt -crlf
+/ext/xmlwriter/tests/xmlwriter_write_attribute_ns_error_001.phpt -crlf
+/ext/zlib/tests/008.phpt -crlf
+/ext/zlib/tests/gzopen_variation4.phpt -crlf
+/ext/zlib/tests/gzrewind_error.phpt -crlf
+/ext/zlib/tests/readgzfile_variation7.phpt -crlf
+/ext/zlib/tests/readgzfile_variation8.phpt -crlf
+/ext/zlib/tests/zlib_scheme_stat_basic.phpt -crlf
+/sapi/cli/tests/006.phpt -crlf
+/tests/run-test/test009.phpt -crlf
+/Zend/tests/012.phpt -crlf
+/Zend/tests/bug28072.phpt -crlf
+/Zend/tests/bug38624.phpt -crlf
+/Zend/tests/bug40784.phpt -crlf
+/Zend/tests/bug43053.phpt -crlf
+/Zend/tests/bug51176.phpt -crlf
+/Zend/tests/each_003.phpt -crlf
+/Zend/tests/errmsg_006.phpt -crlf
diff --git a/EXTENSIONS b/EXTENSIONS
index 2fa8052..5308582 100644
--- a/EXTENSIONS
+++ b/EXTENSIONS
@@ -497,8 +497,8 @@ STATUS: Working
SINCE: 4.0.3
-------------------------------------------------------------------------------
EXTENSION: snmp
-PRIMARY MAINTAINER: Rasmus Lerdorf <rasmus@php.net>, Pierre-Alain Joye <pajoye@php.net>
-MAINTENANCE: Odd Fixes
+PRIMARY MAINTAINER: Boris Lytochkin <lytboris@php.net>, Rasmus Lerdorf <rasmus@php.net>, Pierre-Alain Joye <pajoye@php.net>
+MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: sockets
diff --git a/Makefile.global b/Makefile.global
index 8dad0e4..b30c318 100644
--- a/Makefile.global
+++ b/Makefile.global
@@ -13,6 +13,8 @@ all: $(all_targets)
build-modules: $(PHP_MODULES) $(PHP_ZEND_EX)
+build-binaries: $(PHP_BINARIES)
+
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 $@
-@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1
@@ -35,6 +37,8 @@ install-sapi: $(OVERALL_TARGET)
fi
@$(INSTALL_IT)
+install-binaries: build-binaries $(install_binary_targets)
+
install-modules: build-modules
@test -d modules && \
$(mkinstalldirs) $(INSTALL_ROOT)$(EXTENSION_DIR)
@@ -79,7 +83,7 @@ PHP_TEST_SHARED_EXTENSIONS = ` \
. $$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\ ]*='
+PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*='
test: all
-@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
diff --git a/NEWS b/NEWS
index 0cabd97..05cc254 100644
--- a/NEWS
+++ b/NEWS
@@ -1,58 +1,56 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-?? ??? 2012, PHP 5.3.12
+?? ??? 2012, PHP 5.4.1 RC1
+
+- CLI Server:
+ . Fixed bug #61461 (missing checks around malloc() calls). (Ilia)
+ . Implemented FR #60850 (Built in web server does not set
+ $_SERVER['SCRIPT_FILENAME'] when using router). (Laruence)
+ . "Connection: close" instead of "Connection: closed" (Gustavo)
- JSON
. Fixed bug #61537 (json_encode() incorrectly truncates/discards
information). (Adam)
?? ??? 2012, PHP 5.3.11
-- Iconv extension:
- . Fixed a bug that iconv extension fails to link to the correct library
- when another extension makes use of a library that links to the iconv
- library. See https://bugs.gentoo.org/show_bug.cgi?id=364139 for detail.
- (Moriyoshi)
(merge after 5.3.11 release)
- Core:
- . Fixed bug #61605 (header_remove() does not remove all headers).
- (Laruence)
- . Fixed bug #61541 (Segfault when using ob_* in output_callback).
- (reeze.xia@gmail.com)
- . Fixed bug #61273 (call_user_func_array with more than 16333 arguments
+ . Fixed bug #61660 (bin2hex(hex2bin($data)) != $data). (Nikita Popov)
+ . Fixed bug #61650 (ini parser crashes when using ${xxxx} ini variables
+ (without apache2)). (Laruence)
+ . Fixed bug #61605 (header_remove() does not remove all headers). (Laruence)
+ . Fixed bug #61374 (html_entity_decode tries to decode code points that don't
+ exist in ISO-8859-1). (Gustavo)
+ . Fixed bug #61273 (call_user_func_array with more than 16333 arguments
leaks / crashes). (Laruence)
+ . Fixed bug #61225 (Incorrect lexing of 0b00*+<NUM>). (Pierrick)
. Fixed bug #61165 (Segfault - strip_tags()). (Laruence)
- . Improved max_input_vars directive to check nested variables (Dmitry).
- . Fixed bug #61095 (Incorect lexing of 0x00*+<NUM>). (Etienne)
+ . Fixed bug #61106 (Segfault when using header_register_callback). (Nikita
+ Popov)
. Fixed bug #61087 (Memory leak in parse_ini_file when specifying
invalid scanner mode). (Nikic, Laruence)
. Fixed bug #61072 (Memory leak when restoring an exception handler).
(Nikic, Laruence)
. Fixed bug #61058 (array_fill leaks if start index is PHP_INT_MAX).
(Laruence)
- . Fixed bug #61043 (Regression in magic_quotes_gpc fix for CVE-2012-0831).
- (Ondřej Surý)
- . Fixed bug #61000 (Exceeding max nesting level doesn't delete numerical
+ . Fixed bug #61052 (Missing error check in trait 'insteadof' clause). (Stefan)
+ . Fixed bug #61011 (Crash when an exception is thrown by __autoload
+ accessing a static property). (Laruence)
+ . Fixed bug #61000 (Exceeding max nesting level doesn't delete numerical
vars). (Laruence)
- . Fixed bug #60895 (Possible invalid handler usage in windows random
- functions). (Pierre)
- . Fixed bug #60825 (Segfault when running symfony 2 tests).
- (Dmitry, Laruence)
+ . Fixed bug #60978 (exit code incorrect). (Laruence)
+ . Fixed bug #60911 (Confusing error message when extending traits). (Stefan)
. Fixed bug #60801 (strpbrk() mishandles NUL byte). (Adam)
+ . Fixed bug #60717 (Order of traits in use statement can cause a fatal
+ error). (Stefan)
+ . Fixed bug #60573 (type hinting with "self" keyword causes weird errors).
+ (Laruence)
. Fixed bug #60569 (Nullbyte truncates Exception $message). (Ilia)
- . Fixed bug #60227 (header() cannot detect the multi-line header with CR).
- (rui, Gustavo)
- . Fixed bug #60222 (time_nanosleep() does validate input params). (Ilia)
- . Fixed bug #54374 (Insufficient validating of upload name leading to
- corrupted $_FILES indices). (CVE-2012-1172). (Stas, lekensteyn at
- gmail dot com, Pierre)
. Fixed bug #52719 (array_walk_recursive crashes if third param of the
function is by reference). (Nikita Popov)
- . Fixed bug #51860 (Include fails with toplevel symlink to /). (Dmitry)
-
-- DOM
- . Added debug info handler to DOM objects. (Gustavo, Joey Smith)
+ . Improve performance of set_exception_handler while doing reset (Laruence)
- FPM
. Fixed bug #61430 (Transposed memset() params in sapi/fpm/fpm/fpm_shm.c).
@@ -65,59 +63,34 @@ PHP NEWS
- Installation
. Fixed bug #61172 (Add Apache 2.4 support). (Chris Jones)
-- Fileinfo
- . Fixed bug #61173 (Unable to detect error from finfo constructor). (Gustavo)
-
-- Firebird Database extension (ibase):
- . Fixed bug #60802 (ibase_trans() gives segfault when passing params).
+- Intl:
+ . Fixed bug #61487 (Incorrent bounds checking in grapheme_strpos).
+ (Stas)
- Libxml:
. Fixed bug #61617 (Libxml tests failed(ht is already destroyed)).
(Laruence)
- . Fixed bug #61367 (open_basedir bypass using libxml RSHUTDOWN).
- (Tim Starling)
+
+- mbstring:
+ . MFH mb_ereg_replace_callback() for security enhancements. (Rui)
- mysqli
. Fixed bug #61003 (mysql_stat() require a valid connection). (Johannes).
-- PDO_mysql
- . Fixed bug #61207 (PDO::nextRowset() after a multi-statement query doesn't
- always work). (Johannes)
- . Fixed bug #61194 (PDO should export compression flag with myslqnd).
+- mysqlnd
+ . Fixed bug #60948 (mysqlnd FTBFS when -Wformat-security is enabled).
(Johannes)
-- PDO_odbc
- . Fixed bug #61212 (PDO ODBC Segfaults on SQL_SUCESS_WITH_INFO). (Ilia)
-
-- PDO_pgsql
- . Fixed bug #61267 (pdo_pgsql's PDO::exec() returns the number of SELECTed
- rows on postgresql >= 9). (ben dot pineau at gmail dot com)
-
-- PDO_Sqlite extension:
- . Add createCollation support. (Damien)
-
-- Phar:
- . Fixed bug #61184 (Phar::webPhar() generates headers with trailing NUL
- bytes). (Nikic)
-
-- PHP-FPM SAPI:
- . Fixed bug #60811 (php-fpm compilation problem). (rasmus)
-
- Readline:
. Fixed bug #61088 (Memory leak in readline_callback_handler_install).
(Nikic, Laruence)
- . Add open_basedir checks to readline_write_history and readline_read_history.
- (Rasmus, reported by Mateusz Goik)
-- Reflection:
- . Fixed bug #61388 (ReflectionObject:getProperties() issues invalid reads
- when get_properties returns a hash table with (inaccessible) dynamic
- numeric properties). (Gustavo)
- . Fixed bug #60968 (Late static binding doesn't work with
- ReflectionMethod::invokeArgs()). (Laruence)
+- Session
+ . Fixed bug #60634 (Segmentation fault when trying to die() in
+ SessionHandler::write()). (Ilia)
- SOAP
- . Fixed basic HTTP authentication for WSDL sub requests. (Dmitry)
+ . Fixed bug #61423 (gzip compression fails). (Ilia)
. Fixed bug #60887 (SoapClient ignores user_agent option and sends no
User-Agent header). (carloschilazo at gmail dot com)
. Fixed bug #60842, #51775 (Chunked response parsing error when
@@ -125,48 +98,482 @@ PHP NEWS
. Fixed bug #49853 (Soap Client stream context header option ignored).
(Dmitry)
-- SPL
- . Fixed memory leak when calling SplFileInfo's constructor twice. (Felipe)
- . Fixed bug #61418 (Segmentation fault when DirectoryIterator's or
- FilesystemIterator's iterators are requested more than once without
- having had its dtor callback called in between). (Gustavo)
- . Fixed bug #61347 (inconsistent isset behavior of Arrayobject). (Laruence)
- . Fixed bug #61326 (ArrayObject comparison). (Gustavo)
+- PDO
+ . Fixed bug #61292 (Segfault while calling a method on an overloaded PDO
+ object). (Laruence)
-- SQLite3 extension:
- . Add createCollation() method. (Brad Dewar)
+- PDO_mysql
+ . Fixed bug #61207 (PDO::nextRowset() after a multi-statement query doesn't
+ always work). (Johannes)
+ . Fixed bug #61194 (PDO should export compression flag with myslqnd).
+ (Johannes)
-- Session:
- . Fixed bug #60860 (session.save_handler=user without defined function core
- dumps). (Felipe)
- . Fixed bug #60634 (Segmentation fault when trying to die() in
- SessionHandler::write()). (Ilia)
+- PDO_odbc
+ . Fixed bug #61212 (PDO ODBC Segfaults on SQL_SUCESS_WITH_INFO). (Ilia)
-- Streams:
- . Fixed bug #61371 (stream_context_create() causes memory leaks on use
- streams_socket_create). (Gustavo)
- . Fixed bug #61253 (Wrappers opened with errors concurrency problem on ZTS).
+- Phar
+ . Fixed bug #61184 (Phar::webPhar() generates headers with trailing NUL
+ bytes). (Nikita Popov)
+
+- Reflection:
+ . Fixed bug #60968 (Late static binding doesn't work with
+ ReflectionMethod::invokeArgs()). (Laruence)
+
+- SPL:
+ . Fixed bug #61453 (SplObjectStorage does not identify objects correctly).
(Gustavo)
- . Fixed bug #61115 (stream related segfault on fatal error in
- php_stream_context_link). (Gustavo)
- . Fixed bug #60817 (stream_get_line() reads from stream even when there is
- already sufficient data buffered). stream_get_line() now behaves more like
- fgets(), as is documented. (Gustavo)
- . Further fix for bug #60455 (stream_get_line misbehaves if EOF is not
- detected together with the last read). (Gustavo)
- . Fixed bug #60106 (stream_socket_server silently truncates long unix
- socket paths). (Ilia)
+ . Fixed bug #61347 (inconsistent isset behavior of Arrayobject). (Laruence)
-- Tidy:
- . Fixed bug #54682 (tidy null pointer dereference). (Tony, David Soria Parra)
+- Standard:
+ . Fixed memory leak in substr_replace. (Pierrick)
+ . Make max_file_uploads ini directive settable outside of php.ini (Rasmus)
+ . Fixed bug #61409 (Bad formatting on phpinfo()). (Jakub Vrana)
+ . Fixed bug #60222 (time_nanosleep() does validate input params). (Ilia)
+ . Fixed bug #60106 (stream_socket_server silently truncates long unix socket
+ paths). (Ilia)
- XMLRPC:
. Fixed bug #61264 (xmlrpc_parse_method_descriptions leaks temporary
variable). (Nikita Popov)
- . Fixed bug #61097 (Memory leak in xmlrpc functions copying zvals). (Nikic)
+ . Fixed bug #61097 (Memory leak in xmlrpc functions copying zvals). (Nikita
+ Popov)
- Zlib:
- . Fixed bug #61139 (gzopen leaks when specifying invalid mode). (Nikic)
+ . Fixed bug #61306 (initialization of global inappropriate for ZTS). (Gustavo)
+ . Fixed bug #61287 (A particular string fails to decompress). (Mike)
+ . Fixed bug #61139 (gzopen leaks when specifying invalid mode). (Nikita Popov)
+
+01 Mar 2012, PHP 5.4.0
+
+- Installation:
+ . autoconf 2.59+ is now supported (and required) for generating the
+ configure script with ./buildconf. Autoconf 2.60+ is desirable
+ otherwise the configure help order may be incorrect. (Rasmus, Chris Jones)
+
+- Removed legacy features:
+ . break/continue $var syntax. (Dmitry)
+ . Safe mode and all related php.ini options. (Kalle)
+ . register_globals and register_long_arrays php.ini options. (Kalle)
+ . import_request_variables(). (Kalle)
+ . allow_call_time_pass_reference. (Pierrick)
+ . define_syslog_variables php.ini option and its associated function. (Kalle)
+ . highlight.bg php.ini option. (Kalle)
+ . safe_mode, safe_mode_gid, safe_mode_include_dir,
+ safe_mode_exec_dir, safe_mode_allowed_env_vars and
+ safe_mode_protected_env_vars php.ini options.
+ . zend.ze1_compatibility_mode php.ini option.
+ . Session bug compatibility mode (session.bug_compat_42 and
+ session.bug_compat_warn php.ini options). (Kalle)
+ . session_is_registered(), session_register() and session_unregister()
+ functions. (Kalle)
+ . y2k_compliance php.ini option. (Kalle)
+ . magic_quotes_gpc, magic_quotes_runtime and magic_quotes_sybase
+ php.ini options. get_magic_quotes_gpc, get_magic_quotes_runtime are kept
+ but always return false, set_magic_quotes_runtime raises an
+ E_CORE_ERROR. (Pierrick, Pierre)
+ . Removed support for putenv("TZ=..") for setting the timezone. (Derick)
+ . Removed the timezone guessing algorithm in case the timezone isn't set with
+ date.timezone or date_default_timezone_set(). Instead of a guessed
+ timezone, "UTC" is now used instead. (Derick)
+
+- Moved extensions to PECL:
+ . ext/sqlite. (Note: the ext/sqlite3 and ext/pdo_sqlite extensions are
+ not affected) (Johannes)
+
+- General improvements:
+ . Added short array syntax support ([1,2,3]), see UPGRADING guide for full
+ details. (rsky0711 at gmail . com, sebastian.deutsch at 9elements . com,
+ Pierre)
+ . Added binary number format (0b001010). (Jonah dot Harris at gmail dot com)
+ . Added support for Class::{expr}() syntax (Pierrick)
+ . Added multibyte support by default. Previously PHP had to be compiled
+ with --enable-zend-multibyte. Now it can be enabled or disabled through
+ the zend.multibyte directive in php.ini. (Dmitry)
+ . Removed compile time dependency from ext/mbstring (Dmitry)
+ . Added support for Traits. (Stefan, with fixes by Dmitry and Laruence)
+ . Added closure $this support back. (Stas)
+ . Added array dereferencing support. (Felipe)
+ . Added callable typehint. (Hannes)
+ . Added indirect method call through array. FR #47160. (Felipe)
+ . Added DTrace support. (David Soria Parra)
+ . Added class member access on instantiation (e.g. (new foo)->bar()) support.
+ (Felipe)
+ . <?= is now always available regardless of the short_open_tag setting. (Rasmus)
+ . Implemented Zend Signal Handling (configurable option --enable-zend-signals,
+ off by default). (Lucas Nealan, Arnaud Le Blanc, Brian Shire, Ilia)
+ . Improved output layer, see README.NEW-OUTPUT-API for internals. (Mike)
+ . Improved UNIX build system to allow building multiple PHP binary SAPIs and
+ one SAPI module the same time. FR #53271, FR #52419. (Jani)
+ . Implemented closure rebinding as parameter to bindTo. (Gustavo Lopes)
+ . Improved the warning message of incompatible arguments. (Laruence)
+ . Improved ternary operator performance when returning arrays. (Arnaud, Dmitry)
+ . Changed error handlers to only generate docref links when the docref_root
+ php.ini setting is not empty. (Derick)
+ . Changed silent conversion of array to string to produce a notice. (Patrick)
+ . Changed default encoding from ISO-8859-1 to UTF-8 when not specified in
+ htmlspecialchars and htmlentities. (Rasmus)
+ . Changed casting of null/''/false into an Object when adding a property
+ from E_STRICT into a warning. (Scott)
+ . Changed E_ALL to include E_STRICT. (Stas)
+ . Disabled Windows CRT warning by default, can be enabled again using the
+ php.ini directive windows_show_crt_warnings. (Pierre)
+ . Fixed bug #55378: Binary number literal returns float number though its
+ value is small enough. (Derick)
+
+- Improved Zend Engine memory usage: (Dmitry)
+ . Improved parse error messages. (Felipe)
+ . Replaced zend_function.pass_rest_by_reference by
+ ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags.
+ . Replaced zend_function.return_reference by ZEND_ACC_RETURN_REFERENCE
+ in zend_function.fn_flags.
+ . Removed zend_arg_info.required_num_args as it was only needed for internal
+ functions. Now the first arg_info for internal functions (which has special
+ meaning) is represented by the zend_internal_function_info structure.
+ . Moved zend_op_array.size, size_var, size_literal, current_brk_cont,
+ backpatch_count into CG(context) as they are used only during compilation.
+ . Moved zend_op_array.start_op into EG(start_op) as it's used only for
+ 'interactive' execution of a single top-level op-array.
+ . Replaced zend_op_array.done_pass_two by ZEND_ACC_DONE_PASS_TWO in
+ zend_op_array.fn_flags.
+ . op_array.vars array is trimmed (reallocated) during pass_two.
+ . Replaced zend_class_entry.constants_updated by ZEND_ACC_CONSTANTS_UPDATED
+ in zend_class_entry.ce_flags.
+ . Reduced the size of zend_class_entry by sharing the same memory space
+ by different information for internal and user classes.
+ See zend_class_entry.info union.
+ . Reduced size of temp_variable.
+
+- Improved Zend Engine - performance tweaks and optimizations: (Dmitry)
+ . Inlined most probable code-paths for arithmetic operations directly into
+ executor.
+ . Eliminated unnecessary iterations during request startup/shutdown.
+ . Changed $GLOBALS into a JIT autoglobal, so it's initialized only if used.
+ (this may affect opcode caches!)
+ . Improved performance of @ (silence) operator.
+ . Simplified string offset reading. Given $str="abc" then $str[1][0] is now
+ a legal construct.
+ . Added caches to eliminate repeatable run-time bindings of functions,
+ classes, constants, methods and properties.
+ . Added concept of interned strings. All strings constants known at compile
+ time are allocated in a single copy and never changed.
+ . ZEND_RECV now always has IS_CV as its result.
+ . ZEND_CATCH now has to be used only with constant class names.
+ . ZEND_FETCH_DIM_? may fetch array and dimension operands in different order.
+ . Simplified ZEND_FETCH_*_R operations. They can't be used with the
+ EXT_TYPE_UNUSED flag any more. This is a very rare and useless case.
+ ZEND_FREE might be required after them instead.
+ . Split ZEND_RETURN into two new instructions ZEND_RETURN and
+ ZEND_RETURN_BY_REF.
+ . Optimized access to global constants using values with pre-calculated
+ hash_values from the literals table.
+ . Optimized access to static properties using executor specialization.
+ A constant class name may be used as a direct operand of ZEND_FETCH_*
+ instruction without previous ZEND_FETCH_CLASS.
+ . zend_stack and zend_ptr_stack allocation is delayed until actual usage.
+
+- Other improvements to Zend Engine:
+ . Added an optimization which saves memory and emalloc/efree calls for empty
+ HashTables. (Stas, Dmitry)
+ . Added ability to reset user opcode handlers (Yoram).
+ . Changed the structure of op_array.opcodes. The constant values are moved from
+ opcode operands into a separate literal table. (Dmitry)
+ . Fixed (disabled) inline-caching for ZEND_OVERLOADED_FUNCTION methods.
+ (Dmitry)
+
+- Improved core functions:
+ . Enforce an extended class' __construct arguments to match the
+ abstract constructor in the base class.
+ . Disallow reusing superglobal names as parameter names.
+ . Added optional argument to debug_backtrace() and debug_print_backtrace()
+ to limit the amount of stack frames returned. (Sebastian, Patrick)
+ . Added hex2bin() function. (Scott)
+ . number_format() no longer truncates multibyte decimal points and thousand
+ separators to the first byte. FR #53457. (Adam)
+ . Added support for object references in recursive serialize() calls.
+ FR #36424. (Mike)
+ . Added support for SORT_NATURAL and SORT_FLAG_CASE in array
+ sort functions (sort, rsort, ksort, krsort, asort, arsort and
+ array_multisort). FR#55158 (Arpad)
+ . Added stream metadata API support and stream_metadata() stream class
+ handler. (Stas)
+ . User wrappers can now define a stream_truncate() method that responds
+ to truncation, e.g. through ftruncate(). FR #53888. (Gustavo)
+ . Improved unserialize() performance.
+ (galaxy dot mipt at gmail dot com, Kalle)
+ . Changed array_combine() to return empty array instead of FALSE when both
+ parameter arrays are empty. FR #34857. (joel.perras@gmail.com)
+ . Fixed bug #61095 (Incorect lexing of 0x00*+<NUM>). (Etienne)
+ . Fixed bug #60965 (Buffer overflow on htmlspecialchars/entities with
+ $double=false). (Gustavo)
+ . Fixed bug #60895 (Possible invalid handler usage in windows random
+ functions). (Pierre)
+ . Fixed bug #60879 (unserialize() Does not invoke __wakeup() on object).
+ (Pierre, Steve)
+ . Fixed bug #60825 (Segfault when running symfony 2 tests).
+ (Dmitry, Laruence)
+ . Fixed bug #60627 (httpd.worker segfault on startup with php_value).
+ . Fixed bug #60613 (Segmentation fault with $cls->{expr}() syntax). (Dmitry)
+ . Fixed bug #60611 (Segmentation fault with Cls::{expr}() syntax). (Laruence)
+ (Laruence)
+ . Fixed bug #60558 (Invalid read and writes). (Laruence)
+ . Fixed bug #60444 (Segmentation fault with include & class extending).
+ (Laruence, Dmitry).
+ . Fixed bug #60362 (non-existent sub-sub keys should not have values).
+ (Laruence, alan_k, Stas)
+ . Fixed bug #60350 (No string escape code for ESC (ascii 27), normally \e).
+ (php at mickweiss dot com)
+ . Fixed bug #60321 (ob_get_status(true) no longer returns an array when
+ buffer is empty). (Pierrick)
+ . Fixed bug #60282 (Segfault when using ob_gzhandler() with open buffers).
+ (Laruence)
+ . Fixed bug #60240 (invalid read/writes when unserializing specially crafted
+ strings). (Mike)
+ . Fixed bug #60227 (header() cannot detect the multi-line header with
+ CR(0x0D)). (rui)
+ . Fixed bug #60174 (Notice when array in method prototype error).
+ (Laruence)
+ . Fixed bug #60169 (Conjunction of ternary and list crashes PHP).
+ (Laruence)
+ . Fixed bug #60038 (SIGALRM cause segfault in php_error_cb). (Laruence)
+ (klightspeed at netspace dot net dot au)
+ . Fixed bug #55871 (Interruption in substr_replace()). (Stas)
+ . Fixed bug #55801 (Behavior of unserialize has changed). (Mike)
+ . Fixed bug #55758 (Digest Authenticate missed in 5.4) . (Laruence)
+ . Fixed bug #55748 (multiple NULL Pointer Dereference with zend_strndup())
+ (CVE-2011-4153). (Stas)
+ . Fixed bug #55124 (recursive mkdir fails with current (dot) directory in path).
+ (Pierre)
+ . Fixed bug #55084 (Function registered by header_register_callback is
+ called only once per process). (Hannes)
+ . Implement FR #54514 (Get php binary path during script execution).
+ (Laruence)
+ . Fixed bug #52211 (iconv() returns part of string on error). (Felipe)
+ . Fixed bug #51860 (Include fails with toplevel symlink to /). (Dmitry)
+
+- Improved generic SAPI support:
+ . Added $_SERVER['REQUEST_TIME_FLOAT'] to include microsecond precision.
+ (Patrick)
+ . Added header_register_callback() which is invoked immediately
+ prior to the sending of headers and after default headers have
+ been added. (Scott)
+ . Added http_response_code() function. FR #52555. (Paul Dragoonis, Kalle)
+ . Fixed bug #55500 (Corrupted $_FILES indices lead to security concern).
+ (CVE-2012-1172). (Stas)
+ . Fixed bug #54374 (Insufficient validating of upload name leading to
+ corrupted $_FILES indices). (CVE-2012-1172). (Stas, lekensteyn at gmail dot com)
+
+- Improved CLI SAPI:
+ . Added built-in web server that is intended for testing purpose.
+ (Moriyoshi, Laruence, and fixes by Pierre, Derick, Arpad,
+ chobieee at gmail dot com)
+ . Added command line option --rz <name> which shows information of the
+ named Zend extension. (Johannes)
+ . Interactive readline shell improvements: (Johannes)
+ . Added "cli.pager" php.ini setting to set a pager for output.
+ . Added "cli.prompt" php.ini setting to configure the shell prompt.
+ . Added shortcut #inisetting=value to change php.ini settings at run-time.
+ . Changed shell not to terminate on fatal errors.
+ . Interactive shell works with shared readline extension. FR #53878.
+
+- Improved CGI/FastCGI SAPI: (Dmitry)
+ . Added apache compatible functions: apache_child_terminate(),
+ getallheaders(), apache_request_headers() and apache_response_headers()
+ . Improved performance of FastCGI request parsing.
+ . Fixed reinitialization of SAPI callbacks after php_module_startup().
+ (Dmitry)
+
+- Improved PHP-FPM SAPI:
+ . Removed EXPERIMENTAL flag. (fat)
+ . Fixed bug #60659 (FPM does not clear auth_user on request accept).
+ (bonbons at linux-vserver dot org)
+
+- Improved Litespeed SAPI:
+ . Fixed bug #55769 (Make Fails with "Missing Separator" error). (Adam)
+
+- Improved Date extension:
+ . Added the + modifier to parseFromFormat to allow trailing text in the
+ string to parse without throwing an error. (Stas, Derick)
+
+- Improved DBA extension:
+ . Added Tokyo Cabinet abstract DB support. (Michael Maclean)
+ . Added Berkeley DB 5 support. (Johannes, Chris Jones)
+
+- Improved DOM extension:
+ . Added the ability to pass options to loadHTML (Chregu, fxmulder at gmail dot com)
+
+- Improved filesystem functions:
+ . scandir() now accepts SCANDIR_SORT_NONE as a possible sorting_order value.
+ FR #53407. (Adam)
+
+- Improved HASH extension:
+ . Added Jenkins's one-at-a-time hash support. (Martin Jansen)
+ . Added FNV-1 hash support. (Michael Maclean)
+ . Made Adler32 algorithm faster. FR #53213. (zavasek at yandex dot ru)
+ . Removed Salsa10/Salsa20, which are actually stream ciphers (Mike)
+ . Fixed bug #60221 (Tiger hash output byte order) (Mike)
+
+- Improved intl extension:
+ . Added Spoofchecker class, allows checking for visibly confusable characters and
+ other security issues. (Scott)
+ . Added Transliterator class, allowing transliteration of strings.
+ (Gustavo)
+ . Added support for UTS #46. (Gustavo)
+ . Fixed build on Fedora 15 / Ubuntu 11. (Hannes)
+ . Fixed bug #55562 (grapheme_substr() returns false on big length). (Stas)
+
+- Improved JSON extension:
+ . Added new json_encode() option JSON_UNESCAPED_UNICODE. FR #53946.
+ (Alexander, Gwynne)
+ . Added JsonSerializable interface. (Sara)
+ . Added JSON_BIGINT_AS_STRING, extended json_decode() sig with $options.
+ (Sara)
+ . Added support for JSON_NUMERIC_CHECK option in json_encode() that converts
+ numeric strings to integers. (Ilia)
+ . Added new json_encode() option JSON_UNESCAPED_SLASHES. FR #49366. (Adam)
+ . Added new json_encode() option JSON_PRETTY_PRINT. FR #44331. (Adam)
+
+- Improved LDAP extension:
+ . Added paged results support. FR #42060. (ando@OpenLDAP.org,
+ iarenuno@eteo.mondragon.edu, jeanseb@au-fil-du.net, remy.saissy@gmail.com)
+
+- Improved mbstring extension:
+ . Added Shift_JIS/UTF-8 Emoji (pictograms) support. (Rui)
+ . Added JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004)
+ support. (Rui)
+ . Ill-formed UTF-8 check for security enhancements. (Rui)
+ . Added MacJapanese (Shift_JIS) and gb18030 encoding support. (Rui)
+ . Added encode/decode in hex format to mb_[en|de]code_numericentity(). (Rui)
+ . Added user JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004)
+ support. (Rui)
+ . Added the user defined area for CP936 and CP950 (Rui).
+ . Fixed bug #60306 (Characters lost while converting from cp936 to utf8).
+ (Laruence)
+
+- Improved MySQL extensions:
+ . MySQL: Deprecated mysql_list_dbs(). FR #50667. (Andrey)
+ . mysqlnd: Added named pipes support. FR #48082. (Andrey)
+ . MySQLi: Added iterator support in MySQLi. mysqli_result implements
+ Traversable. (Andrey, Johannes)
+ . PDO_mysql: Removed support for linking with MySQL client libraries older
+ than 4.1. (Johannes)
+ . ext/mysql, mysqli and pdo_mysql now use mysqlnd by default. (Johannes)
+ . Fixed bug #55473 (mysql_pconnect leaks file descriptors on reconnect).
+ (Andrey, Laruence)
+ . Fixed bug #55653 (PS crash with libmysql when binding same variable as
+ param and out). (Laruence)
+
+- Improved OpenSSL extension:
+ . Added AES support. FR #48632. (yonas dot y at gmail dot com, Pierre)
+ . Added no padding option to openssl_encrypt()/openssl_decrypt(). (Scott)
+ . Use php's implementation for Windows Crypto API in
+ openssl_random_pseudo_bytes. (Pierre)
+ . On error in openssl_random_pseudo_bytes() made sure we set strong result
+ to false. (Scott)
+ . Fixed possible attack in SSL sockets with SSL 3.0 / TLS 1.0.
+ CVE-2011-3389. (Scott)
+ . Fixed bug #61124 (Crash when decoding an invalid base64 encoded string).
+ (me at ktamura dot com, Scott)
+
+- Improved PDO:
+ . Fixed PDO objects binary incompatibility. (Dmitry)
+
+- PDO DBlib driver:
+ . Added nextRowset support.
+ . Fixed bug #50755 (PDO DBLIB Fails with OOM).
+
+- Improved PostgreSQL extension:
+ . Added support for "extra" parameter for PGNotify().
+ (r dot i dot k at free dot fr, Ilia)
+
+- Improved PCRE extension:
+ . Changed third parameter of preg_match_all() to optional. FR #53238. (Adam)
+
+- Improved Readline extension:
+ . Fixed bug #54450 (Enable callback support when built against libedit).
+ (fedora at famillecollet dot com, Hannes)
+
+- Improved Reflection extension:
+ . Added ReflectionClass::newInstanceWithoutConstructor() to create a new
+ instance of a class without invoking its constructor. FR #55490.
+ (Sebastian)
+ . Added ReflectionExtension::isTemporary() and
+ ReflectionExtension::isPersistent() methods. (Johannes)
+ . Added ReflectionZendExtension class. (Johannes)
+ . Added ReflectionClass::isCloneable(). (Felipe)
+
+- Improved Session extension:
+ . Expose session status via new function, session_status (FR #52982) (Arpad)
+ . Added support for object-oriented session handlers. (Arpad)
+ . Added support for storing upload progress feedback in session data. (Arnaud)
+ . Changed session.entropy_file to default to /dev/urandom or /dev/arandom if
+ either is present at compile time. (Rasmus)
+ . Fixed bug #60860 (session.save_handler=user without defined function core
+ dumps). (Felipe)
+ . Implement FR #60551 (session_set_save_handler should support a core's
+ session handler interface). (Arpad)
+ . Fixed bug #60640 (invalid return values). (Arpad)
+
+- Improved SNMP extension (Boris Lytochkin):
+ . Added OO API. FR #53594 (php-snmp rewrite).
+ . Sanitized return values of existing functions. Now it returns FALSE on
+ failure.
+ . Allow ~infinite OIDs in GET/GETNEXT/SET queries. Autochunk them to max_oids
+ upon request.
+ . Introducing unit tests for extension with ~full coverage.
+ . IPv6 support. (FR #42918)
+ . Way of representing OID value can now be changed when SNMP_VALUE_OBJECT
+ is used for value output mode. Use or'ed SNMP_VALUE_LIBRARY(default if
+ not specified) or SNMP_VALUE_PLAIN. (FR #54502)
+ . Fixed bug #60749 (SNMP module should not strip non-standard SNMP port
+ from hostname). (Boris Lytochkin)
+ . Fixed bug #60585 (php build fails with USE flag snmp when IPv6 support
+ is disabled). (Boris Lytochkin)
+ . Fixed bug #53862 (snmp_set_oid_output_format does not allow returning to default)
+ . Fixed bug #46065 (snmp_set_quick_print() persists between requests)
+ . Fixed bug #45893 (Snmp buffer limited to 2048 char)
+ . Fixed bug #44193 (snmp v3 noAuthNoPriv doesn't work)
+
+- Improved SOAP extension:
+ . Added new SoapClient option "keep_alive". FR #60329. (Pierrick)
+ . Fixed basic HTTP authentication for WSDL sub requests. (Dmitry)
+
+- Improved SPL extension:
+ . Added RegexIterator::getRegex() method. (Joshua Thijssen)
+ . Added SplObjectStorage::getHash() hook. (Etienne)
+ . Added CallbackFilterIterator and RecursiveCallbackFilterIterator. (Arnaud)
+ . Added missing class_uses(..) as pointed out by #55266 (Stefan)
+ . Immediately reject wrong usages of directories under Spl(Temp)FileObject
+ and friends. (Etienne, Pierre)
+ . FilesystemIterator, GlobIterator and (Recursive)DirectoryIterator now use
+ the default stream context. (Hannes)
+ . Fixed bug #60201 (SplFileObject::setCsvControl does not expose third
+ argument via Reflection). (Peter)
+ . Fixed bug #55287 (spl_classes() not includes CallbackFilter classes)
+ (sasezaki at gmail dot com, salathe)
+
+- Improved Sysvshm extension:
+ . Fixed bug #55750 (memory copy issue in sysvshm extension).
+ (Ilia, jeffhuang9999 at gmail dot com)
+
+- Improved Tidy extension:
+ . Fixed bug #54682 (Tidy::diagnose() NULL pointer dereference).
+ (Maksymilian Arciemowicz, Felipe)
+
+- Improved Tokenizer extension:
+ . Fixed bug #54089 (token_get_all with regards to __halt_compiler is
+ not binary safe). (Nikita Popov)
+
+- Improved XSL extension:
+ . Added XsltProcessor::setSecurityPrefs($options) and getSecurityPrefs() to
+ define forbidden operations within XSLT stylesheets, default is not to
+ enable write operations from XSLT. Bug #54446 (Chregu, Nicolas Gregoire)
+ . XSL doesn't stop transformation anymore, if a PHP function can't be called
+ (Christian)
+
+- Improved ZLIB extension:
+ . Re-implemented non-file related functionality. (Mike)
+ . Fixed bug #55544 (ob_gzhandler always conflicts with zlib.output_compression).
+ (Mike)
02 Feb 2012, PHP 5.3.10
@@ -277,8 +684,6 @@ PHP NEWS
for small images). (Florian)
- Intl:
- . Fixed bug #61487 (Incorrent bounds checking in grapheme_strpos).
- (Stas)
. Fixed bug #60192 (SegFault when Collator not constructed
properly). (Florian)
. Fixed memory leak in several Intl locale functions. (Felipe)
diff --git a/README.NEW-OUTPUT-API b/README.NEW-OUTPUT-API
new file mode 100644
index 0000000..7d9cc10
--- /dev/null
+++ b/README.NEW-OUTPUT-API
@@ -0,0 +1,142 @@
+$Id: README.NEW-OUTPUT-API 219039 2006-08-30 07:39:09Z mike $
+
+
+API adjustment to the old output control code:
+
+ Everything now resides beneath the php_output namespace,
+ and there's an API call for every output handler op.
+
+ Checking output control layers status:
+ // Using OG()
+ php_output_get_status(TSRMLS_C);
+
+ Starting the default output handler:
+ // php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC);
+ php_output_start_default(TSRMLS_C);
+
+ Starting an user handler by zval:
+ // php_start_ob_buffer(zhandler, chunk_size, erase TSRMLS_CC);
+ php_output_start_user(zhandler, chunk_size, flags TSRMLS_CC);
+
+ Starting an internal handler whithout context:
+ // php_ob_set_internal_handler(my_php_output_handler_func_t, buffer_size, "output handler name", erase TSRMLS_CC);
+ php_output_start_internal(handler_name, handler_name_len, my_php_output_handler_func_t, chunk_size, flags TSRMLS_CC);
+
+ Starting an internal handler with context:
+ // not possible with old API
+ php_output_handler *h;
+ h = php_output_handler_create_internal(handler_name, handler_name_len, my_php_output_handler_context_func_t, chunk_size, flags TSRMLS_CC);
+ php_output_handler_set_context(h, my_context, my_context_dtor);
+ php_output_handler_start(h TSRMLS_CC);
+
+ Testing whether a certain output handler has already been started:
+ // php_ob_handler_used("output handler name" TSRMLS_CC);
+ php_output_handler_started(handler_name, handler_name_len TSRMLS_CC);
+
+ Flushing one output buffer:
+ // php_ob_end_buffer(1, 1 TSRMLS_CC);
+ php_output_flush(TSRMLS_C);
+
+ Flushing all output buffers:
+ // not possible with old API
+ php_output_flush_all(TSRMLS_C);
+
+ Cleaning one output buffer:
+ // php_ob_end_buffer(0, 1 TSRMLS_CC);
+ php_output_clean(TSRMLS_C);
+
+ Cleaning all output buffers:
+ // not possible with old API
+ php_output_clean_all(TSRMLS_C);
+
+ Discarding one output buffer:
+ // php_ob_end_buffer(0, 0 TSRMLS_CC);
+ php_output_discard(TSRMLS_C);
+
+ Discarding all output buffers:
+ // php_ob_end_buffers(0 TSRMLS_CC);
+ php_output_discard_all(TSRMLS_C);
+
+ Stopping (and dropping) one output buffer:
+ // php_ob_end_buffer(1, 0 TSRMLS_CC)
+ php_output_end(TSRMLS_C);
+
+ Stopping (and dropping) all output buffers:
+ // php_ob_end_buffers(1, 0 TSRMLS_CC);
+ php_output_end_all(TSRMLS_C);
+
+ Retrieving output buffers contents:
+ // php_ob_get_buffer(zstring TSRMLS_CC);
+ php_output_get_contents(zstring TSRMLS_CC);
+
+ Retrieving output buffers length:
+ // php_ob_get_length(zlength TSRMLS_CC);
+ php_output_get_length(zlength TSRMLS_CC);
+
+ Retrieving output buffering level:
+ // OG(nesting_level);
+ php_output_get_level(TSRMLS_C);
+
+ Issue a warning because of an output handler conflict:
+ // php_ob_init_conflict("to be started handler name", "to be tested if already started handler name" TSRMLS_CC);
+ php_output_handler_conflict(new_handler_name, new_handler_name_len, set_handler_name, set_handler_name_len TSRMLS_CC);
+
+ Registering a conflict checking function, which will be checked prior starting the handler:
+ // not possible with old API, unless hardcoding into output.c
+ php_output_handler_conflict_register(handler_name, handler_name_len, my_php_output_handler_conflict_check_t TSRMLS_CC);
+
+ Registering a reverse conflict checking function, which will be checked prior starting the specified foreign handler:
+ // not possible with old API
+ php_output_handler_reverse_conflict_register(foreign_handler_name, foreign_handler_name_len, my_php_output_handler_conflict_check_t TSRMLS_CC);
+
+ Facilitating a context from within an output handler callable with ob_start():
+ // not possible with old API
+ php_output_handler_hook(PHP_OUTPUT_HANDLER_HOOK_GET_OPAQ, (void *) &custom_ctx_ptr_ptr TSRMLS_CC);
+
+ Disabling of the output handler by itself:
+ //not possible with old API
+ php_output_handler_hook(PHP_OUTPUT_HANDLER_HOOK_DISABLE, NULL TSRMLS_CC);
+
+ Marking an output handler immutable by itself because of irreversibility of its operation:
+ // not possible with old API
+ php_output_handler_hook(PHP_OUTPUT_HANDLER_HOOK_IMMUTABLE, NULL TSRMLS_CC);
+
+ Restarting the output handler because of a CLEAN operation:
+ // not possible with old API
+ if (flags & PHP_OUTPUT_HANDLER_CLEAN) { ... }
+
+ Recognizing by the output handler itself if it gets discarded:
+ // not possible with old API
+ if ((flags & PHP_OUTPUT_HANDLER_CLEAN) && (flags & PHP_OUTPUT_HANDLER_FINAL)) { ... }
+
+
+Output handler hooks
+
+ The output handler can change its abilities at runtime. Eg. the gz handler can
+ remove the CLEANABLE and REMOVABLE bits when the first output has passed through it;
+ or handlers implemented in C to be used with ob_start() can contain a non-global
+ context:
+ PHP_OUTPUT_HANDLER_HOOK_GET_OPAQ
+ pass a void*** pointer as second arg to receive the address of a pointer
+ pointer to the opaque field of the output handler context
+ PHP_OUTPUT_HANDLER_HOOK_GET_FLAGS
+ pass a int* pointer as second arg to receive the flags set for the output handler
+ PHP_OUTPUT_HANDLER_HOOK_GET_LEVEL
+ pass a int* pointer as second arg to receive the level of this output handler
+ (starts with 0)
+ PHP_OUTPUT_HANDLER_HOOK_IMMUTABLE
+ the second arg is ignored; marks the output handler to be neither cleanable
+ nor removable
+ PHP_OUTPUT_HANDLER_HOOK_DISABLE
+ the second arg is ignored; marks the output handler as disabled
+
+
+Open questions
+
+ Should the userland API be adjusted and unified?
+
+ Many bits of the manual (and very first implementation) do not comply
+ with the behaviour of the current (to be obsoleted) code, thus should
+ the manual or the behaviour be adjusted?
+
+END
diff --git a/README.PARAMETER_PARSING_API b/README.PARAMETER_PARSING_API
index 8d29767..927e481 100644
--- a/README.PARAMETER_PARSING_API
+++ b/README.PARAMETER_PARSING_API
@@ -51,6 +51,7 @@ Type specifiers
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)
+ p - valid path (string without null bytes in the middle) and its length (char*, int)
r - resource (zval*)
s - string (with possible null bytes) and its length (char*, int)
z - the actual zval (zval*)
diff --git a/README.RELEASE_PROCESS b/README.RELEASE_PROCESS
index b09ec53..6a6da62 100644
--- a/README.RELEASE_PROCESS
+++ b/README.RELEASE_PROCESS
@@ -50,38 +50,30 @@ Rolling a non stable release (alpha/beta/RC)
2. run the "scripts/dev/credits" script in php-src and commit the changes in the
credits files in ext/standard.
-3. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
-Do not use abbreviations for alpha and beta.
-
-4. Commit those changes and note the revision id.
-
-5. tag the repository with the version. To do the tag in a fast way do a svn copy on the server using full URLs. You should use the revision id from the above commit to prevent mistakes in case there was a commit in between. f.e. "``svn cp https://svn.php.net/repository/php/php-src/branches/PHP_5_3@308399 https://svn.php.net/repository/php/php-src/tags/php_5_3_6RC1``"
-(of course, you need to change that to the version you're rolling an RC for). Mail php-internals to announce the tag so tests/validation/check can be done prior to package it. It is especially important for RCs.
+3. Checkout the release branch for this release (e.g., PHP-5.4.2).
-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.
+4. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
+Do not use abbreviations for alpha and beta.
-7. Commit those changes
+5. Commit these changes to the branch with ``git commit -a``.
-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).
+6. Tag the repository with the version, e.g.:
+``git tag -u YOURKEYID PHP-5.4.2-RC2``
-9. You do not have to update the tree, but of course you can with "``svn up``".
+7. Push the changes to the main repo:
+``git push --tags origin HEAD``
-10. run: ``./makedist php 4.4.1RC1``, this will export the tree, create configure
+8. run: ``./makedist 5.4.2-RC2``, 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
+9. 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,
+10. 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
+11. 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.
@@ -115,7 +107,7 @@ Derick) run the following commands for you:
4. Update ``php.git/include/version.inc`` (x=major version number)
- a. ``$PHP_x_RC`` = "5.3.0RC1"
+ a. ``$PHP_x_RC`` = "5.4.0RC1"
b. ``$PHP_x_RC_DATE`` = "06 September 2007"
diff --git a/README.input_filter b/README.input_filter
index 488ca82..e2941d0 100644
--- a/README.input_filter
+++ b/README.input_filter
@@ -19,9 +19,7 @@ A simple implementation might look like the following. This stores the
original raw user data and adds a my_get_raw() function while the normal
$_POST, $_GET and $_COOKIE arrays are only populated with stripped
data. In this simple example all I am doing is calling strip_tags() on
-the data. If register_globals is turned on, the default globals that
-are created will be stripped ($foo) while a $RAW_foo is created with the
-original user input.
+the data.
ZEND_BEGIN_MODULE_GLOBALS(my_input_filter)
zval *post_array;
@@ -155,8 +153,6 @@ PHP_FUNCTION(my_get_raw)
int var_len;
zval **tmp;
zval *array_ptr = NULL;
- HashTable *hash_ptr;
- char *raw_var;
if(zend_parse_parameters(2 TSRMLS_CC, "ls", &arg, &var, &var_len) == FAILURE) {
return;
@@ -174,23 +170,15 @@ PHP_FUNCTION(my_get_raw)
break;
}
- if(!array_ptr) RETURN_FALSE;
-
- /*
- * I'm changing the variable name here because when running with register_globals on,
- * the variable will end up in the global symbol table
- */
- raw_var = emalloc(var_len+5); /* RAW_ and a \0 */
- strcpy(raw_var, "RAW_");
- strlcat(raw_var,var,var_len+5);
- hash_ptr = HASH_OF(array_ptr);
+ if(!array_ptr) {
+ RETURN_FALSE;
+ }
- if(zend_hash_find(hash_ptr, raw_var, var_len+5, (void **)&tmp) == SUCCESS) {
+ if(zend_hash_find(HASH_OF(array_ptr), var, var_len+5, (void **)&tmp) == SUCCESS) {
*return_value = **tmp;
zval_copy_ctor(return_value);
} else {
RETVAL_FALSE;
}
- efree(raw_var);
}
diff --git a/TODO b/TODO
deleted file mode 100644
index c3c5fab..0000000
--- a/TODO
+++ /dev/null
@@ -1,136 +0,0 @@
-Things to do or at least think about doing in the future. Name in
-parenthesis means that person has taken on this project.
-
-Zend
-----
- * Allow foreach ($array as $k => list($a, $b)) syntax for multi
- dimensional arrays.
- * Look at replacing c-lib call tolower().
- * Make hash API functions work with HASH_OF() to save time.
- * Native large number support (probably with GNU GMP)
- * Const'ify APIs. Right now, many functions leave parameters untouched,
- but don't declare those as const. This makes interaction with other
- interfaces difficult which pass const parameters to us.
-
-
-global
-------
- * Make sure that all ZTS globals get destructed. Most ts_allocate_id()
- calls should have a dtor entry.
- * on some platforms unimplemented function will just do nothing
- (e.g. symlink) they should print a warning or not even be defined!
- (DONE ?)
- * --enable-all in configure. (--enable-shared=max ...)
- * make configure print out a summary when it's done (like XEmacs)
- * replace standard functions which work on static data with
- reentrancy-safe functions (DONE?).
- * make SAPI conform to CGI/1.1. Currently, all SAPI modules
- define REMOTE_ADDR etc. themselves and reach only various level
- of compliance.
- * see what functions might need to be changed to use HashPosition, so
- that the internal array pointer is not affected.
- * Move most extensions and PEAR packages out of the PHP CVS tree,
- include them again during release packaging.
-
- Other
- * use thread-safe resolver functions (either require BIND 8 or adns).
- * implement javadoc based function docs template system.
- * provide optional IPv6 support (seems to be done?).
- * find a better way to implement script timeouts. SIGVTALRM is used
- by some POSIX threads implementations (i.e. OpenBSD) and is not
- available in ZTS mode.
- * Implement flush feature suitable for nested output buffers.
-
-Streams
--------
- * Route filestat.c through the wrapper layer; isolate the statcache code
- so that it is independent of php functions and can be applied to any
- stream/path.
- * Implement generalized connection pool for stated protocols such as
- ftp and http/1.1 (using keep-alive) to avoid having to negotiate
- new command/request stream for each subsequent call; Possibly store
- resources in contexts (creating a default context if necessary) to
- allow segmentation of connection pools.
- * Add a method to take ownership of the memory buffer in memory streams so
- that generating string values for zvals doesn't require an estrdup.
- * bundle and use curl lib for fopen wrapper.
-
-documentation
--------------
- * Add remarks in the documentation which functions are not implemented
- on win32.
- * Add remarks in the documentation which functions are not binary-safe.
- * Update curl documentation (DONE?)
- * Add developer documentation.
- * Add detailed documentation for Java extension.
-
-ext/curl
---------
- * Have a warning scheme for when people use unsupported features.
-
-ext/oci8
---------
- * All OCIFetch*() functions should return 0 for no more data and false on
- error.
- * Have a flag that trims trailing spaces from CHAR fields on retrieval.
- * Make allow_call_time_pass_reference=Off working.
- * For additional todo information, see oci8.c, in ext/oci8
-
-ext/odbc
---------
- For PHP 4.3.0:
- * update all php_error calls to php_error_docref where valid
- * integrate EXPERIMENTAL ODBC update for use in PHP 5.0, use for
- testing purposes only.
-
- For PHP 5.0.0
- * Activate EXPERIMENTAL ODBC codebase update
-
-ext/pcre
---------
- * Allow user to set PCRE_NOTEMPTY, PCRE_ANCHORED at execution time, maybe
-
-ext/pcntl
----------
- * Change internal callback handler to use TICKS
- * Remove all zend_extension code
- * Add object callback support to pcntl_signal()
-
-ext/session
------------
- For PHP 4.3.0:
- * session_abort() to abort session. ie: Do not save session data.
- * Allow unset($_SESSION) or unset($HTTP_SESSION_VARS) to unset
- session vars regardless of register_globals setting.
-
- Other:
- * Maybe implement finer-grained session variables that could be
- locked individually.
- * Write a network-transparent storage back-end with fallover
- facilities
- * Provide a callback facility which is executed upon encountering
- an unknown class name during deserialization
-
-ext/standard
-------------
- * Add a version number to data serialized via serialize().
- * Possibly modify parsing of GPC data to automatically create arrays if
- variable name is seen more than once.
- * Implement regex-cache for url-functions.
- * Move socket related functions to fsock.c.
-
-ext/wddx
---------
- * See if we can support the remaining data types:
- binary
-
- http://www.wddx.org/WDDX_SDK_10a/7__References/WDDX_DTD.htm
- (Andrei)
-
- * implement wddx_packet_as_javascript(). (Andrei)
-
-other cool stuff
-----------------
- * PVM extension
-
-vim:et:sw=4:ts=4
diff --git a/TODO-5.1 b/TODO-5.1
deleted file mode 100644
index d2690f6..0000000
--- a/TODO-5.1
+++ /dev/null
@@ -1,4 +0,0 @@
-Zend Engine
------------
- - Look at making zend_constant value member be a zval* instead of zval. (Andi)
- - Implement inheritance rules for type hints. (Marcus)
diff --git a/TODO-PHP5 b/TODO-PHP5
deleted file mode 100644
index 1bb22e2..0000000
--- a/TODO-PHP5
+++ /dev/null
@@ -1,89 +0,0 @@
-Component: Zend Engine 2
-
- Important stuff to finish: PPP members/PPP methods,
- support of overloaded extensions, possibly differentiate
- between class and namespace as discussed with Stig in
- Germany.
-Responsibility: Zeev, Andi, Stas
-Time frame: Couple of months for first part and extensions will be
- ongoing while PHP is being fixed.
- Things to leave for later versions: Native aggregation
- support, accessing static members via object and not class.
-
-
-Component: Aggregation
-Responsibility: Andi, Stig?
-Time frame: ?
-
-
-Component: Redesign of API Versioning
-Responsibility: ?
-Time frame: 1 month
-
-
-Component: Thread Safety
- Identify the extensions that are not thread safe by design
- or due to dependant libraries and identify them as such.
- If possible try to resolve thread safety issue via code
- improvements (if php code or patches will be accepted by
- library maintainers). For situations where thread safety
- cannot easily be acheived a flag in the extension API is
- set so PHP can identify non-thread safe extensions. These
- extensions will not be loaded in a ZTS compiled binary
- (unless it is cli/cgi).
-
-Responsibility: ?
-Time frame: ?
-
-
-Component: SAPI
- Environment variables defined in the CGI spec need to be
- verified in each SAPI module that they conform to the CGI
- spec correctly. If they do not, the SAPI module needs to
- fix the variable prior to script execution. Having this
- conformity will aid in having PHP scripts run correctly
- under different sapi modules.
-
-Responsibility: Shane Caraveo & each sapi module owner
-Timeframe: ? (but shouldn't be much effort, most modules are probably ok)
-
-
-Component: RPC Abstraction Layer
- Porting java, com, dotnet, xmlrpc, corba, soap and python, srm
- (are there more ?) to work with the new oo api and preferably
- by using ext/rpc.
-Responsibility: Harald
-Time frame: 2 months (but i have to wait for a few engine features first)
-
-
-Component: OO Extensions
- Each OO extension has to be revised and rewritten to fit into
- the new OO model. We should decide which extensions are a must
- to have for the release and which can be ported by the maintainer
- later as a separate pecl release.
- A list of extensions to be extended that have to be investigated:
- * browscap
- * aggregate
- * all *sql extensions (*_fetch_object)
- * domxml (seems like christian is rewriting it anyways)
- * ming
-Responsibility: Harald (, extension maintainers)
-
-
-Component: Abstract Data Types (ADT)
-Responsibility: Sterling, Harald
-Time frame: ?
-
-
-Component: Test Suite
- Extending the test suite with atleast a test for every
- function in an extension that doesn't require external
- resources. Also developing an automated test thing which
- cvs ups's, compiles and tests the build on a daily base on
- as much platforms/extensions as possible.
-
- The test suite will also be extended to support threaded
- testing and testing for differing sapi modules (via http
- calls or other methods).
-Reponsibility: Derick (, extension maintainers)
-Time frame: 3 months
diff --git a/TSRM/TSRM.c b/TSRM/TSRM.c
index 41368a4..efdea5c 100644
--- a/TSRM/TSRM.c
+++ b/TSRM/TSRM.c
@@ -710,6 +710,22 @@ TSRM_API int tsrm_mutex_unlock(MUTEX_T mutexp)
#endif
}
+/*
+ Changes the signal mask of the calling thread
+*/
+#ifdef HAVE_SIGPROCMASK
+TSRM_API int tsrm_sigmask(int how, const sigset_t *set, sigset_t *oldset)
+{
+ TSRM_ERROR((TSRM_ERROR_LEVEL_INFO, "Changed sigmask in thread: %ld", tsrm_thread_id()));
+ /* TODO: add support for other APIs */
+#ifdef PTHREADS
+ return pthread_sigmask(how, set, oldset);
+#else
+ return sigprocmask(how, set, oldset);
+#endif
+}
+#endif
+
TSRM_API void *tsrm_set_new_thread_begin_handler(tsrm_thread_begin_func_t new_thread_begin_handler)
{
diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h
index d3d6f9b..b232429 100644
--- a/TSRM/TSRM.h
+++ b/TSRM/TSRM.h
@@ -90,6 +90,10 @@ typedef struct {
# define MUTEX_T beos_ben *
#endif
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+
typedef void (*ts_allocate_ctor)(void *, void ***);
typedef void (*ts_allocate_dtor)(void *, void ***);
@@ -138,6 +142,9 @@ TSRM_API MUTEX_T tsrm_mutex_alloc(void);
TSRM_API void tsrm_mutex_free(MUTEX_T mutexp);
TSRM_API int tsrm_mutex_lock(MUTEX_T mutexp);
TSRM_API int tsrm_mutex_unlock(MUTEX_T mutexp);
+#ifdef HAVE_SIGPROCMASK
+TSRM_API int tsrm_sigmask(int how, const sigset_t *set, sigset_t *oldset);
+#endif
TSRM_API void *tsrm_set_new_thread_begin_handler(tsrm_thread_begin_func_t new_thread_begin_handler);
TSRM_API void *tsrm_set_new_thread_end_handler(tsrm_thread_end_func_t new_thread_end_handler);
diff --git a/TSRM/acconfig.h b/TSRM/acconfig.h
deleted file mode 100644
index 2b94cf3..0000000
--- a/TSRM/acconfig.h
+++ /dev/null
@@ -1 +0,0 @@
-#undef PTHREADS
diff --git a/TSRM/build.mk b/TSRM/build.mk
index aac1a8b..f5756af 100644
--- a/TSRM/build.mk
+++ b/TSRM/build.mk
@@ -33,7 +33,7 @@ $(makefile_in_files): $(makefile_am_files)
aclocal.m4: configure.in acinclude.m4
aclocal
-$(config_h_in): configure.in acconfig.h
+$(config_h_in): configure.in
# explicitly remove target since autoheader does not seem to work
# correctly otherwise (timestamps are not updated)
@rm -f $@
diff --git a/TSRM/configure.in b/TSRM/configure.in
index acfdd00..6f10f5a 100644
--- a/TSRM/configure.in
+++ b/TSRM/configure.in
@@ -7,6 +7,10 @@ AC_INIT(TSRM.c)
AM_INIT_AUTOMAKE(TSRM, 1.0, nodefine)
AM_CONFIG_HEADER(tsrm_config.h)
+AH_TOP([
+#undef PTHREADS
+])
+
sinclude(tsrm.m4)
TSRM_BASIC_CHECKS
diff --git a/TSRM/tsrm.m4 b/TSRM/tsrm.m4
index 85e6a83..b53a4bb 100644
--- a/TSRM/tsrm.m4
+++ b/TSRM/tsrm.m4
@@ -30,6 +30,8 @@ AC_REQUIRE([AC_PROG_RANLIB])dnl
AC_CHECK_HEADERS(stdarg.h)
+AC_CHECK_FUNCS(sigprocmask)
+
])
diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c
index e734406..683d6a4 100644
--- a/TSRM/tsrm_virtual_cwd.c
+++ b/TSRM/tsrm_virtual_cwd.c
@@ -277,18 +277,6 @@ CWD_API int php_sys_readlink(const char *link, char *target, size_t target_len){
}
/* }}} */
-CWD_API int php_sys_stat(const char *path, struct stat *buf) /* {{{ */
-{
- return php_sys_stat_ex(path, buf, 0);
-}
-/* }}} */
-
-CWD_API int php_sys_lstat(const char *path, struct stat *buf) /* {{{ */
-{
- return php_sys_stat_ex(path, buf, 1);
-}
-/* }}} */
-
CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat) /* {{{ */
{
WIN32_FILE_ATTRIBUTE_DATA data;
@@ -718,7 +706,6 @@ static inline realpath_cache_bucket* realpath_cache_find(const char *path, int p
} else {
CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1 + r->realpath_len + 1;
}
-
free(r);
} else if (key == (*bucket)->key && path_len == (*bucket)->path_len &&
memcmp(path, (*bucket)->path, path_len) == 0) {
@@ -1152,7 +1139,7 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
/* Resolve path relatively to state and put the real path into state */
/* returns 0 for ok, 1 for error */
-CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func verify_path, int use_realpath) /* {{{ */
+CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func verify_path, int use_realpath TSRMLS_DC) /* {{{ */
{
int path_length = strlen(path);
char resolved_path[MAXPATHLEN];
@@ -1162,7 +1149,6 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
int ret;
int add_slash;
void *tmp;
- TSRMLS_FETCH();
if (path_length == 0 || path_length >= MAXPATHLEN-1) {
#ifdef TSRM_WIN32
@@ -1363,7 +1349,7 @@ verify:
CWD_API int virtual_chdir(const char *path TSRMLS_DC) /* {{{ */
{
- return virtual_file_ex(&CWDG(cwd), path, php_is_dir_ok, CWD_REALPATH)?-1:0;
+ return virtual_file_ex(&CWDG(cwd), path, php_is_dir_ok, CWD_REALPATH TSRMLS_CC)?-1:0;
}
/* }}} */
@@ -1431,7 +1417,7 @@ CWD_API char *virtual_realpath(const char *path, char *real_path TSRMLS_DC) /* {
new_state.cwd_length = 0;
}
- if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH)==0) {
+ if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH TSRMLS_CC)==0) {
int len = new_state.cwd_length>MAXPATHLEN-1?MAXPATHLEN-1:new_state.cwd_length;
memcpy(real_path, new_state.cwd, len);
@@ -1453,7 +1439,7 @@ CWD_API int virtual_filepath_ex(const char *path, char **filepath, verify_path_f
int retval;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- retval = virtual_file_ex(&new_state, path, verify_path, CWD_FILEPATH);
+ retval = virtual_file_ex(&new_state, path, verify_path, CWD_FILEPATH TSRMLS_CC);
*filepath = new_state.cwd;
@@ -1478,7 +1464,7 @@ CWD_API FILE *virtual_fopen(const char *path, const char *mode TSRMLS_DC) /* {{{
}
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH)) {
+ if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return NULL;
}
@@ -1496,13 +1482,13 @@ CWD_API int virtual_access(const char *pathname, int mode TSRMLS_DC) /* {{{ */
int ret;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH)) {
+ if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
#if defined(TSRM_WIN32)
- ret = tsrm_win32_access(new_state.cwd, mode);
+ ret = tsrm_win32_access(new_state.cwd, mode TSRMLS_CC);
#else
ret = access(new_state.cwd, mode);
#endif
@@ -1569,7 +1555,7 @@ CWD_API int virtual_utime(const char *filename, struct utimbuf *buf TSRMLS_DC) /
int ret;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH)) {
+ if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1592,7 +1578,7 @@ CWD_API int virtual_chmod(const char *filename, mode_t mode TSRMLS_DC) /* {{{ */
int ret;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH)) {
+ if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1611,7 +1597,7 @@ CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int li
int ret;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH)) {
+ if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1638,7 +1624,7 @@ CWD_API int virtual_open(const char *path TSRMLS_DC, int flags, ...) /* {{{ */
int f;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH)) {
+ if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1666,7 +1652,7 @@ CWD_API int virtual_creat(const char *path, mode_t mode TSRMLS_DC) /* {{{ */
int f;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH)) {
+ if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1685,14 +1671,14 @@ CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC) /* {{{ */
int retval;
CWD_STATE_COPY(&old_state, &CWDG(cwd));
- if (virtual_file_ex(&old_state, oldname, NULL, CWD_EXPAND)) {
+ if (virtual_file_ex(&old_state, oldname, NULL, CWD_EXPAND TSRMLS_CC)) {
CWD_STATE_FREE(&old_state);
return -1;
}
oldname = old_state.cwd;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, newname, NULL, CWD_EXPAND)) {
+ if (virtual_file_ex(&new_state, newname, NULL, CWD_EXPAND TSRMLS_CC)) {
CWD_STATE_FREE(&old_state);
CWD_STATE_FREE(&new_state);
return -1;
@@ -1721,7 +1707,7 @@ CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC) /* {{{ */
int retval;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH)) {
+ if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1739,7 +1725,7 @@ CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC) /* {{{ *
int retval;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND)) {
+ if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1757,7 +1743,7 @@ CWD_API int virtual_unlink(const char *path TSRMLS_DC) /* {{{ */
int retval;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND)) {
+ if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1775,7 +1761,7 @@ CWD_API int virtual_mkdir(const char *pathname, mode_t mode TSRMLS_DC) /* {{{ */
int retval;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, pathname, NULL, CWD_FILEPATH)) {
+ if (virtual_file_ex(&new_state, pathname, NULL, CWD_FILEPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1796,7 +1782,7 @@ CWD_API int virtual_rmdir(const char *pathname TSRMLS_DC) /* {{{ */
int retval;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, pathname, NULL, CWD_EXPAND)) {
+ if (virtual_file_ex(&new_state, pathname, NULL, CWD_EXPAND TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return -1;
}
@@ -1818,7 +1804,7 @@ CWD_API DIR *virtual_opendir(const char *pathname TSRMLS_DC) /* {{{ */
DIR *retval;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
- if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH)) {
+ if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH TSRMLS_CC)) {
CWD_STATE_FREE(&new_state);
return NULL;
}
@@ -1833,7 +1819,7 @@ CWD_API DIR *virtual_opendir(const char *pathname TSRMLS_DC) /* {{{ */
#ifdef TSRM_WIN32
CWD_API FILE *virtual_popen(const char *command, const char *type TSRMLS_DC) /* {{{ */
{
- return popen_ex(command, type, CWDG(cwd).cwd, NULL);
+ return popen_ex(command, type, CWDG(cwd).cwd, NULL TSRMLS_CC);
}
/* }}} */
#elif defined(NETWARE)
@@ -1956,7 +1942,7 @@ CWD_API char *tsrm_realpath(const char *path, char *real_path TSRMLS_DC) /* {{{
new_state.cwd_length = 0;
}
- if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH)) {
+ if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH TSRMLS_CC)) {
free(new_state.cwd);
return NULL;
}
diff --git a/TSRM/tsrm_virtual_cwd.h b/TSRM/tsrm_virtual_cwd.h
index c13e88d..2c40858 100644
--- a/TSRM/tsrm_virtual_cwd.h
+++ b/TSRM/tsrm_virtual_cwd.h
@@ -131,8 +131,8 @@ typedef unsigned short mode_t;
#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);
+# define php_sys_stat(path, buf) php_sys_stat_ex(path, buf, 0)
+# define php_sys_lstat(path, buf) php_sys_stat_ex(path, buf, 1)
CWD_API int php_sys_readlink(const char *link, char *target, size_t target_len);
#else
# define php_sys_stat stat
@@ -201,7 +201,7 @@ CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int li
#define CWD_FILEPATH 1 /* resolve symlinks if file is exist otherwise expand */
#define CWD_REALPATH 2 /* call realpath(), resolve symlinks. File must exist */
-CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func verify_path, int use_realpath);
+CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func verify_path, int use_realpath TSRMLS_DC);
CWD_API char *tsrm_realpath(const char *path, char *real_path TSRMLS_DC);
@@ -267,7 +267,7 @@ 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)
-#define VCWD_LSTAT(path, buff) virtual_lstat(path, buff TSRMLS_CC)
+# define VCWD_LSTAT(path, buff) virtual_lstat(path, buff TSRMLS_CC)
#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)
@@ -310,7 +310,7 @@ CWD_API realpath_cache_bucket** realpath_cache_get_buckets(TSRMLS_D);
#define VCWD_OPENDIR(pathname) opendir(pathname)
#define VCWD_POPEN(command, type) popen(command, type)
#if defined(TSRM_WIN32)
-#define VCWD_ACCESS(pathname, mode) tsrm_win32_access(pathname, mode)
+#define VCWD_ACCESS(pathname, mode) tsrm_win32_access(pathname, mode TSRMLS_CC)
#else
#define VCWD_ACCESS(pathname, mode) access(pathname, mode)
#endif
diff --git a/TSRM/tsrm_win32.c b/TSRM/tsrm_win32.c
index 9e029f6..b40af77 100644
--- a/TSRM/tsrm_win32.c
+++ b/TSRM/tsrm_win32.c
@@ -190,7 +190,7 @@ Finished:
return NULL;
}
-TSRM_API int tsrm_win32_access(const char *pathname, int mode)
+TSRM_API int tsrm_win32_access(const char *pathname, int mode TSRMLS_DC)
{
time_t t;
HANDLE thread_token;
@@ -208,8 +208,6 @@ TSRM_API int tsrm_win32_access(const char *pathname, int mode)
realpath_cache_bucket * bucket = NULL;
char * real_path = NULL;
- TSRMLS_FETCH();
-
if (mode == 1 /*X_OK*/) {
DWORD type;
return GetBinaryType(pathname, &type) ? 0 : -1;
@@ -448,10 +446,12 @@ static HANDLE dupHandle(HANDLE fh, BOOL inherit) {
TSRM_API FILE *popen(const char *command, const char *type)
{
- return popen_ex(command, type, NULL, NULL);
+ TSRMLS_FETCH();
+
+ return popen_ex(command, type, NULL, NULL TSRMLS_CC);
}
-TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env)
+TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env TSRMLS_DC)
{
FILE *stream = NULL;
int fno, type_len = strlen(type), read, mode;
@@ -469,8 +469,6 @@ TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd,
HANDLE token_user = NULL;
BOOL asuser = TRUE;
- TSRMLS_FETCH();
-
if (!type) {
return NULL;
}
diff --git a/TSRM/tsrm_win32.h b/TSRM/tsrm_win32.h
index 4e645b2..56835f8 100644
--- a/TSRM/tsrm_win32.h
+++ b/TSRM/tsrm_win32.h
@@ -95,10 +95,10 @@ 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);
-TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env);
+TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env TSRMLS_DC);
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 tsrm_win32_access(const char *pathname, int mode TSRMLS_DC);
TSRM_API int win32_utime(const char *filename, struct utimbuf *buf);
TSRM_API int shmget(int key, int size, int flags);
diff --git a/UPGRADING b/UPGRADING
index fce04af..d92e057 100755
--- a/UPGRADING
+++ b/UPGRADING
@@ -1,700 +1,785 @@
$Id$
-UPGRADE NOTES - PHP 5.3
-
-1. Reserved words and classes
-2. Changes made to existing functions
-3. Changes made to existing methods
-4. Changes made to existing classes
-5. Deprecated
-6. Undeprecated
-7. Extensions:
- a. moved out to PECL and actively maintained there
- b. no longer maintained
- c. with changed behaviour
- d. no longer possible to disable
-8. Changes in SAPI support
-9. Changes in INI directives
-10. Syntax additions
+PHP 5.4 UPGRADE NOTES
+
+===========
+0. Contents
+===========
+
+1. Changes to INI directives
+2. Changes to reserved words and classes
+3. Changes to engine behavior
+4. Changes to existing functions
+5. Changes to existing classes
+6. Changes to existing methods
+7. Deprecated Functionality
+8. Removed Functionality
+ a. Removed features
+ b. Removed functions
+ c. Removed syntax
+ d. Removed hash algorithms
+9. Extension Changes:
+ a. Extensions no longer maintained
+ b. Extensions with changed behavior
+10. Changes in SAPI support
11. Windows support
-12. New in PHP 5.3:
- a. New libraries
- b. New extensions
- c. New stream wrappers
- d. New stream filters
- e. New functions
- f. New global constants
- g. New classes
- h. New methods
- i. New class constants
+12. New in PHP 5.4:
+ a. New features
+ b. Syntax additions
+ c. New functions
+ d. New global constants
+ e. New classes
+ f. New methods
+ g. New hash algorithms
=============================
-1. Reserved words and classes
+1. Changes to INI directives
=============================
-- **namespace** and **goto** are now reserved keywords.
+- PHP 5.4 now checks at compile time if /dev/urandom or /dev/arandom
+ are present. If either is available, session.entropy_file now
+ defaults to that file and session.entropy_length defaults to 32.
+ This provides non-blocking entropy to session id generation. If you
+ do not want extra entropy for your session ids, add:
+
+ session.entropy_file=
+ session.entropy_length=0
+
+ to your php.ini to preserve pre-PHP 5.4 behavior.
+
+- Deprecated php.ini directives will now throw an E_CORE_WARNING's
+ instead of the previous E_WARNING's.
+
+- The following php.ini directives are no longer available in PHP 5.4
+ and will now throw an E_CORE_ERROR upon startup:
+ - allow_call_time_pass_reference
+ - define_syslog_variables
+ - highlight.bg
+ - magic_quotes_gpc
+ - magic_quotes_runtime
+ - magic_quotes_sybase
+ - register_globals
+ - register_long_arrays
+ - safe_mode
+ - safe_mode_gid
+ - safe_mode_include_dir
+ - safe_mode_exec_dir
+ - safe_mode_allowed_env_vars
+ - safe_mode_protected_env_vars
+ - session.bug_compat_42
+ - session.bug_compat_warn
+ - y2k_compliance
+ - zend.ze1_compatibility_mode
+
+- the following new php.ini directives were added:
+ - max_input_vars - specifies how many GET/POST/COOKIE input
+ variables may be accepted. The default value is 1000.
+
+- E_ALL now includes E_STRICT.
+
+- The recommended production value for error_reporting changed to E_ALL &
+ ~E_DEPRECATED & ~E_STRICT.
+
+- Added new session support directives:
+ session.upload_progress.enabled
+ session.upload_progress.cleanup
+ session.upload_progress.prefix
+ session.upload_progress.name
+ session.upload_progress.freq
+ session.upload_progress.min_freq
+
+- Added a zend.multibyte directive as a replacement of the PHP compile time
+ configuration option --enable-zend-multibyte. Now the Zend Engine always
+ contains code for multibyte support, which can be enabled or disabled at
+ runtime. Note: It doesn't make a lot of sense to enable this option if
+ ext/mbstring is not enabled, because most functionality is implemented by
+ mbstrings callbacks.
+
+- Added zend.script_encoding. This value will be used unless a
+ "declare(encoding=...)" directive appears at the top of the script.
+
+- Added zend.signal_check to check for replaced signal handlers on shutdown
+
+- Added enable_post_data_reading, which is enabled by default. When it's
+ disabled, the POST data is not read (or processed); the behavior is similar
+ to that of other request methods with body, like PUT. This allows reading
+ the raw POST data in multipart requests and reading/processing the POST data
+ in a stream fashion (through php://input) without having it copied in memory
+ multiple times.
+
+- Added windows_show_crt_warning. This directive shows the CRT warnings when
+ enabled. These warnings were displayed by default until now. It is disabled
+ by default.
+
+- Added cli.pager to set a pager for CLI interactive shell output.
+
+- Added cli.prompt to configure the CLI interactive shell prompt.
+
+- Added cli_server.color to enable the CLI web server to use ANSI color coding
+ in terminal output.
+
+========================================
+2. Changes to reserved words and classes
+========================================
+
+- "callable", "insteadof" and "trait" are now reserved words.
-- **Closure** is now a reserved class. (Used by lambda and closure.)
-
-=====================================
-2. Changes made to existing functions
-=====================================
+=============================
+3. Changes to engine behavior
+=============================
-- Paths containing NULL (like /some/path\0foo.txt) are now considered invalid.
- See http://news.php.net/php.internals/50191
+- The __construct arguments of an extended abstract constructor must
+ now match:
-- The HTTP stream wrapper now considers all status codes from 200 to 399 to be
- successful.
+ abstract class Base
+ {
+ abstract public function __construct();
+ }
+ class Foo extends Base
+ {
+ public function __construct($bar) {}
+ }
+
+ This now emits a Fatal error due the incompatible declaration.
-- The array functions natsort(), natcasesort(), usort(), uasort(), uksort(),
- array_flip(), and array_unique() no longer accept objects passed as arguments.
- If you need to use them to access an object's properties, you must cast the
- object to an array first.
+- In previous versions, superglobal names could be used for parameter
+ names, thereby shadowing the corresponding superglobal. In PHP 5.4
+ this now causes a fatal error such as "Cannot re-assign auto-global
+ variable GLOBALS".
+
+- Turning null, false or an empty string into an object by adding a
+ property will now emit a warning instead of an E_STRICT error.
-- var_dump() output now includes private object members.
+ $test = null;
+ $test->baz = 1;
-- session_start() now returns FALSE when the session startup fails.
+ To create a generic object you can use StdClass:
-- property_exists() now checks the existence of a property independent of
- accessibility (like method_exists()).
+ $test = new StdClass;
+ $test->baz = 1;
-- The $initial parameter for array_reduce can now be of any type.
+- Converting an array to a string now will cause an E_NOTICE warning.
-- clearstatcache() no longer clears the realpath cache by default.
+- Non-numeric string offsets, e.g. $a['foo'] where $a is a string, now
+ return false on isset() and true on empty(), and produce warning if
+ trying to use them. Offsets of types double, bool and null produce
+ notice. Numeric strings ($a['2']) still work as before.
-- realpath() is no longer system-dependent and works identically on all
- platforms.
+ Note that offsets like '12.3' and '5 and a half' are considered
+ non-numeric and produce warning, but are converted to 12 and 5
+ respectively for backwards compatibility reasons.
-- call_user_func() now propagates $this even if the callee is the parent class.
+- Closures now support scopes and $this and can be rebound to
+ objects using Closure::bind() and Closure::bindTo().
-- The filesystem functions opendir(), scandir(), and dir() now use the default
- context if no context argument is passed.
+- <?= is now always available regardless of the short_open_tag
+ setting.
-- The behaviour of functions with by-reference parameters called by value has
- changed. Where previously the function would accept the by-value argument, a
- warning is now emitted and all by-ref parameters are set to NULL.
+- Parse error messages are changed to contain more information about
+ the error.
-- There is now native support for the following math functions: asinh(),
- acosh(), atanh(), log1p(), and expm1().
+================================
+4. Changes to existing functions
+================================
-- In the GD extension, there is now pixelation support available through
- the imagefilter() function.
+- array_combine now returns array() instead of FALSE when two empty arrays are
+ provided as parameters.
-- crypt() now has Blowfish and extended DES support, and crypt() features are
- now 100% portable. PHP has its own internal crypt implementation which drops
- into place when system support for crypt or crypt_r() is not found.
+- dns_get_record() has an extra parameter which allows requesting DNS records
+ by numeric type and makes the result include only the raw data of the
+ response.
-- get_cfg_var() is now able to return "array" INI options.
+- call_user_func_array() no longer allows call-time pass by reference.
-- Stream wrappers can now be used by the include_path INI directive.
+- the default character set for htmlspecialchars() and htmlentities() is
+ now UTF-8. In previous versions it was ISO-8859-1. Note that changing
+ your output charset via the php.ini default_charset directive does not
+ affect htmlspecialchars/htmlentities unless you are passing "" (an
+ empty string) as the encoding parameter to your htmlspecialchars/htmlentities
+ calls.
-- These functions now take new parameters:
- clearstatcache(): $clear_realpath_cache and $filename.
- copy(): $context
- fgetcsv(): $escape
- ini_get_all(): $details
- json_encode(): $options
- json_decode(): $depth
- nl2br(): $is_xhtml
- parse_ini_file(): $scanner_mode
- round(): $mode
- stream_context_create(): $params
- strstr(), stristr(): $before_needle
- sybase_connect(): $new
+- htmlentities() and htmlspecialchars() are stricter in the code units they
+ accept for the asian encodings. For Big5-HKSCS, the octets 0x80 and 0xFF are
+ rejected. For GB2312/EUC-CN, the octets 0x8E, 0x8F, 0xA0 and 0xFF are
+ rejected. For SJIS, the octets 0x80, 0xA0, 0xFD, 0xFE and 0xFF are rejected,
+ except maybe after a valid starting byte. For EUC-JP, the octets 0xA0 and
+ 0xFF are rejected.
-- And new mode option for fopen: 'n' (O_NONBLOCK)
+- htmlentities() now emits an E_STRICT warning when used with asian characters,
+ as in that case htmlentities has (and already had before this version) the
+ same functionality as htmlspecialchars.
-- The new mysqlnd library necessitates using MySQL's newer 41-byte password
- format. Continued use of the old 16 byte passwords will cause mysql_connect()
- and other related functions to produce the following error message:
- "mysqlnd cannot connect to MySQL 4.1+ using old authentication"
+- htmlentities() no longer numerically encodes high characters for single-byte
+ encodings (except when there's actually a corresponding named entity). This
+ behavior was not documented and was inconsistent with that for "UTF-8".
-- The dl() function is now disabled by default, and only available under the
- cli, cgi, and embed SAPIs.
+- html_entity_decode() and htmlspecialchars_decode() behave more consistently,
+ now decoding entities in malformed strings such as "&&amp;" or "&#&amp;".
-- mail() now supports the logging of sent mail.
+- htmlentities(), htmlspecialchars(), html_entity_decode(), and
+ htmlspecialchars_decode: Added the flags ENT_HTML401, ENT_XML1, ENT_XHTML,
+ and ENT_HTML5. The behavior of these functions including, but not limited to,
+ the characters that are encoded and the entities that are decoded depend on
+ the document type that is specified by those flags.
-- stream_select(), stream_set_blocking(), stream_set_timeout(), and
- stream_set_write_buffer() now work with user-space stream wrappers.
+- htmlentities() and htmlspecialchars() with !$double_encode do more strict
+ checks on the validity of the entities. Numerical entities are checked for a
+ valid range (0 to 0x10FFFF); if the flag ENT_DISALLOWED is given, the
+ validity of such numerical entity in the target document type is also
+ checked. Named entities are checked for necessary existence in the target
+ document type instead of only checking whether they were constituted by
+ alphanumeric characters.
-- getopt() accepts "long options" now on all platforms.
- Optional values and using = as a separator for short options are now
- supported.
+- The flag ENT_DISALLOWED was added. In addition to the behavior described in
+ the item before, it also makes htmlentities() and htmlspecialchars()
+ substitute characters that appear literally in the argument string and which
+ are not allowed in the target document type with U+FFFD (UTF-8) or &#xFFFD;.
+- The flag ENT_SUBSTITUTE was added. This flag makes invalid multibyte
+ sequences be replaced by U+FFFD (UTF-8) or &#FFFD; by htmlspecialchars() and
+ htmlentities(). It is an alternative to the default behavior, which just
+ returns an empty string and to ENT_IGNORE, which is a security risk. The
+ behavior follows the recommendations of Unicode Technical Report #36.
-===================================
-3. Changes made to existing methods
-===================================
+- htmlspecialchars_decode() and html_entity_decode() now decode &apos; if the
+ document type is ENT_XML1, ENT_XHTML, or ENT_HTML5.
-- The magic methods __get(), __set(), __isset(), __unset(), and __call() should
- always be public and can no longer be static. Method signatures are enforced.
+- Charset detection with $charset == '' no longer turns to mbstring's
+ internal encoding defined through mb_internal_encoding(). Only the encoding
+ defined through the php.ini setting mbstring.internal_encoding is considered.
-- The __call() magic method is now invoked on access to private and protected
- methods.
+- number_format() no longer truncates multibyte decimal points and thousand
+ separators to the first byte.
-- The __toString() magic method can no longer accept arguments.
+- The third parameter ($matches) to preg_match_all() is now optional. If
+ omitted, the function will simply return the number of times the pattern was
+ matched in the subject and will have no other side effects.
-- There is a new magic method, __callStatic().
+- The second argument of scandir() now accepts SCANDIR_SORT_NONE (2) as a
+ possible value. This value results in scandir() performing no sorting: on
+ local filesystems, this allows files to be returned in native filesystem
+ order.
-- Internal count() vs. count_elements() handler resolution rules have changed.
- (This could potentially break custom PHP extensions.)
+- stream_select() now preserves the keys of the passed array, be they numeric or
+ strings. This breaks code that iterated the resulting stream array using a
+ numeric index, but makes easier to identify which of the passed streams are
+ present in the result.
-- The trailing / has been removed from SplFileInfo and other related directory
- classes.
+- stream_set_write_buffer() no longer disables the read buffer of a plain
+ stream when 0 is given as the second argument.
-- SplFileInfo::getpathinfo() now returns information about the path name.
+- stream_set_write_buffer() no longer changes the chunk size in socket streams.
-- There are new parameters in:
- Exception::__construct(): $previous
+- fclose() closes streams with resource refcount > 1; it doesn't merely
+ decrement the resource refcount.
-===================================
-4. Changes made to existing classes
-===================================
+- socket_set_options() and socket_get_options() now support multicast options.
-- SplObjectStorage now has ArrayAccess support. It is also now possible to
- store associative information with objects in SplObjectStorage.
-
-=====================
-4.1 New in PHP 5.3.9
-=====================
+- The raw data parameter in openssl_encrypt() and openssl_decrypt() is now an
+ options integer rather than a boolean. A value of true produces the same
+ behavior.
- Write operations within XSLT (for example with the extension sax:output) are
- disabled by default. You can define what is forbidden with the INI option
- xsl.security_prefs. This option will be marked as deprecated in 5.4 again.
- Use the method XsltProcess::setSecurityPrefs($options) there.
-
-- the following new directives were added
-
- - max_input_vars - specifies how many GET/POST/COOKIE input variables may be
- accepted. default value 1000.
-
-=============
-5. Deprecated
-=============
-
-- define_syslog_variables() is deprecated.
-
-- set_socket_blocking() is deprecated.
-
-- call_user_method() and call_user_method_array() are now deprecated. Use
- call_user_func() and call_user_func_array() instead.
-
-- dl() is deprecated.
-
-- The set_magic_quotes_runtime() function is now deprecated.
-
-- mysql_listtables(), mysql_dropdb(), mysql_createdb(), mysql_list_tables(),
- mysql_drop_db(), and mysql_create_db() are now deprecated.
-
-- All ereg functions are now deprecated and emit E_DEPRECATED errors:
- sql_regcase(), spliti(), split(), ereg_replace(), eregi(),
- ereg_replace(), and ereg().
- Use the PCRE family of functions (preg_*()) instead.
-
-- mcrypt_generic_end() is deprecated.
-
-- mysql_db_query() is deprecated.
-
-- mysql_escape_string() is deprecated.
-
-- session_register(), session_unregister(), and session_is_registered() are now
- deprecated. Use the $_SESSION superglobal array instead.
-
-- Comments starting with '#' are now deprecated in .INI files.
-
-- The following INI directives will now emit an E_DEPRECATED warning
- upon startup if they are activated:
-
- - define_syslog_variables
- - register_globals
- - register_long_arrays
- - safe_mode
- - magic_quotes_gpc
- - magic_quotes_runtime
- - magic_quotes_sybase
-
-- The is_dst parameter to mktime() is deprecated.
-
-- Assigning the return value of "new" by reference is deprecated
-
-- Call-time pass-by-reference has been deprecated
-
-- Usage of {} to access string offsets is deprecated
-
-- Passing locale category name as string to setlocale() is deprecated.
-
-===============
-6. Undeprecated
-===============
-
-- By popular request, is_a() is no longer deprecated.
-
-==============
-7. Extensions:
-==============
+ disabled by default. You can define what is forbidden with the method
+ XsltProcess::setSecurityPrefs($options).
- a. moved out to PECL and actively maintained there
+- Added AES support to OpenSSL.
- - fdf
- - ming
- - ncurses
+- openssl_csr_new() expects the textual data to be in UTF-8.
- b. no longer maintained
+- Added no-padding option to openssl_encrypt() and openssl_decrypt().
- - dbase
- - fbsql
- - msql
- - sybase (use sybase_ct, which is still in PHP core)
- - mhash (hash has full BC layer)
- - mime_magic (use fileinfo, has full BC layer)
+- Added a "no_ticket" SSL context option to disable the SessionTicket TLS
+ extension.
- c. with changed behaviour
+- Added new json_encode() options: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES,
+ JSON_NUMERIC_CHECK, JSON_BIGINT_AS_STRING, JSON_UNESCAPED_UNICODE.
- - dns: dns_check_record() will now return an extra "entries" index,
- containing the TXT elements.
+- Added Tokyo Cabinet and Berkley DB 5 support to DBA extension.
- - datetime: date/time functions will no longer use the TZ environment
- variable to guess which timezone should be used.
+- Added support for CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE
+ to cURL.
- - cURL now supports SSH
+- Added optional argument to debug_backtrace() and debug_print_backtrace()
+ to limit the amount of stack frames returned.
- - hash: The SHA-224 and salsa hash algorithms are now supported.
+- Fixed crypt_blowfish handling of 8-bit characters. crypt() in Blowfish mode
+ now supports hashes marked $2a$, $2x$, $2y$ and $2z$.
- - mbstring: Now supports CP850 encoding.
+- mbstring now supports following encodings: Shift_JIS/UTF-8 Emoji,
+ JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004),
+ MacJapanese (Shift_JIS), gb18030.
- - oci8: Database Resident Connection Pooling (DRCP) and Fast Application
- Notification (FAN) are now supported.
+- Added encode and decode in hex format to mb_encode_numericentity() and
+ mb_decode_numericentity().
- Oracle External Authentication is now supported (except on Windows).
+- Added support for SORT_NATURAL and SORT_FLAG_CASE in array sort functions:
+ sort(), rsort(), ksort(), krsort(), asort(), arsort() and array_multisort().
- The oci8 function oci_bind_by_name() now supports SQLT_AFC (aka the
- CHAR datatype).
+- is_a() and is_subclass_of() now have third boolean parameter, which specifies
+ if the first argument can be a string class name. Default if false for is_a
+ and true for is_subclass_of() for BC reasons.
- Calling oci_close() on a persistent connection, or when the variable
- that references a persistent connection goes out of scope, will now
- trigger a roll back of an uncommitted transaction. To avoid unexpected
- behavior explicitly issue a commit or roll back as needed. The old
- behavior can be enabled with the INI directive
- oci8.old_oci_close_semantics.
+- ob_start() will now treat a chunk size of 1 as meaning 1 byte, rather than
+ the previous special case behavior of treating it as 4096 bytes.
- - openssl: OpenSSL digest and cipher functions are now supported.
- It is also now possible to access the internal values of DSA, RSA and
- DH keys.
+- idn_to_ascii() and idn_to_utf8() now take two extra parameters, one indicating
+ the variant (IDNA 2003 or UTS #46) and another, passed by reference, to return
+ details about the operation in case UTS #46 is chosen.
- - session: Sessions will no longer store session-files in "/tmp" when
- open_basedir restrictions apply, unless "/tmp" is explicitly added to
- the list of allowed paths.
+- gzencode() used with FORCE_DEFLATE now generates RFC1950 compliant data.
- - SOAP: Now supports sending user-supplied HTTP headers.
+- ob_start() no longer starts multiple output buffers when passed
+ array("callback1", "callback2", "callback3", ...).
- - MySQLi: Now supports persistent connections by prepending the hostname
- with "p:".
+==============================
+5. Changes to existing classes
+==============================
- - imagepstext now rejects invalid antialiasing steps and raises a warning.
+- Classes that implement stream wrappers can define a method called
+ stream_truncate that will respond to truncation, e.g. through ftruncate.
+ Strictly speaking, this is an addition to the user-space stream wrapper
+ template, not a change to an actual class.
- d. no longer possible to disable
+- Classes that implement stream wrappers can define a method called
+ stream_metadata that will be called on touch(), chmod(), chgrp(), chown().
- - PCRE
- - Reflection
- - SPL
+- Arrays cast from SimpleXMLElement now always contain all nodes instead of
+ just the first matching node.
-==========================
-8. Changes in SAPI support
-==========================
+- All SimpleXMLElement children are now always printed when using var_dump(),
+ var_export(), and print_r().
-- A new "litespeed" SAPI is now available.
+- Added iterator support in MySQLi. mysqli_result implements Traversable.
-- FastCGI is now always enabled and can not be disabled. See sapi/cgi/CHANGES
- for more details.
+==============================
+6. Changes to existing methods
+==============================
-- A new CGI SAPI option, -T, can be used to measure execution time of a script
- repeated several times.
-
-- CGI/FastCGI now has support for .htaccess style user-defined php.ini files.
- See the new user_ini.filename and user_ini.cache_ttl INI directives.
+- DateTime::parseFromFormat() now has a "+" modifier to allow trailing text in
+ the string to parse without throwing an error.
-============================
-9. Changes in INI directives
-============================
+- Added the ability to pass options to DOMDocument::loadHTML().
-- zend_extension_debug and zend_extension_ts have been removed. Always use the
- zend_extension directive to load Zend Extensions.
+- FilesystemIterator, GlobIterator and (Recursive)DirectoryIterator now use
+ the default stream context.
-- zend.ze1_compatibility_mode has been removed. If this INI directive is set to
- on, then an E_ERROR is emitted at startup.
+===========================
+7. Deprecated Functionality
+===========================
-- There is now support for special sections: [PATH=/opt/httpd/www.example.com/]
- and [HOST=www.example.com]. Directives set in these sections cannot be
- overridden by user-defined INI files or at runtime.
+- The following functions are deprecated in PHP 5.4:
+ - mcrypt_generic_end(): use mcrypt_generic_deinit() instead
+ - mysql_list_dbs()
-- Added mbstring.http_output_conv_mimetype. This directive specifies the
- regex pattern of content types for which mb_output_handler() is activated.
+========================
+8. Removed Functionality
+========================
-- It is now possible to use the full path to load modules using the "extension"
- directive.
+a. Removed features
-- "INI variables" can now be used almost anywhere in a php.ini file.
+ The following features have been removed from PHP 5.4:
-- It is now possible to use alphanumeric or variable indices in INI option
- arrays.
+ - Magic quotes
+ - Register globals
+ - Safe mode
+ - Session extension bug compatibility mode
+ - Y2K compliance mode
-- open_basedir is now PHP_INI_ALL
+b. Removed functions
-- Runtime tightening of open_basedir restrictions is now possible.
+ The following functions are no longer available in PHP 5.4:
-- The default value of session.use_only_cookies has changed to "1".
+ - define_syslog_variables()
+ - import_request_variables()
+ - session_is_registered()
+ - session_register()
+ - session_unregister()
+ - set_magic_quotes_runtime()
+ - mysqli_bind_param() (alias of mysqli_stmt_bind_param())
+ - mysqli_bind_result() (alias of mysqli_stmt_bind_result())
+ - mysqli_client_encoding() (alias of mysqli_character_set_name())
+ - mysqli_fetch() (alias of mysqli_stmt_fetch())
+ - mysqli_param_count() (alias of mysqli_stmt_param_count())
+ - mysqli_get_metadata() (alias of mysqli_stmt_result_metadata())
+ - mysqli_send_long_data() (alias of mysqli_stmt_send_long_data())
+ - mysqli::client_encoding() (alias of mysqli::character_set_name)
+ - mysqli_stmt::stmt() (never worked/always throws, undocumented)
-- The default value of oci8.default_prefetch has been changed from 10 to 100.
+c. Removed syntax
-- A new directive, request_order, controls the behavior of $_REQ