2017-02-10 146 views
0

我想檢查取消鏈接返回true或false。Php檢查是否取消鏈接返回false或true

目前我嘗試這樣做:

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

我得到不輸出,我剛剛得到這個消息:

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

但它不工作,任何想法?

+0

你在這裏得到什麼輸出? –

+0

我沒有得到任何東西,我只是得到這個消息:'解除鏈接(「路徑」... VTS_01_1.VOB):權限被拒絕# –

+0

我故意讓該文件夾/文件打開以捕獲錯誤並顯示適合此問題的消息,在這種情況下沒有權限錯誤,它只是向我顯示錯誤,因爲我打開了文件夾/文件。 –

回答

2

您可以使用is_writable函數試圖unlink前:

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

is_writable功能會顯示警告(如果根據配置中顯示錯誤),如果失敗了,所以用@取消錯誤如圖所示在上面的代碼中。

話雖如此,你的代碼是沒有錯要麼,即使你用錯誤一起代碼,你應該已經有了works not作爲輸出爲好。如果你沒有得到它,這很可能意味着在你的代碼中錯誤處理程序被設置在&處理程序正在結束執行exitdie

例如,下面的代碼將只產生錯誤,沒有輸出(如果"$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,看它們是否停止執行。輸出緩衝也可能是原因。

相關問題