Der schwerwiegende PHP-Fehler kann die erforderliche Datei nicht öffnen
P粉470645222
2023-08-23 19:46:43
<p>Ich erhalte die folgende Fehlermeldung von Apache</p>
<p><strong>[Sa, 19. März 23:10:50 2011] [WARNUNG] mod_fcgid: stderr: Schwerwiegender PHP-Fehler: require_once() [function.require]: Erforderliches „/common“ /configs/ konnte nicht geöffnet werden. config_templates.inc. php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/viapics1/public_html/common/configs/config.inc.php Zeile 158</strong>< /p> ;
<p>Ich bin definitiv kein Apache-Experte, aber die Dateien config.inc.php und config_templates.inc.php sind vorhanden. Ich habe auch versucht, zur Seite test.html zu navigieren, die in common/configs/ abgelegt ist, daher glaube ich nicht, dass irgendwelche Berechtigungsprobleme auftreten. Ich habe auch die Berechtigungen für config_templates.inc.php festgelegt, um jedem Lese-, Schreib- und Ausführungsberechtigungen zu geben. Da ich zu diesem Zeitpunkt noch nicht sicher bin, was ich tun soll, habe ich nachgesehen, ob es ein Verzeichnis /usr/share/php gibt, und festgestellt, dass das nicht der Fall ist, aber als ich yum install php ausgeführt habe, hieß es, dass es die neueste Version habe. Eine Idee haben? </p>
如果您正在运行 SELinux,您可能必须授予 httpd 权限才能从 /home 目录读取数据:
这实际上不是一个与 Apache 相关的问题。甚至没有 PHP 相关的。 要理解此错误,您必须区分虚拟服务器上的路径和文件系统中的路径。
require
运算符适用于文件。但这样的路径仅存在于虚拟HTTP服务器上,而文件系统中不存在该路径。正确的文件系统路径是
哪里
部分称为文档根,它将虚拟世界与现实世界连接起来。幸运的是,Web 服务器通常将文档根放在与 PHP 共享的配置变量中。因此,如果您将代码更改为这样的内容
它可以在任何目录中的任何文件中运行!
更新:最终我写了一篇文章,解释了文件中的相对路径和绝对路径之间的差异系统和网络服务器上,详细解释了问题,并包含一些实用的解决方案。就像,当您从命令行运行脚本时,这样一个方便的变量并不存在。在这种情况下,一种称为“单一入口点”的技术可以解决这个问题。详细内容您也可以参考上面的文章。