P粉6836651062023-08-24 11:50:35
如果您正在运行 SELinux,您可能必须授予 httpd 权限才能从 /home 目录读取数据:
sudo setsebool httpd_read_user_content=1
P粉7275312372023-08-24 09:24:51
这实际上不是一个与 Apache 相关的问题。甚至没有 PHP 相关的。 要理解此错误,您必须区分虚拟服务器上的路径和文件系统中的路径。
require
运算符适用于文件。但这样的路径
/common/configs/config_templates.inc.php
仅存在于虚拟HTTP服务器上,而文件系统中不存在该路径。正确的文件系统路径是
/home/viapics1/public_html/common/configs/config_templates.inc.php
哪里
/home/viapics1/public_html
部分称为文档根,它将虚拟世界与现实世界连接起来。幸运的是,Web 服务器通常将文档根放在与 PHP 共享的配置变量中。因此,如果您将代码更改为这样的内容
require_once $_SERVER['DOCUMENT_ROOT'].'/common/configs/config_templates.inc.php';
它可以在任何目录中的任何文件中运行!
更新:最终我写了一篇文章,解释了文件中的相对路径和绝对路径之间的差异系统和网络服务器上,详细解释了问题,并包含一些实用的解决方案。就像,当您从命令行运行脚本时,这样一个方便的变量并不存在。在这种情况下,一种称为“单一入口点”的技术可以解决这个问题。详细内容您也可以参考上面的文章。