2017-10-06 54 views
1

好日子文件夾裏!我打了一堵牆。PHP /的Windows Server/IIS通過符號鏈接訪問通過PHP文件到另一臺服務器上

我試圖讓PHP從文件夾中加載另一臺服務器上的文件,並嘗試了許多方法和權限(IIS/PHP使用Windows身份驗證)的變化,但還沒有找到一個解決方案。我很親密,我可以品嚐它。

的文件是一個文件夾中的其他服務器上例如\\otherServer\my_photos

爲了訪問他們這一點,我已經創建了服務器託管的PHP網站上,例如一個符號鏈接

C:\my_photos > \\otherServer\my_photos 

我然後做各種測試,以確定網頁是否具有訪問權限,e.g:

$path = 'C:\\my_photos'; 
$isReadable = is_readable($path); 
var_dump($isReadable); 

以上的回報TRUE

但是,如果我這樣做:

$path = 'C:\\my_photos\photo_1.jpg'; 
$isReadable = is_readable($path); 
var_dump($isReadable); 

它返回FALSE

對文件photo_1.jpg的權限與文件夾my_photos完全相同,所以我懷疑原因是別的,比如某種安全限制會影響對其他服務器上的文件的訪問,但我不知道。我會以虛擬感謝的方式獎勵任何幫助,甚至願意給你一張帶有個人信息的照片。

UPDATE: 如果我們改用Windows身份驗證關閉,匿名身份驗證上(在ApplicationPoolIdentity下運行),它的工作原理,這似乎表明,A)這不是一些容易混淆的跨服務器的安全問題和b)問題可能會更多地涉及PHP/fastCGI模擬Windows用戶的方式。將切換回Windows驗證並繼續測試!

+1

您可以打開命令提示符或者圖像瀏覽器的形象呢?如果不是,先解決這個問題。 – Nic3500

+0

您不能在另一臺服務器上安裝網絡服務器嗎?生活是很容易的時候這裏只有HTTP參與 – icc97

+0

爲什麼不映射\\ otherServer \ my_photos到服務器上的驅動器盤符?可能比符號鏈接更好。但是,您還需要對所有文件擁有正確的權限,而不僅僅是文件夾本身。它們不一定相同。除非您嘗試使用某種傳遞身份驗證,否則通常應將權限授予應用程序正在運行的帳戶,而不是訪問資源的用戶的帳戶。 – ADyson

回答

0

我設法得到這個工作(後頭刮三天)通過改變FastCGI的「協議」從NamedPipeTCP,在這個答案詳細介紹:

https://stackoverflow.com/a/41367358/1358231

我仍然不完全確定這是爲什麼會起作用,但會繼續尋找。最後,不需要符號鏈接(或映射驅動器) - 我們可以通過UNC路徑直接訪問遠程文件。

相關問題