Pol*_*nby 4 php zend-framework rhel
我使用1.10构建了一个ZF应用程序,用于在企业客户端的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
Run Code Online (Sandbox Code Playgroud)
客户端不会升级他们的PHP; 我不想在没有ZF的情况下重写应用程序,而且我宁愿不将ZF降级到一个非常早期的版本.
是否有一些补丁我可以用来添加ksort()到ZF 1.10来解决这个问题?可能还有其他问题,但这就是我现在被困住的地方.
欢迎任何建议
非常感谢
伊恩
编辑:正如我在下面的评论中所说,我希望很多人之前已经打过这个,并且将继续这样做,因为RHEL5将成为企业环境中的标准,以便在未来的好时间内完成.我希望链接到现有的解决方案而不必从头开始设计.
更新:我在接受的答案中使用了链接的补丁,它为我解决了问题.
这是将以下公共方法添加到Zend/View/Helper/Placeholder/Container/Abstract.php
/**
* Sort the array by key
*
* @return array
*/
public function ksort()
{
$items = $this->getArrayCopy();
return ksort($items);
}
Run Code Online (Sandbox Code Playgroud)
还有一个问题; 由Zend_View_Helper_Doctype中的字符串转换引起的PHP通知.将此函数与上下相似的函数进行比较,这似乎是库中的错误
public function isHtml5() {
return (stristr($this->doctype(), '<!DOCTYPE html>') ? true : false);
}
Run Code Online (Sandbox Code Playgroud)
变成:
public function isHtml5() {
return (stristr($this->getDoctype(), '<!DOCTYPE html>') ? true : false);
}
Run Code Online (Sandbox Code Playgroud)
修补库本身是我通常做的最后一件事,但在这种情况下,它让我脱离了一个位置.我们将确保修补程序在repo中进行版本化,并明确记录给未来的开发人员.
我今天遇到了同样的问题.我在这篇博文中找到了解决方案.
在/Zend/View/Helper/Placeholder/Container/Abstract.php中添加以下代码段:
/**
* Sort the array by key
*
* @return array
*/
public function ksort()
{
$items = $this->getArrayCopy();
return ksort($items);
}
Run Code Online (Sandbox Code Playgroud)