Heim > Fragen und Antworten > Hauptteil
P粉6628028822023-08-21 16:05:34
如果您正在运行SELinux,您可能需要授予httpd读取/home目录的权限,请使用以下命令:
sudo setsebool httpd_read_user_content=1
P粉2519031632023-08-21 13:14:41
这实际上不是一个与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';
它将在任何目录中的任何文件中工作!
更新:最终我写了一篇文章,解释了文件系统和Web服务器上的相对路径和绝对路径的区别,详细解释了这个问题,并包含了一些实际的解决方案。例如,当您从命令行运行脚本时,这样一个方便的变量是不存在的。在这种情况下,可以使用一种称为“单一入口”的技术来解决。您也可以参考上述文章了解更多细节。