在服务器范围内安装和配置 Zend Framework 2 [Ubuntu] 并测试运行 ZendSkeletonApplication

在服务器范围内安装和配置 Zend Framework 2 [Ubuntu] 并测试运行 ZendSkeletonApplication

我正在尝试一次性为我的所有子域名安装 ZF2(Ubuntu 12.04)。

ZF2 刚刚推出了它的第一个稳定版本,所以我想将它安装在我的开发服务器上并最终开始使用它。

我下载了 ZF2 并将文件解压到/var/ZF2/(现在包含 Zend/[所有组件])。

然后我编辑/etc/php5/apache2/php.ini并添加了 ZF2 文件的路径:

include_path = ".:/var/ZF2"

然后我下载了 ZendSkeletonApplication 并将其解压到/var/www/骨架

我知道建议composer.phar安装 ZF2 应用程序,但是:

  • 我不想在本地安装 ZF2...我想进行服务器范围的安装,以便能够在我的开发服务器上的所有域/子域上使用我的 Zend 组件。

  • 在使用任何自动安装过程之前,我真的很想先通过手动操作来了解该过程。

显然,当我启动 ZendSkeletonApplication 时出现了问题,当点击以下 URL 时,我得到了以下信息:

http://www.myDevServer.com/skeleton/public/

Fatal error: Uncaught exception 'RuntimeException' with message
'Unable to load ZF2. Run `php composer.phar install` or define 
a ZF2_PATH environment variable.' 
in /var/www/skeleton/init_autoloader.php:48 Stack trace: #0 
/var/www/skeleton/public/index.php(9): include() #1 {main} 
thrown in /var/www/skeleton/init_autoloader.php on line 48

我浏览过文档、教程等,但对于这种配置没有直接的答案。

在官方文档中,在(非常短的)安装章节中,我看到了在 PHP 中添加包含路径的参考。但没有例子……

http://zf2.readthedocs.org/en/latest/ref/installation.html

获得 Zend Framework 副本后,您的应用程序需要能够访问库文件夹中的框架类。虽然有多种方法可以实现这一点,但您的 PHP include_path 需要包含 Zend Framework 库的路径。

但当我读到“入门”一章时,composer.phar仅此而已……

http://zf2.readthedocs.org/en/latest/user-guide/skeleton-application.html

我不是系统管理员,只是 Zend 的爱好者。我确信这个 PEBKAC 问题对于已经使用过 ZF2 之前的测试版的人来说可能很明显。感谢您的帮助。


编辑:

问题已解决,感谢 Daniel M.

只需在 httpd.conf 中设置 ZF2_PATH 即可。

SetEnv ZF2_PATH /var/ZF2

我还删除了 php.ini 中的 include_path 引用,一切正常。所以我不知道为什么 Zend 建议在其官方文档中包含它。

答案1

检查init_autoloader.php应用程序的基目录:

// Support for ZF2_PATH environment variable or git submodule
if (($zf2Path = getenv('ZF2_PATH') ?: (is_dir('vendor/ZF2/library') ? 'vendor/ZF2/library' : false)) !== false) {
    if (isset($loader)) {
        $loader->add('Zend', $zf2Path . '/Zend');
    } else {
        include $zf2Path . '/Zend/Loader/AutoloaderFactory.php';
        Zend\Loader\AutoloaderFactory::factory(array(
            'Zend\Loader\StandardAutoloader' => array(
                'autoregister_zf' => true
            )
        ));
    }
}

最简单的方法是设置ZF2_PATH环境变量。如果你正在运行 Apache Web 服务器,那么你需要做的就是mod_env。您可以创建一个.htaccess设置变量的文件。

如果它仍然无法运行,您可以init_autoloader.php轻松调试该文件。

答案2

您也可以使用 pyrus.phar 进行安装。请参阅以下信息http://packages.zendframework.com/用于系统范围的安装。

相关内容