从Zend框架2开始,找不到类错误

时间:2013-01-21 10:55:11

标签: php apache zend-framework2

我正在尝试使用简单的LAMP站点,但似乎无法让我的本地Apache实例获取Zend框架。我在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包含。

3 个答案:

答案 0 :(得分:1)

对于遇到此错误的任何其他人,您需要使用自动加载器,这是Zend框架上未提及的维基启动。

<?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);


?>

答案 1 :(得分:0)

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

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

或者在这里粘贴你的php.ini配置或phpinfo()响应。

答案 2 :(得分:0)

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

require_once 'Zend/Loader/StandardAutoloader.php';
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->register();