web-dev-qa-db-fra.com

PHP 5.4 et Drupal 7

J'ai entendu dire que PHP 5.4 est plus rapide que PHP 5.3.

Serait-il correct que Drupal 7 s'exécute sous 5.4, ou divers modules contribués peuvent commencer à casser le site?

Quoi qu'il en soit, si j'utilise le cache d'opcode APC, peut-être 5.4, n'offrirait aucun avantage?

Merci

30
john

J'ai commencé à exécuter Drupal 7 sur PHP 5.4 moi-même avec seulement des problèmes mineurs sous forme d'avis et d'avertissements).

En plus de 7.12, vous aurez besoin de ces deux correctifs pour résoudre les problèmes provoquant PHP pour se plaindre:

http://drupal.org/files/menu-link-save-1338282-15-d7.patch

http://drupal.org/files/database-query-clone-1414412-11-d7_0.patch

L'un de ces correctifs a déjà été appliqué à -dev, il le sera donc en 7.13, et l'autre devrait bientôt arriver. Dans tous les cas auxquels je peux penser immédiatement, la mauvaise pratique à l'origine des avertissements 5.4 a été une mauvaise utilisation des clés de tableau.

La première version de ceci ressemble à ceci:

$some_key = function_call();
return $some_array[$some_key];

Parfois, l'appel de fonction retourne un tableau ou un objet, dont aucun n'est une clé de tableau valide. Dans PHP 5.3, ce qui se passe réellement et silencieusement ressemble à ceci:

$some_key = function_call();
return $some_array[(string)$some_key];

PHP 5.4 prévient cependant que ce n'est peut-être pas ce que vous voulez. La deuxième version est exactement la même, mais l'inverse.

$some_key = 'a_valid_key';
$may_be_a_string = function_call();
return $may_be_a_string[$some_key];

ce qui donne un message d'erreur comme

Décalage de chaîne non autorisé 'a_valid_key'

n'importe quand $may_be_a_string est en fait une chaîne, pas un tableau, car les seuls index de chaîne valides sont des entiers.

Comme les problèmes sont faciles à comprendre et que le correctif est (principalement) facile à appliquer, j'ai constaté que dans plusieurs cas, les versions de -dev sont déjà mises à jour ou que les correctifs publiés dans la file d'attente, qui sont susceptibles d'entrer rapidement en raison de leur nature simple.

Après quelques tests, je ne pense pas que la version 5.4 soit "dangereuse" à exécuter en production, et j'ai déjà commencé à exécuter mes petits sites personnels dessus. J'encourage les autres à faire de même, afin que nous puissions éviter l'adoption historiquement lente des nouvelles versions PHP.

Au moment d'écrire ces lignes, la dernière version d'APC, 3.1.9, ne fonctionne pas avec 5.4. J'ai réussi à le construire et à l'utiliser depuis git.

L'utilisation d'APC réduira probablement les performances de la mise à niveau de la version PHP, mais ne la supprimera pas.

28
Letharion

Vous devez éviter PHP 5.4 car il n'y a pas d'APC stable pour cela. Les performances pour PHP 5.3 + APC seraient supérieures à 5.4.

2
vamur