我试图猜测如何实现脚本包含并保持错误和警告。我有以下代码:
if(!@include_once "myscript.php") doSomething();
这会压制"包括"如果脚本文件不存在则会出现警告错误,如果脚本文件存在,则会包含脚本文件。在" myscript.php"中生成错误时出现问题。例如,我在" myscript.php"中得到了另一个require_once
。我通过设置错误的路径导致错误。未显示错误,未达到/执行该调用后的代码。
有没有办法我只能压缩文件包含错误,而不是在包含的脚本中生成错误?如果没有,我可以用其他什么方式来实现目标行为?
我已经考虑使用file_exists
函数来检查脚本文件是否存在,然后在TRUE
时包含它,但我正在寻找最简单的方法。
我会举一个实际的例子,因为它很难理解实际的问题:
想象一下,我们想要管理将由用户使用的文件系统,我们需要检查用户是否创建了一个文件,因为该文件将在检查后包含,但是我们想要处理包含警告/错误,以便我们可以在自定义日志文件中显示消息或记录警告。我们想到的第一个功能是使用file_exists
然后使用include
该文件。好吧,通过使用@include
这两个函数都在执行,它会检查文件是否存在,它将包含文件以及我正在研究的内容,这是最简单的行动方式。这种做法有一种不受欢迎的行为:它会抑制包含文件生成的错误/警告,而不仅仅是包含错误/警告本身。在尝试包含文件之前检查文件是否存在时避免file_exists
的其他原因可能是两个函数查找文件的方式不同,并且由于include_path
,它们可能会生成不同的结果。这是对的吗?
答案 0 :(得分:0)
您可以使用stream_resolve_include_path()
按照include
的方式处理文件名,然后使用file_exists
进行检查。所以:
if (file_exists($path) || file_exists(stream_resolve_include_path($path)) {
include($path);
}
如果路径名是绝对路径,则第一个file_exists()
调用将覆盖include_path
设置。