【问题标题】:Starting out with Zend framework 2, class not found errors从 Zend 框架 2 开始,类未找到错误
【发布时间】:2013-01-21 10:55:11
【问题描述】:

我正在尝试从一个简单的 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 包含中。

【问题讨论】:

  • 您需要将 Zend 库路径添加到您的 PHP 包含路径或实现某种从指定路径加载文件的自动加载器。
  • include_path .:/php/includes:/var/www/html/site/library 当前已设置
  • 您是否启用了自动加载器?
  • 感谢 Sam 和 Gordon,这是丢失的自动装弹机,遗憾的是在 framework.zend.com/manual/2.0/en/user-guide/overview.html 中根本没有提到这一点

标签: php apache zend-framework2


【解决方案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);


?>

【讨论】:

    【解决方案2】:

    我认为您在 *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() 响应。

    【讨论】:

    • 为了清楚起见,已编辑问题,include_path 当前设置为 .:/php/includes:/var/www/html/site/library
    • 好的,确保大小写正确(图书馆或图书馆),然后尝试按照@LJT 所说的去做:
    • 好的,确保大小写正确(Library o library),然后尝试执行@LJT 所说的操作:require_once 'Zend\Loader\StandardAutoloader.php';或使用 Composer (getcomposer.org) 之类的东西或创建符合 PSR-0 的自动加载函数
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2013-03-03
      相关资源
      最近更新 更多