fopen()错误处理

Dav*_*ker 5 php error-handling

我正在编写一个脚本,读取HTML模板文件,用数据填充它,然后将填充的HTML文件保存为缓存文件夹中的缓存副本.

我在评估fopen()运行时错误被抑制时是否出现错误时遇到了真正的困难:

$file = @fopen($location,"w+"); 

// manual states fopen() returns false on error
// though the below does not catch any errors 

if (!$file) {
    $this->doSomething();
}
Run Code Online (Sandbox Code Playgroud)

抑制是否对我不利?我真的很感激对此的一些见解.我试过设置error_reporting显示没有错误,

ini_set('display_errors',0);
ini_set('log_errors',1);
error_reporting(E_ALL);
Run Code Online (Sandbox Code Playgroud)

并取消了抑制,fopen()但无济于事.

Dav*_*dom 4

你的代码应该可以工作。如果您从未输入该if语句并且没有触发任何错误,则文件已成功打开。为什么确定fopen()通话失败?

  • 请记住,当您以“w+”模式打开文件时,如果文件不存在,它将创建该文件,因此实际上可能不会失败。尝试使用虚假位置和“r”或“r+”,它将失败,或者尝试打开不存在的目录中的文件,也会失败。据我所知,没有 ini 设置来控制这种行为 - 如果您在执行 100% 确定不应该工作的操作时仍然遇到问题,那么您的 PHP 安装有一些(非常奇怪的)错误... (3认同)