You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rocky Linux 9+PHP8.3.12环境下绝对路径引入文件失败求助

问题描述

多年来我一直通过绝对路径将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");

执行报错

Fatal error: Uncaught Error: Failed opening required '/home/user/scripts/functions.php' (include_path='/home/user/scripts') in /home/user/www/index.php:5 Stack trace: #0 {main} thrown in /home/user/www/index.php on line 5

即使直接使用完整绝对路径:

require_once("/home/user/scripts/functions.php");  // this also fails with same error

仍出现相同错误。脚本目录及文件权限均为755,文件名无误,请问可能是什么原因?


可能的原因及解决方案

1. SELinux 强制限制(Rocky Linux 9 默认启用)

Rocky Linux 9 默认开启 SELinux 强制模式,Apache 进程的安全上下文(通常为 httpd_t)默认没有权限访问 /home/user 下的自定义目录。

  • 临时验证:执行 setenforce 0 关闭 SELinux 强制模式,刷新页面测试。若问题解决,即可确认是 SELinux 导致。
  • 永久修复:为脚本目录添加 Apache 可访问的 SELinux 上下文:
    semanage fcontext -a -t httpd_sys_content_t "/home/user/scripts(/.*)?"
    restorecon -Rv /home/user/scripts
    

2. PHP open_basedir 目录限制

PHP 的 open_basedir 配置可能限制了 Apache 进程能访问的目录范围,导致无法读取 /home/user/scripts。

  • 检查配置:创建测试文件 phpinfo.php,内容为 <?php phpinfo(); ?>,访问后查找 open_basedir 项,确认是否包含 /home/user/scripts。
  • 修改配置:若未包含,在 Apache 虚拟主机配置或 php.ini 中添加:
    open_basedir = /home/user/www/:/home/user/scripts/:/tmp/
    
    重启 Apache 和 PHP-FPM(若使用 FPM 模式)。

3. 父目录权限拦截

即使 /home/user/scripts 权限为 755,其上层目录 /home/user 的权限可能不允许 Apache 用户(通常为 apache 或 www-data)进入。

  • 检查父目录权限:执行 ls -ld /home/user,确保其他用户有执行权限(权限位最后一位为 x,即权限为 755 或 711)。
  • 修复权限:若父目录权限不足,执行:
    chmod o+x /home/user
    

4. 文件/目录所有者问题

虽然权限为 755,但如果目录或文件的所有者与 Apache 进程用户不匹配,且权限设置未开放其他用户的读取权限,也会导致访问失败。

  • 检查所有者:执行 ls -l /home/user/scripts/functions.php 查看文件所有者。
  • 调整所有者(可选):若需要,将目录及文件所有者改为 Apache 用户:
    chown -R apache:apache /home/user/scripts
    

内容的提问来源于stack exchange,提问作者phper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 17:48:15