我正在尝试使用简单的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包含。
答案 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();