使用include_once()时的PHP警告

时间:2010-04-20 04:38:21

标签: php

当我尝试在php中使用include_once包含一个文件时显示警告 警告:include_once(1)[function.include-once]:无法打开流:第2行/var/www/test/content_box.php中没有这样的文件或目录。实际上我的目录中有文件。我正在使用ubuntu(OS) 我们怎样才能防止这种警告。如果有人知道请帮帮我

4 个答案:

答案 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是关键字而不是函数调用,因此其参数不需要括号。