多年来,我一直使用绝对路径在 Web 根目录之上找到许多系统的 PHP 包含文件。 突然,运行 Rocky
Linux 9
、PHP Version 8.3.12
和 Apache version 2.4.57
的新系统出现故障。
代码:
$path = "/home/user/scripts"; // absolute path
set_include_path($path);
require_once("functions.php");
结果:
致命错误:未捕获错误:需要打开失败 '/home/user/scripts/functions.php' (include_path='/home/user/scripts') 在 /home/user/www/index.php:5 堆栈跟踪:#0 {main} 抛出 /home/user/www/index.php 第 5 行
require_once("/home/user/scripts/functions.php"); // this also fails with same error
这对我来说毫无意义。 脚本目录权限和文件权限都是755。文件名正确。
知道可能出了什么问题吗?
非常感谢 Chris Haas —— Selinux 就是问题所在。这两个命令解决了问题:
sudo semanage fcontext -a -t httpd_sys_content_t /home/user/scripts
sudo restorecon -RF /home/user/scripts