2011-11-10 204 views
4

爲什麼is_dir()返回false,即使它是一個dir?即使是dir,is_dir也會返回false?

沒有返回錯誤

$path_mysql = '/var/lib/mysql/'; 
if(!is_dir($path_mysql)){ 
    echo 'error'; 
} 

返回錯誤

$path_mysql = '/var/lib/mysql/domain.com/'; 
if(!is_dir($path_mysql)){ 
    echo 'error'; 
} 

/var/lib/mysql/domain.com/確實exsits,但is_dir()返回false!?

我可以通過這兩種膩子和WinSCP賦予

訪問目錄
+0

你有檢查權限嗎? – gustavotkg

+0

'/ var/lib/mysql'中的目錄通常只能由mysql用戶讀取。 Apache&PHP將無法訪問它們。 –

+0

如果您正在創建'domain.com /',那麼您可能需要在檢查前執行'clearstatcache()'。 – Jon

回答

4

可能是因爲它無法檢查/var/lib/mysql/domain.com/是否存在,因爲它沒有足夠的權限這樣做(權限問題)。

檢查/var/lib/mysql/目錄的用戶的執行(列表)的權限和運行這個PHP腳本(可能是www-data

+0

你怎樣才能訪問目錄?我需要備份二進制文件 – clarkk

+0

我不確定這是個好主意。你爲什麼不使用'mysqldump'來備份MySQL數據庫? –

+0

可以使用mysqldump來複制二進制數據文件嗎? – clarkk

0

大概權限 - MySQL的數據顯示目錄是由MySQL的用戶所擁有。如果您正在Web服務器下運行此測試腳本,則Web服務器的UID有權讀取該目錄中的任何內容的可能性非常小,因此is_dir返回false。

相關問題