如何获取取消链接的错误结果

php
2022-08-30 23:18:30

如果对 unlink() 的调用对指定路径返回 false,您如何找出失败的原因(即 EISDIR、ENOENT、ELOOP 等)?PHP 5.x 在 redhat linux 上运行。


答案 1

这是一种方式

unlink("/path/that/does/not/exist");
print_r(error_get_last());

有关更多详细信息,请参阅错误处理


答案 2

我认为不可能取回系统发出的任何错误代码。这也许可以归结为PHP应该是可移植的,不同的操作系统有不同的错误报告方法。

你当然可以做一个并恢复错误级别,但这并不是很便携,并且使你的应用程序依赖于权限。exec('rm ....')exec()

否则,如果你真的,真的需要这个,只有一个非常棘手的解决方法浮现在脑海中:创建一个自定义错误处理程序函数,试图从警告抛出中获取失败的原因 - 例如,检查“权限被拒绝”,或者只是获取整个错误消息。unlink

围绕该函数创建一个包装函数,用于设置和重新设置错误处理程序。像这样:unlink

function my_unlink($file)
 {
     set_error_handler("my_error_handler");
     unlink($file);
     restore_error_handler();

 }

你得到我的漂移。

如果有人知道更好的解决方案- 我也有兴趣听听它。


推荐