2014-09-18 45 views
0

opendir()給我一個PHP警告,如果無法訪問文件夾。打開沒有PHP警告的文件夾

我可以使用is_dir但如果該文件夾被同時刪除:

if(is_dir($some_dir)){ 
    // HERE, DELETED, GONE :(
    $d = opendir($some_dir); 
    // warning !!0 
    } 

的警告弄亂了我的整個的錯誤處理代碼。

有沒有辦法做文件操作而不會收到警告?錯誤的結果是有足夠的瞭解,該文件無法訪問,我不明白爲什麼它要警告我太:(

請不要告訴我用@。必須有一個更好的辦法

+0

請問這是什麼你可以使用? http://stackoverflow.com/questions/1241728/can-i-try-catch-a-warning – Kai 2014-09-18 19:44:01

+0

你可以嘗試使用嘗試和捕獲? – 2014-09-18 19:44:02

+0

[opendir()](http://php.net/manual/en/function.opendir.php)上的文檔明確提到@解決方案。但是,您似乎需要同步[flock()](http://php.net/manual/en/function.flock.php)可以實現的不同進程。 – andy 2014-09-18 19:52:16

回答

1
$d = @opendir($some_dir); 

@前一個功能沉默錯誤的功能可以提高。

然後你就可以測試$d,看看它的工作或沒有(假,如果不工作)。

哦,對了,感謝意見,OP mentionned不告訴ab出@我的不好。

然後另一種可能性是改變你的PHP配置,所以PHP不會引發警告。

+0

可怕的編程實踐,特別提到的問題,不給這個建議。 – 2014-09-18 19:47:25

+0

你有什麼建議@MikeBrant? – PeeHaa 2014-09-18 19:47:58

0

通過檢查該變量是否設置在第一位來嘗試以下操作。

if(isset($some_dir)): 
    if(is_dir($some_dir)): 
    // HERE, DELETED, GONE :(
    $d = opendir($some_dir); 
    // warning !!0 
    endif; 
endif; 
0

試試這個代碼

if(is_dir($some_dir)){ 
    // HERE, DELETED, GONE 
    $d = @opendir($some_dir); 
    // warning 
    } 

如果你不想使用「@」,那麼你必須檢查/確認在$ some_dir您的目錄路徑是正確的

相關問題