2011-10-17 61 views
0

我有由opendir一個奇怪的問題(同樣的問題水珠):奇怪的PHP執行opendir /水珠問題

$dir = "Y:\\\\foldername\\"; 
if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      echo "filename: $file\n"; 
     } 
     closedir($dh); 
    } 
} 

Y:\是驗證的網絡文件夾。 我的網絡服務器名稱是testweb,這個腳本叫做tree.php。 不幸的是我的環境是基於Windows的(php 5.2.5 ISAPI,windows 2003服務器)。

當我從運行IIS的同一臺機器(http://testweb/tree.php)打開腳本時,一切正常,但如果我從另一臺機器(例如我的筆記本電腦)連接到相同的地址,以下錯誤:

Warning: opendir().. failed to open dir. No error IN D:\web\tree.php

這似乎是一個權限問題,但它爲什麼從「本地機器」,而不是從外部工作?我怎樣才能解決這個問題?

感謝您的幫助!

+1

不要在PHP中使用反斜槓 - 它會在Windows上爲您自動轉換。只需使用'// server01/foldername'來代替,並且避免因傾斜牙籤綜合症 –

回答

1

檢查您的權限在該目錄..你可以使用一個名爲is_readable

+0

同樣的問題... var_dump(is_readable($ path))returs true如果我從IIS機器打開瀏覽器..但是從外部返回false .. !! – delmi

+0

你說「Y:\是一個帶認證的網絡文件夾」..所以遠程機器應該認證才能讀取? – mishu

+0

沒有..這是一個共享映射在Windows與一個特定的域帳戶..這很奇怪,因爲從客戶的角度來看,它應該是透明的..瀏覽器聯繫網絡服務器和PHP讀取文件夾(和窗口應打開它與適當的認證)。如果我在與web服務器相同的機器上打開瀏覽器或不應該是相同的..應該..但它似乎不是! – delmi

1

功能我,即使我改變了許可之前有這個錯誤做到這一點,我登錄的管理員的錯誤依然存在。

我通過給函數opendir()的絕對路徑解決了這個問題,而不是寫「子文件夾」我寫了「C:\ wamp \ www \ myproject \ subfolder」,這解決了我的問題!

謝謝