[英]PHP Fatal Error: failed opening required
我有一个名为“ sess-start.php”的脚本,该脚本位于httpdocs目录中的/ include目录中。
我的网站继续出现此错误:\\
[2011年3月25日星期五14:52:24] [错误] [客户端12.3.3.3] PHP致命错误:require()[function.require]:无法打开所需的'/includes/sess-start.php'(include_path =' 。:'),位于第4行的/var/www/vhosts/site.com/httpdocs/page.php中,引荐网址 : https : //www.site.com/
即使www.site.com/includes确实存在。 是什么赋予了!
这些是include / requires,它们本身可能包含其他require或include语句。 相对路径将不起作用,因此请不要提出这样的建议。
我的.htaccess文件已经将所有包含路径指向站点根目录:
php_value include_path。:/ var / www / vhosts / site.com / httpdocs
并非我的所有include或必需脚本都包含在单个目录中,因此建议否定将/ includes目录仅放在include_path中也被否定了(反过来也会在Windows计算机上引起问题)
也许对一个实际示例进行一些澄清可能有助于解决我们的团队试图解决的问题:
在一个页面上,用户可以输入多个选项,下一页将进行必要的计算,并根据该计算为客户提供许多潜在的选项,所有这些选项都导致需要诸如DB条目之类的语句。
然后,在db条目(或其他操作)中,如果一切顺利,则该成员可能已根据其操作选择了接收电子邮件确认。 该require语句位于第二个require(db插入)之内,但与第二个要求不在同一个目录中,因此,由于第一个文件对链接的处理不正确,因此会引起冲突。
硬编码绝对路径,甚至设置每页适当的包含路径都是“好的”,但是由于无法识别“站点根目录”,因此它使我们的团队无法使用Dreamweaver(或执行相同操作的任何其他程序)在文件之间进行热链接。在测试环境中运行时。
您的路径前面有一个正斜杠( /
)。
在符合POSIX的系统中,如果您有以正斜杠开头的路径,则表示它是绝对路径 。 第一个正斜杠代表文件系统的根。
从路径中删除正斜杠,然后应该有一个相对于page.php
的路径。
编辑:由于相对路径将不起作用,您可以使用dirname(__FILE__)
来获取当前文件所在目录的绝对路径。
require(dirname(__FILE__) . '/includes/sess-start.php');
您需要使用相对路径。 当文件名以/
PHP开头时,将假定您的意思是根目录。 正确的前缀是./
include('./includes/sess-start.php');
如果希望所有路径都相对于文档根目录,则这是一种常见方法:
include("$_SERVER[DOCUMENT_ROOT]/includes/sess-start.php");
看起来您需要从包含行中删除前导斜杠。
编辑:解决您的问题。 在一个前置文件或一些常见的include中,创建一个像DOCROOT
这样的DOCROOT
。 您可以从__FILE__
常量动态确定它。
然后:
include(DOCROOT.'myfile.php');
就个人而言,我会尝试设置一些东西来避免这种事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.