PHP 8.4.1 Released!

Autres changements

Changement dans les modules SAPI

Apache2Handler

Le module PHP a été renommé de php7_module pour php_module.

Fonctions changées

Reflection

Les résultats de ReflectionClass::getConstants() et ReflectionClass::getReflectionConstants() peuvent maintenant être filtrés avec un nouveau paramètre filter. Trois nouvelles constantes ont été ajoutées pour être utilisées avec celui-ci:

Standard

Les fonctions de math abs(), ceil(), floor() et round() respectent maintenant correctement les directives strict_types. Auparavant, elles forçaient le premier argument même en mode de type strict.

Zip

Autre changements aux extensions

CURL

  • L'extension CURL requiert maintenant au moins libcurl 7.29.0.

  • Le paramètre déprécié version de curl_version() a été supprimé.

Date et heure

DatePeriod implémente maintenant IteratorAggregate (à la place de Traversable).

DOM

DOMNamedNodeMap et DOMNodeList implémentent maintenant IteratorAggregate (à la place de Traversable).

Intl

IntlBreakIterator et ResourceBundle implémentent maintenant IteratorAggregate (à la place de Traversable).

Enchant

L'extension enchant utilise maintenant libenchant-2 par défaut quand disponible. La version 1 de libenchant est toujours supportée mais est dépréciée et pourrait être supprimée dans le futur.

GD

JSON

L'extension JSON ne peut plus être désactivée et est maintenant une partie intégrale de toute construction PHP, similaire à l'extension date.

MBString

La table de données Unicode a été mise à jour en version 13.0.0.

PDO

PDOStatement implémente maintenant IteratorAggregate (à la place de Traversable).

LibXML

La version minimum requise de libxml est maintenant 2.9.0. Cela signifie que le chargement d'entités externes est maintenant garanti d'être désactivé par défaut, et aucune étape supplémentaire n'est nécessaire pour se protéger contre les attaques XXE.

MySQLi / PDO MySQL

  • Lorsque mysqlnd n'est pas utilisé (ce qui est l'option recommandé par défaut), la version minimum supportée de libmysqlclient est maintenant 5.5.

  • mysqli_result implemente maintenant IteratorAggregate (à la place de Traversable).

PGSQL / PDO PGSQL

Les extensions PGSQL et PDO PGSQL requièrent maintenant au moins libpq 9.1.

Readline

Appeler readline_completion_function() avant que l'invite interactive ne commence (par exemple dans auto_prepend_file) remplacera maintenant la fonction de complétion par défaut de l'invite interactive. Auparavant, readline_completion_function() ne fonctionnait que lorsqu'elle était appelée après le démarrage de l'invite interactive.

SimpleXML

SimpleXMLElement maintenant implémente RecursiveIterator et a absorbé la fonctionnalité de SimpleXMLIterator. SimpleXMLIterator est une extension vide de SimpleXMLElement.

Changement de la gestion du fichier INI

  • com.dotnet_version est une nouvelle directive INI pour choisir la version du framework .NET à utiliser pour les objets dotnet.

  • zend.exception_string_param_max_len est une nouvelle directive INI pour changer la longueur maximum d'une chaîne de caratères dans un argument d'une trace d'appels transformée en chaîne de caratères.

EBCDIC

Les cibles EBCDIC ne sont plus supportées, bien qu'il soit peu probable qu'elles fonctionnaient encore.

Performances

  • Un compilateur à la volé (Just-In-Time ou JIT) a été ajouté à l'extension opcache.

  • array_slice() sur un tableau sans trou ne scan plus l'entièreté du tableau pour trouver l'écart de départ. Cela peut réduire significativement le temps d'exécution de la fonction avec de grands écarts et de petites longueurs.

  • strtolower() utilise maintenant une implémentation SIMD quand la locale "C" LC_CTYPE est utilisée (qui est celle par défaut).

add a note

User Contributed Notes 1 note

up
-2
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