PHP包含来自webroot外部的文件

时间:2016-07-21 18:48:55

标签: php apache

我正在使用Apache和PHP。 Webroot目录为/home/name/public_html

我想要包含/home/name/abc.php

中的文件
include_one "/home/name/abc.php";

我无法打开流:权限被拒绝警告。

如果我在webroot /home/name/public_html/abc.php

中移动相同的文件

没有错误。

Apache用户和组有权访问文件/home/name/abc.php

我有另一台具有类似配置的服务器,它正在运行。只是想知道可能的原因。

我试图直接在linux控制台中运行PHP脚本,没有权限问题。我想这个问题是在Apache配置中。

2 个答案:

答案 0 :(得分:0)

您应该验证php是否真的以apache用户身份执行。根据您的配置,php可能在不同的用户下运行,例如如果您的Apache设置为使用php-fpm。

如果服务器是linux系统,请将此

<?php
echo "<pre>";
var_dump(posix_getpwuid());

进入文件并通过Web浏览器访问应该显示用户信息。

答案 1 :(得分:0)

我找到了从here解决此问题的方法。我在Centos 7虚拟服务器上运行SELinux

我需要使用以下命令授予httpd权限以读取/ home目录:

sudo setsebool httpd_read_user_content=1