2012-11-06 78 views
7

我有一個網絡驅動器映射到驅動器盤符X:\去到一個外部硬盤驅動器,路徑爲「\\ X-Drive \ Public \ Data」。PHP is_dir()在Windows網絡驅動器上返回false

我使用Zend Server和Apache。

我的PHP命令很簡單

$isFolder = is_dir("x:/"); 
echo($isFolder); //FALSE 

事情你應該知道:

代碼:

$isFolder = is_dir("c:/"); 
echo($isFolder); //TRUE 

按預期工作。

我以管理員用戶身份運行Zend Apache服務。我知道這是正常工作,因爲在任務管理器httpd.exe進程顯示正確的用戶。

確實映射了驅動器。我曾嘗試將它與幾個用戶進行映射,以包含Zend Apache無法使用的同一用戶。

我已閱讀關於此問題的每一篇文章,我都可以找到。我遇到的每個問題都是由於用戶權限或錯字造成的。我不明白我的問題是如何落入這兩類的。

我也曾嘗試:

system('net use X: "\\x-drive\public" password1 /user:username /persistent:no'); 
$isFolder(is_dir("x:/")); 
echo($isFolder); //FALSE 

我運行Windows Vista 64位,生產代碼將在Windows 7 64位系統上運行。

我還可以運行哪些其他問題?

回答

8

對於網絡共享,你應該使用UNC名稱: "//server/share/dir/file.ext"Source

如果使用IP或主機名,應該很好地工作:

$isFolder = is_dir("\\\\NAS\\Main Disk"); 
var_dump($isFolder); //TRUE 

$isFolder = is_dir("//NAS/Main Disk"); 
var_dump($isFolder); //TRUE 

$isFolder = is_dir("N:/Main Disk"); 
var_dump($isFolder); //FALSE 
+0

感謝簡潔的例子和說明! $ isFolder = is_dir(「// NAS/Main Disk」); var_dump($ isFolder); // TRUE 對我來說是最好的方式。謝謝! – Wes