嗯,我一直在想我是否能正确地处理unlink()函数。我不希望unlink()函数抛出一些讨厌的错误,如果它无法取消文件链接(可能是由于找不到文件)。
我试过这样的东西
try {
unlink("secret/secret.txt");
} catch(Exception $e) {
print "whoops!";
//or even leaving it empty so nothing is displayed
} 但它不起作用。我不是PHP专家。我在web上的某个地方搜索并找到了这个异常处理代码。但我记得我的学生时代,Java也使用过同样的方法。所以它应该是有效的。我不知道代码有什么问题。
或者我可以简单地使用if..else语句,比如
if(unlink($file)){
//leaving here empty must ensure that nothing is displayed
}else{
//leaving here empty must ensure that nothing is displayed
}但是这段代码也不能工作。我在哪里做错了?还有什么其他方法可以正确地处理它?
是否可以通过操作错误报告(PHP) (生产和开发环境)来隐藏错误??
发布于 2013-03-10 10:32:22
unlink不会抛出异常,而是生成错误。正确的方法是在尝试对其调用unlink之前检查该文件是否存在。如果您只是担心无法输出错误,那么您应该关闭display_errors,这在生产环境中无论如何都应该这样做。然后它们就会被记录下来。
不要用@抑制错误,这是不可取的。
你能对
@有更多的描述吗
我不太清楚你的确切意思。但是文档是here的。至于你为什么不想用它..。这是因为你永远不会知道代码不工作或有问题。即使代码仍然可以从功能的角度来看,它仍然有一个问题,这个问题可能会使其他东西在某个时候完全不能工作。如果你从来没有遇到过这个错误,你可能会浪费大量的调试时间。
更改日志级别或禁用错误显示是可以的,但您永远不会想要完全禁止它们。
发布于 2013-03-10 10:30:25
注释:这可能不会再起作用。查看Brian的评论
如果只想隐藏错误,可以这样做:
@unlink('your_file_name');通常,在PHP中,@会抑制任何错误。
更好的方法是最小化错误概率。您已经说过,错误的可能性之一是由不存在的文件引起的。如果我是你,我会这么做:
if(file_exists('your_file_name')){
unlink('your_file_name');
}else{
echo 'file not found';
}祝你好运:)
发布于 2016-04-23 07:05:08
您可以使用is_writable来测试您是否具有适当的权限来修改或删除文件。
http://php.net/manual/en/function.is-writable.php
try {
if(!is_writable($file))
throw new Exception('File not writable');
unlink($file);
}
catch(Exception $e) { /* do what you want */ }https://stackoverflow.com/questions/15318230
复制相似问题