【发布时间】:2016-07-21 18:48:55
【问题描述】:
我正在使用 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配置的问题。
【问题讨论】:
-
这不是问题,这是一项安全功能。为什么文件需要在 webroot 目录之外?
-
php 可以读取文件系统中任何它有权访问和读取的文件。即使文件本身具有读取权限,您仍然需要访问其包含的目录。
-
@cale_b:因为不是所有的东西都应该放在 webroot 中。根据定义,webroot 中的任何内容都可供世界使用。一个单一的配置错误或服务器故障,您可能会提供原始 php 代码,包括存储在该代码中的任何后端凭据。