【发布时间】:2018-01-29 21:06:18
【问题描述】:
我试图猜测如何实现脚本包含并保持它抛出错误和警告。我有以下代码:
if(!@include_once "myscript.php") doSomething();
如果脚本文件不存在,这将抑制“包含”警告错误,如果脚本文件存在,它将包含该脚本文件。当“myscript.php”中生成错误时,问题就出现了。例如,我在“myscript.php”中有另一个require_once,我通过设置错误的路径导致了错误。错误不会显示,调用之后的代码也不会到达/执行。
有没有一种方法可以只抑制文件包含错误,但不能抑制包含脚本中生成的错误?如果不是,我可以使用其他什么方式来实现目标行为?
我考虑过使用file_exists 函数来检查脚本文件是否存在,如果TRUE 则包含它,但我正在寻找最简单的方法。
我将举一个实际的例子,因为实际问题很难理解:
假设我们要管理一个将被用户使用的文件系统,我们需要检查用户是否创建了一个文件,因为该文件将在检查后被包含,但我们想要处理包含警告/错误,因此我们可以在自定义日志文件中显示消息或记录警告。我们想到的第一个功能是使用file_exists 然后include 该文件。好吧,通过使用@include,这两个函数都在执行,它会检查文件是否存在,它将包含文件,这就是我正在研究的,最简单的执行操作的方法。这种做法有一个不受欢迎的行为:它抑制了包含文件生成的错误/警告,而不仅仅是包含错误/警告本身。当您在尝试包含文件之前检查文件是否存在时,避免使用file_exists 的其他原因可能是两个函数查找文件的方式不同,并且由于include_path,它们可能会生成不同的结果。这是正确的吗?
【问题讨论】:
-
使用
file_exists()不简单? :P -
file_exists 不像 include / require (stackoverflow.com/questions/2672572/…) 那样工作
-
您能否提供更多有关您要完成的任务的背景信息?通常路由器样式的实现通过 file_exists 检查来解决这个问题,但自动加载器也可能是合适的。
-
@AkhileshBChandran 这意味着使用
file_exists和include。如果可能的话,最好只使用一个函数:D -
不要抑制错误。修复代码,使其不会生成它们。
标签: php apache http error-handling