我正在尝试一次性为我的所有子域名安装 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/用于系统范围的安装。