【问题标题】:Give php / apache read access outside of /html在 /html 之外授予 php / apache 读取权限
【发布时间】:2014-11-10 18:49:20
【问题描述】:

如何授予 php 和 apache 对 /var/www/html 之外的目录的读取权限?

我正在尝试在 php 文件中包含以下内容:

require '/var/www/config/settings.php';

这里是配置权限

drwxr-xr-x.  2 apache    root 4096 Sep 16 14:02 config

在 settings.php 上

-rwxr-xr-x. 1 apache root 306 Sep 16 14:02 settings.php

PHP 抛出以下错误: PHP 警告:需要(/var/www/config/settings.php):无法打开流:[此处的文件名] 中的权限被拒绝

【问题讨论】:

  • 我不知道这是否会有所帮助,但请尝试sudo chown -R root:root config
  • 我试过了,没有运气。
  • 从问题来看,显然 apache 用户对 config 文件夹以及 settings.php 文件拥有完全权限。现在看看你的 PHP 处理程序是什么...运行 PHP 文件的用户没有读取该文件的权限...为了快速解决问题,请尝试 chmod o+rwx config chmod o+rwx settings.php 看看是否有帮助,否则让我们知道你的 PHP 处理程序
  • @LeoPrince 我让它工作并添加了一个答案。我不确定实际上是什么修复了它。

标签: php apache centos


【解决方案1】:

sudoing chown 将不起作用,这已在您的 apache 的文档根条目中设置

您需要创建 2 个条目。 1 是这样的:

<VirtualHost *:80>
DocumentRoot  /var/www/html
ServerName www.yourdomain.com

# Other directives here

</VirtualHost> 

对于这个 /var/www/config/settings.php 你需要创建这个条目

<VirtualHost *:80>
DocumentRoot  /var/www/config
ServerName www.yourdomain.com

# Other directives here

</VirtualHost> 

这就是 Web 服务器的工作方式,以便获得对另一个文档根目录或 / 当您在 url 中调用它时,它会查看 DocumentRoot

确保在执行此操作后重新启动 apache 以使更改生效。

【讨论】:

    【解决方案2】:

    在与它斗争并尝试了这里的建议之后,我得到了它的工作,但不明白为什么......

    我做了什么来解决问题...

    我 cd'ed 进入 config 目录,然后我使用 vim 创建了一个新文件并将其命名为 test.php

    然后:chown apache test.php

    将包含它的 php 脚本更改为 test.php 而不是 settings.php

    成功了!!为什么?这两个文件具有完全相同的权限和所有权。我改回settings.php,又失败了。

    然后我将settings.php的内容复制到test.php中,删除了settings.php并重命名了test.php->settings.php

    现在我在做生意。

    如果有人能解释发生了什么,那就太好了。

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 2017-04-07
      • 2011-09-01
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      相关资源
      最近更新 更多