Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
abb7f28
[skip ci] Add timeout for FreeBSD
iluuu1994 Aug 12, 2025
0c044b3
Merge branch 'PHP-8.1' into PHP-8.2
iluuu1994 Aug 12, 2025
347723a
Merge branch 'PHP-8.2' into PHP-8.3
iluuu1994 Aug 12, 2025
571bded
Merge branch 'PHP-8.3' into PHP-8.4
iluuu1994 Aug 12, 2025
65c9614
Merge branch 'PHP-8.4'
iluuu1994 Aug 12, 2025
4de2ec3
[RFC] Deprecate xml_parser_free() (#19449)
DanielEScherzer Aug 12, 2025
9b13bb1
[RFC] Deprecate curl_close() (#19451)
DanielEScherzer Aug 12, 2025
699e563
[RFC] Deprecate curl_share_close() (#19452)
DanielEScherzer Aug 12, 2025
a68f3d6
[RFC] Deprecate imagedestroy() (#19454)
DanielEScherzer Aug 12, 2025
ffdc104
[RFC] Deprecate ReflectionClass::getConstant() for missing constants …
DanielEScherzer Aug 12, 2025
57a88b2
[RFC] Deprecate ReflectionProperty::getDefaultValue() without default…
DanielEScherzer Aug 12, 2025
c3bee21
NEWS/UPGRADING for recent deprecations
DanielEScherzer Aug 12, 2025
38beb44
[RFC] Extend #[\Override] to target properties (#19061)
jiripudil Aug 12, 2025
20c8c12
Fix #81724: openssl_cms_encrypt only allows specific ciphers
bukka Aug 11, 2025
fb7db49
[ci skip] Update NEWS for PHP 8.5.0 beta1
edorian Aug 12, 2025
b7c26eb
PHP-8.4 is now for PHP 8.4.13-dev
SakiTakamachi Aug 12, 2025
2f9e1ad
Merge branch 'PHP-8.4'
SakiTakamachi Aug 12, 2025
a0bd2c9
PHP-8.3 is now for PHP 8.3.26-dev
ericmann Aug 12, 2025
4aa43e2
Merge branch 'PHP-8.3' into PHP-8.4
ericmann Aug 12, 2025
b9ae984
Merge branch 'PHP-8.4'
ericmann Aug 12, 2025
2b415e4
Fix GH-19245: Success error message on TLS stream accept failure
bukka Jul 26, 2025
c8a4207
Merge branch 'PHP-8.3' into PHP-8.4
bukka Aug 12, 2025
ba97d86
Merge branch 'PHP-8.4'
bukka Aug 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1068,6 +1068,7 @@ jobs:
- zts: ${{ !inputs.run_freebsd_zts && true || '*never*' }}
name: "FREEBSD_${{ matrix.zts && 'ZTS' || 'NTS' }}"
runs-on: ubuntu-latest
timeout-minutes: 50
steps:
- name: git checkout
uses: actions/checkout@v4
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,7 @@ jobs:
if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
name: FREEBSD
runs-on: ubuntu-latest
timeout-minutes: 50
steps:
- name: git checkout
uses: actions/checkout@v4
Expand Down
23 changes: 22 additions & 1 deletion NEWS
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, PHP 8.5.0beta1
?? ??? ????, PHP 8.5.0beta2

- OpenSSL:
. Implement #81724 (openssl_cms_encrypt only allows specific ciphers).
(Jakub Zelenka)

14 Aug 2025, PHP 8.5.0beta1

- Core:
. Non-canonical cast names (boolean), (integer), (double), and (binary) have
Expand All @@ -12,6 +18,11 @@ PHP NEWS
. The backtick operator as an alias for shell_exec() has been deprecated.
(timwolla)
. Returning null from __debugInfo() has been deprecated. (DanielEScherzer)
. Support #[\Override] on properties. (Jiří Pudil)

- Curl:
. The curl_close() function has been deprecated. (DanielEScherzer)
. The curl_share_close() function has been deprecated. (DanielEScherzer)

- Date:
. The DATE_RFC7231 and DateTimeInterface::RFC7231 constants have been
Expand All @@ -26,6 +37,9 @@ PHP NEWS
. The $context parameter of the finfo_buffer() function has been deprecated
as it is ignored. (Girgias)

- GD:
. The imagedestroy() function has been deprecated. (DanielEScherzer)

- Intl:
. Intl's internal error mechanism has been modernized so that it
indicates more accurately which call site caused what error.
Expand Down Expand Up @@ -55,6 +69,10 @@ PHP NEWS
`_property_string()`). (DanielEScherzer)
. The setAccessible() methods of various Reflection objects have been
deprecated, as those no longer have an effect. (timwolla)
. ReflectionClass::getConstant() for constants that do not exist has been
deprecated. (DanielEScherzer)
. ReflectionProperty::getDefaultValue() for properties without default values
has been deprecated. (DanielEScherzer)

- SPL:
. Unregistering all autoloaders by passing the spl_autoload_call() function
Expand All @@ -74,6 +92,9 @@ PHP NEWS
. Fixed bug GH-19153 (#[\Attribute] validation should error on
trait/interface/enum/abstract class). (DanielEScherzer)

- XML:
. The xml_parser_free() function has been deprecated. (DanielEScherzer)

31 Jul 2025, PHP 8.5.0alpha4

- Core:
Expand Down
30 changes: 29 additions & 1 deletion UPGRADING
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@ PHP 8.5 UPGRADE NOTES
RFC: https://wiki.php.net/rfc/pipe-operator-v3
. Constructor property promotion can now be used for final properties.
RFC: https://wiki.php.net/rfc/final_promotion
. #[\Override] can now be applied to properties.
RFC: https://wiki.php.net/rfc/override_properties

- Curl:
. Added support for share handles that are persisted across multiple PHP
Expand Down Expand Up @@ -334,6 +336,14 @@ PHP 8.5 UPGRADE NOTES
Return an empty array instead.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_debuginfo_returning_null

- Curl:
. The curl_close() function has been deprecated, as CurlHandle objects are
freed automatically.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_curl_close
. The curl_share_close() function has been deprecated, as CurlShareHandle
objects are freed automatically.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_curl_share_close

- Date:
. The DATE_RFC7231 and DateTimeInterface::RFC7231 constants have been
deprecated. This is because the associated timezone is ignored and always
Expand All @@ -348,6 +358,11 @@ PHP 8.5 UPGRADE NOTES
as it is ignored.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_context_parameter_for_finfo_buffer

- GD:
. The imagedestroy() function has been deprecated, as GdImage objects are
freed automatically.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_imagedestroy

- Hash:
. The MHASH_* constants have been deprecated. These have been overlooked
when the mhash*() function family has been deprecated per
Expand Down Expand Up @@ -375,11 +390,16 @@ PHP 8.5 UPGRADE NOTES
DSNs coming from remote URIs.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_pdo_s_urischeme


- Reflection:
. The setAccessible() methods of various Reflection objects have been
deprecated, as those no longer have an effect.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionsetaccessible
. Calling ReflectionClass::getConstant() for constants that do not exist has
been deprecated.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionclassgetconstant_for_missing_constants
. Calling ReflectionProperty::getDefaultValue() for properties without default
values has been deprecated.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionpropertygetdefaultvalue_for_properties_without_default_values

- SPL:
. Unregistering all autoloaders by passing the spl_autoload_call() function
Expand All @@ -402,6 +422,11 @@ PHP 8.5 UPGRADE NOTES
explicitly instead.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_null_to_readdir_rewinddir_and_closedir

- XML:
. The xml_parser_free() function has been deprecated, as XMLParser objects
are freed automatically.
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_xml_parser_free

========================================
5. Changed Functions
========================================
Expand Down Expand Up @@ -431,6 +456,9 @@ PHP 8.5 UPGRADE NOTES
$digest_algo that allows specifying hash digest algorithm for OEAP padding.
. openssl_sign() and openssl_verify() have new parameter $padding to allow
using more secure RSA PSS padding.
. openssl_cms_encrypt() $cipher_algo parameter can be a string with the
cipher name. That allows to use more algorithms including AES GCM cipher
algorithms for auth enveloped data.

- PCNTL:
. pcntl_exec() now has a formal return type of false.
Expand Down
39 changes: 39 additions & 0 deletions Zend/tests/attributes/override/properties_01.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
--TEST--
#[\Override]: Properties
--FILE--
<?php

interface I {
public mixed $i { get; }
}

interface II extends I {
#[\Override]
public mixed $i { get; }
}

class P {
public mixed $p1;
public mixed $p2;
}

class PP extends P {
#[\Override]
public mixed $p1;
public mixed $p2;
}

class C extends PP implements I {
#[\Override]
public mixed $i;
#[\Override]
public mixed $p1;
public mixed $p2;
public mixed $c;
}

echo "Done";

?>
--EXPECT--
Done
15 changes: 15 additions & 0 deletions Zend/tests/attributes/override/properties_02.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--TEST--
#[\Override]: Properties: No parent class.
--FILE--
<?php

class C {
#[\Override]
public mixed $c;
}

echo "Done";

?>
--EXPECTF--
Fatal error: C::$c has #[\Override] attribute, but no matching parent property exists in %s on line %d
21 changes: 21 additions & 0 deletions Zend/tests/attributes/override/properties_03.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
--TEST--
#[\Override]: Properties: No parent class, but child implements matching interface.
--FILE--
<?php

interface I {
public mixed $i { get; }
}

class P {
#[\Override]
public mixed $i;
}

class C extends P implements I {}

echo "Done";

?>
--EXPECTF--
Fatal error: P::$i has #[\Override] attribute, but no matching parent property exists in %s on line %d
21 changes: 21 additions & 0 deletions Zend/tests/attributes/override/properties_04.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
--TEST--
#[\Override]: Properties: No parent class, but child implements matching interface (2).
--FILE--
<?php

interface I {
public mixed $i { get; }
}

class C extends P implements I {}

class P {
#[\Override]
public mixed $i;
}

echo "Done";

?>
--EXPECTF--
Fatal error: P::$i has #[\Override] attribute, but no matching parent property exists in %s on line %d
26 changes: 26 additions & 0 deletions Zend/tests/attributes/override/properties_05.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
--TEST--
#[\Override]: Properties: No parent interface.
--FILE--
<?php

interface I {
#[\Override]
public mixed $i { get; }
}

interface II extends I {}


class C implements II {
public mixed $i;
}

class C2 implements I {
public mixed $i;
}

echo "Done";

?>
--EXPECTF--
Fatal error: I::$i has #[\Override] attribute, but no matching parent property exists in %s on line %d
15 changes: 15 additions & 0 deletions Zend/tests/attributes/override/properties_06.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--TEST--
#[\Override]: Properties: On trait.
--FILE--
<?php

trait T {
#[\Override]
public mixed $t;
}

echo "Done";

?>
--EXPECT--
Done
19 changes: 19 additions & 0 deletions Zend/tests/attributes/override/properties_07.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
--TEST--
#[\Override]: Properties: On used trait without parent property.
--FILE--
<?php

trait T {
#[\Override]
public mixed $t;
}

class Foo {
use T;
}

echo "Done";

?>
--EXPECTF--
Fatal error: Foo::$t has #[\Override] attribute, but no matching parent property exists in %s on line %d
23 changes: 23 additions & 0 deletions Zend/tests/attributes/override/properties_08.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
--TEST--
#[\Override]: Properties: On used trait with interface property.
--FILE--
<?php

trait T {
#[\Override]
public mixed $i;
}

interface I {
public mixed $i { get; }
}

class Foo implements I {
use T;
}

echo "Done";

?>
--EXPECT--
Done
19 changes: 19 additions & 0 deletions Zend/tests/attributes/override/properties_09.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
--TEST--
#[\Override]: Properties: Parent property is private, child property is public.
--FILE--
<?php

class P {
private mixed $p;
}

class C extends P {
#[\Override]
public mixed $p;
}

echo "Done";

?>
--EXPECTF--
Fatal error: C::$p has #[\Override] attribute, but no matching parent property exists in %s on line %d
19 changes: 19 additions & 0 deletions Zend/tests/attributes/override/properties_10.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
--TEST--
#[\Override]: Properties: Parent property is private, child property is private.
--FILE--
<?php

class P {
private mixed $p;
}

class C extends P {
#[\Override]
private mixed $p;
}

echo "Done";

?>
--EXPECTF--
Fatal error: C::$p has #[\Override] attribute, but no matching parent property exists in %s on line %d
19 changes: 19 additions & 0 deletions Zend/tests/attributes/override/properties_11.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
--TEST--
#[\Override]: Properties: Parent property is protected, child property is public.
--FILE--
<?php

class P {
protected mixed $p;
}

class C extends P {
#[\Override]
public mixed $p;
}

echo "Done";

?>
--EXPECT--
Done
Loading