PHP 8.4.0 RC4 available for testing

Sonstige Änderungen

Änderungen in SAPI-Modulen

Apache2Handler

Das PHP-Modul wurde von php7_module in php_module umbenannt.

Geänderte Funktionen

Reflection

Die Ergebnisse von ReflectionClass::getReflectionConstants() können nun mit dem neuen Parameter filter gefiltert werden. Drei neue Konstanten wurden hinzugefügt, die damit verwendet werden können:

Standard

Die mathematischen Funktionen abs(), ceil(), floor() und round() berücksichtigen die Direktive strict_types nun korrekt. Zuvor wurde der erste Parameter auch im strikten Typisierungsmodus erzwungen.

Zip

Sonstige Änderungen bei Erweiterungen

CURL

  • Die Erweiterung CURL benötigt jetzt mindestens libcurl 7.29.0.

  • Der veraltete Parameter version der Funktion curl_version() wurde entfernt.

Datum und Zeit

Die Klasse DatePeriod implementiert nun IteratorAggregate anstelle von Traversable.

DOM

Die Klassen DOMNamedNodeMap und DOMNodeList implementieren nun IteratorAggregate anstelle von Traversable.

Intl

Die Klassen IntlBreakIterator und ResourceBundle implementieren nun IteratorAggregate anstelle von Traversable.

Enchant

Die Erweiterung enchant verwendet nun standardmäßig libenchant-2, falls verfügbar. libenchant Version 1 wird noch unterstützt, ist aber veraltet und könnte in Zukunft entfernt werden.

GD

  • Der Parameter num_points der Funktionen imagepolygon(), imageopenpolygon() und imagefilledpolygon() ist nun optional, d. h. diese Funktionen können nun entweder mit 3 oder mit 4 Parametern aufgerufen werden. Falls der Parameter weggelassen wird, wird er anhand von count($points)/2 berechnet.

  • Die Funktion imagegetinterpolation() wurde hinzugefügt, um die aktuelle Interpolationsmethode zu ermitteln.

JSON

Die Erweiterung JSON kann nicht mehr deaktiviert werden und ist immer ein integraler Bestandteil eines jeden PHP-Builds, ähnlich wie die Erweiterung date.

MBString

Die Unicode-Datentabellen wurden auf Version 13.0.0 aktualisiert.

PDO

PDOStatement implementiert nun IteratorAggregate anstelle von Traversable.

LibXML

Die minimal erforderliche libxml-Version ist nun 2.9.0. Dies bedeutet, dass das Laden von externen Entities nun garantiert standardmäßig deaktiviert ist und keine zusätzlichen Maßnahmen zum Schutz vor XXE-Angriffen ergriffen werden müssen.

MySQLi / PDO-MySQL

  • Wenn mysqlnd nicht verwendet wird (dies ist die standardmäßige und empfohlene Option), ist die niedrigste unterstützte libmysqlclient-Version nun 5.5.

  • mysqli_result implementiert nun IteratorAggregate anstelle von Traversable.

PGSQL / PDO-PGSQL

Die Erweiterungen PGSQL und PDO-PGSQL benötigen nun mindestens libpq 9.1.

Readline

Der Aufruf von readline_completion_function() vor dem Start der interaktiven Eingabeaufforderung (z. B. in auto_prepend_file) überschreibt nun die standardmäßige Vervollständigungs-Funktion der interaktiven Eingabeaufforderung. Zuvor funktionierte readline_completion_function() nur, wenn sie nach dem Start der interaktiven Eingabeaufforderung aufgerufen wurde.

SimpleXML

SimpleXMLElement implementiert nun RecursiveIterator und übernimmt die Funktionalität von SimpleXMLIterator. SimpleXMLIterator ist eine leere Erweiterung von SimpleXMLElement.

Änderungen bei der Handhabung von INI-Dateien

  • com.dotnet_version ist eine neue INI-Direktive, um die Version des .NET-Frameworks festzulegen, das für dotnet-Objekte verwendet wird.

  • zend.exception_string_param_max_len ist eine neue INI-Direktive, um die maximale Länge einer Zeichenkette in einem Parameter eines stringifizierten Stackstraces festzulegen.

EBCDIC

EBCDIC-Targets werden nicht mehr unterstützt, wobei es eher unwahrscheinlich ist, dass sie überhaupt noch funktionieren.

Performance

  • Der Erweiterung opcache wurde ein Just-In-Time- (JIT) Compiler hinzugefügt.

  • Die Funktion array_slice() durchsucht bei einem Array ohne Lücken nicht mehr das gesamte Array, um den Start-Offset zu finden. Dies kann die Laufzeit der Funktion bei großen Offsets und kleinen Längen erheblich reduzieren.

  • Wenn die Locale von LC_CTYPE "C" ist (was der Standard ist), verwendet die Funktion strtolower() nun die SIMD-Implementierung.

add a note

User Contributed Notes 1 note

up
0
barry dot nelson at amobiledevice dot com
1 year ago
If loading the PHP8 apache module on SuSe Linux, the configuration scripts incorrectly try to load it with automatically generated load statement of:
LoadModule php8_module /usr/lib64/apache2/mod_php8.so
This does not work, the patch below fixes the conf file generator...

--- /usr/share/apache2/get_module_list 2023-01-14 22:41:49.586825349 -0500
+++ /usr/share/apache2/get_module_list 2023-01-14 22:42:02.171600410 -0500
@@ -91,4 +91,8 @@
esac

+ if [ "$module_id" = "php8_module" ]; then
+ module_id="php_module"
+ fi
+
if [[ -f $module_path ]]; then
printf "LoadModule %-30s %s\n" $module_id $module_path >&3
To Top