我使用php 5.2與IIS7.5。使用PHP5.2 + IIS7.5訪問網絡共享
我在NAS上有一個用戶名和密碼保護的網絡共享。我無法禁用或更改NAS上的身份驗證信息。我需要能夠通過php訪問該網絡共享。
我已經做了以下內容:在Windows
創建新的用戶,其用戶名和密碼相匹配的NAS上。 創建使用此相同的身份驗證信息的IIS應用程序池。 使用相同的身份驗證信息在打開模擬的情況下在php應用程序目錄內創建一個web.config文件。
身份冒充= 「真」 密碼= 「ThePass」 的userName = 「TheUser」/>
在IIS在應用鑑定功能打開ASP.NET模擬。
無的,這似乎與代碼在PHP這個簡單的線路的工作:
$ DIR =執行opendir( 「\\ someservername \ somesharename」); 警告:執行opendir(\ someservername \ somesharename)[function.opendir]:未能打開目錄:C中沒有錯誤:\網站\在線網站\論壇\ testing.php 7
所以,我決定測試使用ASP.NET進行配置。
string [] diretories = System.IO.Directory.GetDirectories(「\\ someservername \ somesharename」); asp.net測試工作完美。
繼續往下走兔子洞,我跑了phpinfo()並檢查了用戶名信息。在phpinfo的「環境」部分,我找到了「USERNAME」項。它的價值是「TheUser」,正如我所預期的那樣。
一切點,該系統被正確配置,直到我試圖:
回波get_current_user(); 返回的是「IUSR」。這肯定不是我所期望的。
那麼,如何在世界上獲得php + IIS7.5從外部網絡共享讀取?
更新:
由於一些問題的答案,我已經添加
$result = shell_exec("net use o: \\\\pathToServer\\27301 /persistent:yes 2>&1");
它返回一個成功。我仍然在opendir上發生錯誤。我嘗試了另一個測試並使用了is_dir。這在我新創建的映射驅動器上返回false。
var_dump(is_dir("o:\\"));
// Prints: bool(false)
UPDATE
爲創建的用戶登錄,當我跑的命令行腳本。腳本正確執行。這可以把我們帶回到返回IUSR的get_current_user()嗎?我tryied getmypid()返回一個進程ID。我交叉引用進程ID與任務管理器,發現它是爲php-cgi.exe,運行在我所做的自定義用戶帳戶下。
你見過[本說明](http://us3.php.net/manual/en/function.opendir.php#89091)(與安裝/訪問有關)和[本說明](http:// us3.php.net/manual/en/function.get-current-user.php#75059)與腳本進程的所有者有關(而不是腳本的所有者)? – chrisn 2012-03-26 03:27:17
第一個不適用於這裏,他們使用的是Apache,而不是IIS。 – Darthg8r 2012-03-26 18:19:16
映射網絡驅動器? – 2012-03-29 02:36:09