J'ai construit une application ZF en utilisant 1.10 pour le déploiement sur le serveur RHEL dans un client d'entreprise, qui a PHP 5.1.6. Ça ne marchera pas.L'exécution de Zend Framework PHP 5.1.6 - patch ou correctif pour ksort()?
Je googlé et il est maintenant réaliser la version de PHP. Je ne savais pas que ZF avait une exigence minimale pour PHP 5.2.4, et appelle à HeadLink semblent causer une erreur fatale « Appel à la méthode non définie Zend_View_Helper_Placeholder_Container :: ksort() »:
PHP Fatal error: Call to undefined method Zend_View_Helper_Placeholder_Container::ksort() in /library/ Zend/View/Helper/HeadLink.php on line 321
Le client a gagné » t mettre à jour leur PHP; Je ne veux pas réécrire l'application sans ZF, et je préfère ne pas rétrograder ZF à une version grossièrement antérieure.
Est-il un correctif que je peux utiliser pour ajouter ksort() à ZF 1.10 pour contourner cela? Il y a peut-être d'autres problèmes, mais c'est là où je suis coincé en ce moment.
Tous les conseils de bienvenue
Un grand merci
Ian
EDIT: Comme je l'ai dit dans un commentaire ci-dessous, je pense beaucoup de gens ont frappé cette avant et continueront à le faire que RHEL5 sera une norme dans les environnements d'entreprise pour un bon moment à venir. J'espérais un lien vers une solution existante plutôt que d'en concevoir un à partir de zéro.
MISE À JOUR: je le patch lié à la réponse acceptée et elle a fixé le problème pour moi.
C'est la méthode publique ajoutant à la suite Zend/View/Helpers/Placeholder/Container/Abstract.php
/**
* Sort the array by key
*
* @return array
*/
public function ksort()
{
$items = $this->getArrayCopy();
return ksort($items);
}
Il y avait une question qui reste; un avis PHP provoqué par une conversion de chaîne dans Zend_View_Helper_Doctype. En comparant cette fonction à d'autres semblables ci-dessus et ci-dessous, cela semble être une erreur dans la bibliothèque
public function isHtml5() {
return (stristr($this->doctype(), '<!DOCTYPE html>') ? true : false);
}
Changé à:
public function isHtml5() {
return (stristr($this->getDoctype(), '<!DOCTYPE html>') ? true : false);
}
Patcher la bibliothèque elle-même était la dernière chose que je devrais normalement faire, mais dans ce cas, il m'a fait sortir d'un endroit. Nous nous assurerons que le patch est versionné dans le repo et documenté de toute évidence pour les futurs développeurs.
Merci à PHP excellent support FastCGI de 5.3, vous pourriez être en mesure de convaincre le client de faire une installation parallèle de 5.3. Vous devriez pouvoir configurer Apache pour utiliser FastCGI 5.3 pour juste le site en question, tout en laissant tous les autres sites sur le serveur (supposition aveugle ici) fonctionnant en 5.1.6 avec mod_php. Ne pas afficher cela comme une réponse parce que c'est un peu long. – Charles
@Charles - merci, une solution de contournement ingénieuse! Je doute qu'ils le feraient mais il n'y a pas de mal à mentionner la possibilité au cas où ils mordraient. – Polsonby