Php检查unlink是否返回false或true

时间:2017-02-10 16:19:22

标签: php permissions return unlink

我想检查一下,取消链接返回true或false。

目前我试过这个:

if(!unlink("$directory/$file"))
{
     echo "works not";
}
else
{
     echo "works";
}

我没有输出,我只收到这条消息:

unlink("path"...VTS_01_1.VOB): Permission denied

但它没有用,有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在尝试is_writable

之前,您可以使用unlink功能
if( ! @is_writable( "$directory/$file" ) ) {
     echo "works not";
}
else {
    unlink( "$directory/$file" );
    echo "works";
}
  如果失败,

is_writable函数将显示警告(如果根据配置显示错误),请使用@来抑制错误,如上面的代码所示。

话虽如此,你的CODE没有错误,即使你的CODE和错误一起,你也应该得到works not作为输出。如果你没有得到它,那很可能在你的CODE中意味着一个错误处理程序设置在某个地方&处理程序以exitdie结束执行。

例如,以下CODE只会生成错误,没有输出(如果"$directory/$file"不可写):

function handle_error( $errno, $errstr, $errfile, $errline ) {
    die( $errstr );
}
set_error_handler( 'handle_error' );

// Note: since error handler ends execution with die
// even suppressing warning with @unlink will not give you
// any output other than the error
if( ! @unlink( "$directory/$file" ) ) {
     echo "works not";
}
else {
     echo "works";
}

请检查set_error_handlerset_exception_handler,看看他们是否正在停止执行。输出缓冲也可能是原因。