当我尝试在php中使用include_once包含一个文件时显示警告 警告:include_once(1)[function.include-once]:无法打开流:第2行/var/www/test/content_box.php中没有这样的文件或目录。实际上我的目录中有文件。我正在使用ubuntu(OS) 我们怎样才能防止这种警告。如果有人知道请帮帮我
答案 0 :(得分:15)
注意:我在下面的回答结果很受欢迎,但我没有真正回答这个问题。这不是关于抑制警告,而是关于修复导致警告的错误。我会把它留给后人。
防止警告的正确方法是先检查第一个是否存在,如果没有,则不要尝试包含它。
if (file_exists($includefile)) {
include_once($includefile);
}
(显然将$ includefile替换为您所包含的文件)
快速而肮脏的方式,我不建议,将使用@表达式来抑制警告。
@include_once($includefile);
请注意,在以这种方式抑制警告时,PHP的错误处理代码仍会运行,但PHP的error_reporting ini值会暂时更改为忽略它。根据经验,这不是一个好主意,因为它可以掩盖其他错误。
正如其他人所指出的那样,“1”是PHP文件的一个不寻常的文件名,但我会假设您有这样做的具体原因。
答案 1 :(得分:8)
显然这里的问题是PHP无法找到您尝试包含的文件。为了减少对当前路径的混淆,我通常将其作为这样的绝对路径:
// inc.php is in the same directory:
include (dirname(__FILE__) . "/inc.php");
// inc.php is in a subdirectory
include (dirname(__FILE__) . "/folder/inc.php");
// inc.php is in a parent directory
include (dirname(dirname(__FILE__)) . "inc.php");
它可能有点超过顶部,但您可以确定知道PHP在哪里寻找您的文件。
答案 2 :(得分:2)
这是一个非常不寻常的php文件名 - 一个数字1
。
你确定你有这样的文件吗?
答案 3 :(得分:0)
您可能正在尝试这样的语句:
include('header.php') or die('Include file not found.');
在这种情况下,发生的是运算符优先级按如下方式进行评估:
include ( ('header.php') or die('Include file not found.') );
并且由于字符串'header.php'
的求值结果不是false,因此在这种情况下将其强制转换为1
。
您可以通过重新排列括号来解决此问题:
(include 'header.php') or die('Include file not found.');
请注意,include
是关键字而不是函数调用,因此其参数不需要括号。