Zend Framework在PHP 7上

我最近升级了我的服务器使用PHP 7.0。 但是,在此升级之后,我注意到我的Web应用程序无法正常工作。 我看着我的apache2 error.log文件,发现这个错误:

PHP致命错误:未捕获错误:未find类“Zend_Loader_Autoloader”

当我在命令行上input'php -v'时,显示如下:

PHP 7.0.0-5 + deb.sury.org〜trusty + 1(cli)(NTS)版权所有(c)1997-2015 PHP集团Zend引擎v3.0.0,版权所有(c)1998-2015 Zend技术与Zend OPcache版本号(c)1999-2015,由Zend Technologies提供

它看起来像框架安装,但只为cli(不是Apache)。

有谁知道如何启用它的Apache?

谢谢。

你从php -v看到的内容并不能反映你正在使用的应用程序框架 (在这种情况下,Zend框架)。 这个问题更可能出现在您正在运行的应用程序级代码中,这似乎是一个Zend Framework 1应用程序。

我在使用Doctrine作为ORM层的ZF1应用程序中遇到了非常类似的错误。 在Doctrine的类加载器中,我不得不为PHP 7添加额外的检查来处理PHP 7改变variables解释的一些方法。 在library/Doctrine/Common/ClassLoader.php 224行左右,我改变了:

 } else if ($loader[0]::$loader[1]($className)) { // array('ClassName', 'methodName') return true; } 

至:

 } else if { if (substr(PHP_VERSION_ID, 0, 1) == '7') { $method = $loader[0] . '::' . $loader[1]; if ($method($className)) { // array('ClassName', 'methodName') return true; } } else { if ($loader[0]::$loader[1]($className)) { return true; } } } 

不知道这是否会专门解决您的问题。 如果这不起作用,你可以尝试在你的PHP脚本中明确地要求Zend自动加载器(假定library/Zend在你的includepath中):

 require_once 'Loader/Autoloader.php'; 

希望有所帮助!