5

我正在尝试从一个简单的 LAMP 站点开始,但似乎无法让 Zend 框架被我的本地 Apache 实例拾取。我从 Windows 上的 XAMPP 开始,然后尝试了一个带有手动 Apache/PHP 安装的 Centos 6 VM,但仍然在下面两个上得到相同的错误。phpinfo() 工作正常,站点的其余部分也是如此。

Fatal error: Class 'Zend\Log\Logger' not found in /var/www/html/site/public/test.php on line 20

我的网站代码是调用 Zend 框架记录器的一个相当简单的测试,如下所示

use Zend\Log\Logger;
use Zend\Log\Writer;
echo "<p>Hello world</p>";
echo $_POST["VIN"]; 
phpinfo();
$logger = new Zend\Log\Logger;
$writter = new Zend\Log\Writer\Stream('php://output');
$logger->addWriter($writer);
?>

我的 Apache linux httpd.conf 是

<VirtualHost *:80>

DocumentRoot /var/www/html/site/public
<Directory /var/www/html/site/public>              
    DirectoryIndex test.php 
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

我的 Zend 框架位于 /var/www/html/site/library/Zend 中,并且我也将 /var/www/html/site/library 添加到了 php.ini 包含中。

4

3 回答 3

1

对于遇到此错误的其他人,您需要使用自动加载器,这在 Zend 框架入门 wiki 中未提及。

<?php 
use Zend\Loader\StandardAutoloader;
use Zend\Log\Logger;
use Zend\Log\Writer;
require_once dirname((__DIR__)).'\library\Zend\Loader\StandardAutoloader.php';
$loader = new StandardAutoloader(array('autoregister_zf' => true));
$loader->register();


echo "<p>Hello world</p>";
echo $_POST["VIN"]; 
phpinfo();

$logger = new Zend\Log\Logger;
$writer = new Zend\Log\Writer\Stream('php://output');
$logger->addWriter($writer);


?>
于 2013-01-21T11:25:18.193 回答
0

我认为您在 *include_path* 中包含了错误的路径,包括/var/www/html/site/Librarynot /var/www/html/site/Library/Zend

检查: https ://github.com/zendframework/zf2/blob/master/INSTALL.md

或者在此处粘贴您的 php.ini 配置或 phpinfo() 响应。

于 2013-01-21T11:04:30.200 回答
0

自动加载器确实是需要的。如果您的 php.ini 中包含库的路径,则可以添加以下代码以使 Zend 按预期工作:

require_once 'Zend/Loader/StandardAutoloader.php';
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->register();
于 2014-05-21T06:45:53.313 回答