【问题标题】:Apache error when setting up Silex Bootstrap: unable to check htaccess file设置 Silex Bootstrap 时出现 Apache 错误:无法检查 htaccess 文件
【发布时间】:2012-12-04 23:36:46
【问题描述】:

我正在尝试使用 Silex Bootstrap 建立一个网站。 我已将它与其他 Web 项目放在我的文件夹中,并更改了 Apache 配置中的 DocumentRoot。

<Directory /folder/to/silex_projects/web>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride All
     Order allow,deny
      allow from all
</Directory>

但是我无法打开框架的索引页面,Apache给出:

[Mon Dec 17 21:10:52 2012] [crit] [client 127.0.0.1] (13)Permission denied: /folder/to/silex_project/web/.htaccess pcfg_openfile: 无法检查 htaccess 文件,确保它可读

我已经用chmod a+r -R 修改了整个项目文件夹。同一文件夹中的其他项目可以正常使用 .htaccess 文件。

.htaccess 文件确实存在。

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    chmod 755 -R /silex_project/ 解决了我的问题。我仍然不知道为什么 Apache 需要写权限才能工作。

    【讨论】:

    • 这个确实解决了问题,但是不解释,看user1428022的anwser
    • 只是 chmod 755 . 为我工作,所以问题在于项目文件夹的权限
    【解决方案2】:

    这可能是因为运行 Apache 的用户对该目录没有执行权限。还需要读取其中的文件。 chmod a+rx /folder/to/silex_projects 可能已经解决了您的错误。

    您的chmod 755 -R 也不能通过提供写入权限来解决此问题,而是因为这恰好也添加了 eXecute。

    【讨论】:

    • 这是我的问题。谢谢。 @OrangeTux Apache 不需要写权限即可工作。
    • 我还必须向 parent 文件夹添加执行权限,例如 chmod +x /home/myuser。当我将网站从 /var/www/html 移动到 /home/myuser/html 时,问题出现了。
    【解决方案3】:

    我也有这个错误,发现这个很好的参考(13)Permission denied: /home/username/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

    查看您的域时,如果您看到错误“禁止访问”,然后检查您的 apache 日志: /var/log/httpd/error_log /var/log/httpd/domains/domain.com.error.log

    并查看错误:

    [crit] [client 1.2.3.4] (13)Permission denied: /home/username/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
    

    这意味着 apache 对您的 /home/username 目录没有读取权限。

    造成这种情况的原因可能与权限相关、配置相关或所有权相关。

    Apache 以用户“apache”运行,因此该用户或组的目录必须为 +x。

    1) 从 DirectAdmin 1.38.0 开始,我们实现了 secure_acccess_group 功能,它将 /home/user(对于用户)设置为 chmod 750 和 chown username:access。 apache 用户将在“访问”组中。要确认这一点,请输入以下内容:

    [root@server]# grep ^access: /etc/group
    access:x:506:apache,nobody,mail,majordomo,daemon
    

    您应该会得到与显示的输出类似的内容。

    如果您得到一个空白的用户列表,则访问组存在,但为空。要正确填充组(在 RedHat/CentOS/Debian 系统上),请输入:

    usermod -G access apache
    usermod -G access nobody
    usermod -G access mail
    usermod -G access majordomo
    usermod -G access daemon
    

    在 FreeBSD 系统上,创建组的命令是:

    pw groupadd -n access -M apache,nobody,mail,majordomo,daemon
    

    但这意味着该组还不存在。这个案例在 FreeBSD 上没有出现过,所以可能不需要。

    【讨论】:

    • 将 +X 添加到我的符号链接文件夹为我解决了。 (~/public_html 符号链接到 ~/builds/build_UNIX/public_html 我必须 +X build public_html 文件夹)
    【解决方案4】:

    除了发布的其他答案之外,如果您要更改可能从发行版“默认”位置访问文件的任何内容,SELinux(如果已启用)在这种情况下可能会咬到您。

    解决方法是为目录/文件向 selinux 添加适当的策略,或者如果您不希望 selinux 安全运行,则禁用它。

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 2016-02-07
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2014-10-18
      • 1970-01-01
      相关资源
      最近更新 更多