使用符号链接从根目录外部访问路径

使用符号链接从根目录外部访问路径

我需要向我的 apache 配置添加外部路径。 (httpd)

所以,我在我的httpd根文件夹中创建了到此路径的符号链接,路径是:/var/log/httpd/(我想直接在我的项目中显示日志)

我可以通过浏览器输入以下内容来访问所有路径:http://127.0.0.1/httpd/

但是当我尝试从 php 文件访问它时,php 会抛出一个错误:

代码:

function logInfo() {

$log_path = $_SERVER['DOCUMENT_ROOT'] . "/httpd/local.cmp-error_log";
$php_log = file_get_contents($log_path);

print_r ($php_log);

}

错误:

[Sun Jul 17 23:45:19.960292 2016] [:error] [pid 19451] [client 127.0.0.1:34718] PHP Warning:  file_get_contents(/home/txx/http/www/httpd/local.cmp-error_log): failed to open stream: Operation not permitted in /home/txx/http/www/base_home/config/sys.php on line 8

这里的错误在哪里?

答案1

基本思想是您无法访问文档根目录之外的文件。这就是文档根的重点。有多种保护措施可以防止 Apache 跟踪根目录之外的符号链接。你需要使能够FollowSymlinks在包含链接的目录中,但如果您可以浏览文件,则意味着这已经完成。

您还需要确保 PHP 不限于文档根目录。看这个堆栈溢出问题:检查php.ini不包含该open_basedir设置。另一个潜在的限制是 SELinux,如果您的机器已经过强化,那么 PHP 可能会被限制在某些预定义的目录中,特别是可能会被禁止访问主目录。也可以看看访问文档根目录之外的文件

如果您无法访问 Web 根目录之外的内容,或者您​​不想过多削弱系统的安全性,则可以将文件放在 Web 根目录下,而不是让 Apache 和 PHP 寻找其他地方。 A绑定挂载to/var/log/httpd创建挂载目录/var/www/dangerous/logs的视图。您可以而且可能应该将该视图设置为只读。/var/log/httpd/var/www/dangerous/logs

相关内容