【问题标题】:Can't view index.php of Zend Framework 1.0 after setting up Apache/Host requirements?Zend Framework 1.0 的 index.php 设置 Apache/Host 需求后无法查看?
【发布时间】:2012-12-08 16:31:47
【问题描述】:

更新:Apache 错误日志中出现以下错误...

[Sat Dec 08 16:41:39 2012] [error] [client 127.0.0.1] 
PHP Fatal error:  require_once(): 
Failed opening required 'Zend/Application.php' 
(include_path='/Library/WebServer/Documents/quickstart/library:.:/php/includes:/Users/markmcdonnell/Dropbox/Library/PHP/ZendFramework-1.12.0/library') 
in /Library/WebServer/Documents/quickstart/public/index.php on line 18

我使用的是 Mac OSX 10.8.2 (Mountain Lion),但在设置和运行 Zend 框架时遇到了问题(只是基本的快速入门)。

我使用的是 Apache 2.2.22

可以从 /Library/WebServer/Documents 访问我的 localhost 文件

我也在运行 PHP 5.3.15。

我通过命令行(使用 zf.sh 文件)创建了一个名为“quickstart”的新项目(根据 Zend 网站上的部分推荐),该项目存储在这里:/Library/WebServer/Documents/快速入门

我已经按照 Zend 官方网站的说明以及关于安装 Zend 的在线书籍进行操作:http://www.survivethedeepend.com/zendframeworkbook/en/1.0/creating.a.local.domain.using.apache.virtual.hosts

我的 php.ini (/private/etc/php.ini) 文件已更新为包含 ZendFramework 目录中 library 文件夹的路径...

include_path = ".:/php/includes:/Users/<home>/Dropbox/Library/PHP/ZendFramework-1.12.0/library"

我已经更新了/etc/apache2/httpd.conf,所以它包括...

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

# Ensure "localhost" is preserved unchanged pointed
# to the default document root for our system.
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Library/WebServer/Documents
</VirtualHost>

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerName quickstart.local
    DocumentRoot /Library/WebServer/Documents/quickstart/public

    SetEnv APPLICATION_ENV "development"

    <Directory /Library/WebServer/Documents/quickstart/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

...我还更新了/etc/hosts,所以它包括...

127.0.0.1   localhost
127.0.0.1   quickstart.local

我正在使用 sudo apachectl graceful 重新启动 Apache(我也使用过 sudo apachectl restart

所以,如果我现在尝试访问http://localhost/,我会看到我的/Library/WebServer/Documents 目录,我可以看到PHP 仍在运行,没有任何问题。但如果我尝试访问http://quickstart.local/,我只会得到一个空白页面?

任何人都可以建议问题可能是什么,我缺少什么以及我可以做些什么来显示初始的“欢迎”页面。

我确定我只是想念一个小人物,但这显然会导致基本页面无法显示的问题。

谢谢。

标记

【问题讨论】:

  • 您需要更新php.ini中的include_path,使其指向ZendFramework所在的文件夹
  • 我已经这样做了。似乎解决方案是将 ZendFramework 文件夹放在 localhost 根目录中!不知道为什么,但 ini 文件无法跟随 Dropbox 文件夹的路径?
  • 它会起作用,但不是最佳实践。库通常保存在文档根目录之外...

标签: php apache zend-framework virtualhost


【解决方案1】:

仅适用于可能已关注此内容的其他人。上面 Kamil 的回答会起作用,但会在 Apache 的安全配置之外打开一个安全漏洞。只要您知道这一点并且在 Apache 之上有另一层安全性,那就没问题了。

解决问题的另一种方法是将 ZendFramework 放在根目录层次结构中的某个位置。喜欢: DocumentRoot/Library/WebServer/Documents/ZendFramework-1.12.0/library 或者 DocumentRoot/Library/WebServer/Documents/quickstart/public/ZendFramework-1.12.0/library Apache 服务器根目录中的任何路径。

【讨论】:

    【解决方案2】:

    可能是 Zend 文件和 Apache 进程之间的用户权限问题。

    由于您可以使用zf.sh 创建项目,Zend 文件显然在那里。但是您通过 Apache 获得的失败表明 Zend 文件可能无法通过 Apache 进程(即运行 Apache 进程的用户)访问。

    $ chmod 0777 /Users/markmcdonnell/Dropbox/Library/PHP/ZendFramework-1.12.0/library

    测试。

    您可能会获得更少广泛的权限 - 例如0644 - 但我承认我在这方面很糟糕。 ;-)

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      相关资源
      最近更新 更多