Я создал приложение ZF, использующее 1.10 для развертывания на сервере RHEL в корпоративном клиенте, который имеет PHP 5.1.6. Это не будет работать.
Я гуглил и теперь понимаю, что это версия PHP. Я не осознавал, что ZF предъявлял минимальные требования к PHP 5.2.4, и вызовы HeadLink, по-видимому, вызывают фатальную ошибку «Вызов неопределенного метода 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
Клиент не будет обновлять свой PHP; Я не хочу переписывать приложение без ZF, и я бы предпочел не понижать ZF до более ранней версии.
Есть ли какой-нибудь патч, который я могу использовать, чтобы добавить ksort () к ZF 1.10, чтобы обойти это? Могут быть и другие проблемы, но я застрял прямо сейчас.
Любой совет приветствуется
Большое спасибо
Ian
РЕДАКТИРОВАТЬ: Как я уже сказал в комментарии ниже, я ожидаю, что многие люди уже сталкивались с этим и будут продолжать это делать, поскольку RHEL5 будет стандартом в корпоративных средах в течение хорошего времени. Я надеялся на ссылку на существующее решение, а не на то, чтобы разработать его с нуля.
ОБНОВЛЕНИЕ: я использовал патч, связанный с принятым ответом, и он решил проблему для меня.
Это добавление следующего открытого метода в Zend / View / Helper / Placeholder / Container / Abstract.php
/**
* Sort the array by key
*
* @return array
*/
public function ksort()
{
$items = $this->getArrayCopy();
return ksort($items);
}
Была еще одна проблема; уведомление PHP, вызванное преобразованием строки в Zend_View_Helper_Doctype. Сравнивая эту функцию с аналогичными выше и ниже, кажется, что это ошибка в библиотеке
public function isHtml5() {
return (stristr($this->doctype(), '<!DOCTYPE html>') ? true : false);
}
Изменено на:
public function isHtml5() {
return (stristr($this->getDoctype(), '<!DOCTYPE html>') ? true : false);
}
Заплатить саму библиотеку было последним, что я обычно делал, но в этом случае это вывело меня из положения. Мы позаботимся о том, чтобы патч был обновлен в репозитории и, очевидно, документирован для будущих разработчиков.