【问题标题】:Zend Framework 2: 403 forbidden error when trying to access localhostZend Framework 2:尝试访问 localhost 时出现 403 禁止错误
【发布时间】:2013-03-02 17:28:35
【问题描述】:

大家好,我是 Zend 框架的新手,显然无法让它工作。

当我尝试访问 localhost 时,浏览器会向我抛出 403 禁止访问错误。这是我的虚拟主机文件:

  NameVirtualHost *:80
<VirtualHost *:80>
    ServerName zf2-tutorial.localhost
    DocumentRoot /var/www/html/zf2-tutorial/public
    SetEnv APPLICATION_ENV "development"
    <Directory /var/www/html/zf2-tutorial/public>
        Options +Indexes +FollowSymLinks +ExecCGI
    DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

我的 htacces 文件位于 /var/www/html/zf2-tutorial/ 上的 zend 应用程序文件夹内的公共目录中:

RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other queries to index.php. The 
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to 
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size 
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

我对该目录中的所有文件也拥有 775 权限。然而 apache error_log 似乎不这么认为:

[Thu Mar 14 12:15:48.751980 2013] [core:crit] [pid 5755] (13)Permission denied: [client 127.0.0.1:60849] AH00529: /var/www/html/zf2-tutorial/public/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/var/www/html/zf2-tutorial/public/' is executable

最后我还在 httpd.conf 上设置了 FileInfo 以允许 htaccess 读取。

那么,这里发生了什么的任何线索?谢谢!

更新:我发布了 /var/www/html/zf2-tutorial/public 文件夹的文件列表及其权限:

total 28
drwxrwxr-x. 5 gerard root 4096 mar 14 14:01 .
drwxr-xr-x. 7 gerard root 4096 mar 14 11:20 ..
drwxrwxr-x. 2 gerard root 4096 ene 31 17:19 css
-rwxrwxr-x. 1 gerard root  711 mar 14 12:25 .htaccess
drwxrwxr-x. 2 gerard root 4096 ene 31 17:19 images
-rwxrwxr-x. 1 gerard root  303 ene 31 17:19 index.php
drwxrwxr-x. 2 gerard root 4096 ene 31 17:19 js

【问题讨论】:

  • 您能否编辑您的问题以包含ls -al /var/www/html/zf2-tutorial/public 的输出?
  • 你有它。 gerard 是我的用户名(我将公用文件夹的所有者更改为我的帐户以检查是否是问题所在)

标签: zend-framework2 localhost http-status-code-403


【解决方案1】:

我在使用 EasyPHP DevServ 14 时遇到了同样的问题。

问题来自 httpd.conf 文件中的缺失行

要求全部授予

<Directory "PATH TO YOUR DIR">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    Allow from any
    Deny from none
    Require all granted
</Directory>

希望对你有帮助!

【讨论】:

    【解决方案2】:

    在虚拟主机设置中确保您已添加

         Require all granted
    

    但还要确保您的 DocumentRoot 路径是正确的,并且您已经为 Xampp 用户添加了类似的内容:

    DocumentRoot "C:/xampp/htdocs/zf2-tutorial/public"

    启用访问

    【讨论】:

      【解决方案3】:

      好的,问题解决了!是 SELinux 禁止访问这些文件,所以我只是按照 bash 的建议去做:

      1. /sbin/restorecon -v /var/www/html/zf2-tutorial/public/.htaccess 
      2. setsebool -P httpd_read_user_content 1
      

      但是现在我有一个更严重的问题!浏览器“字面上”显示 index.php 的内容,而不是加载脚本本身。浏览器窗口只是将其显示为文本:

          <?php
      /**
       * This makes our life easier when dealing with paths. Everything is relative
       * to the application root now.
       */
      chdir(dirname(__DIR__));
      
      // Setup autoloading
      require 'init_autoloader.php';
      
      // Run the application!
      Zend\Mvc\Application::init(require 'config/application.config.php')->run();
      

      知道发生了什么吗?谢谢!

      【讨论】:

        【解决方案4】:

        您确定您的 Apache 服务器运行正常吗? 如果 apache 服务器关闭 php 文件将无法执行并显示为文本

        【讨论】:

          猜你喜欢
          • 2016-04-19
          • 2020-02-17
          • 2016-10-22
          • 2015-01-09
          • 2021-09-22
          • 1970-01-01
          • 2018-12-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多