2017-10-06 3 views
1

おはよう!私は壁に当たった。PHP/Windows Server/IIS別のサーバーのフォルダへのシンボリックリンクを介してPHP経由でファイルにアクセス

私はPHPを別のサーバー上のフォルダからロードしようとしていますが、多くの方法とバリエーション(IIS/PHPがWindows認証を使用)を試していますが、解決策はまだありません。私はとても近く、私はそれを味わうことができます。

ファイルは、他のサーバー上のフォルダにあります。 \\otherServer\my_photos

私はこれにアクセスするために、PHPサイトをホストしているサーバー上にシンボリックリンクを作成しました。

私は、例えば、ページがアクセス権を持っているかどうかを判断するために様々なテストをしています
C:\my_photos > \\otherServer\my_photos 

$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: 我々は(ApplicationPoolIdentityの下で実行されている)、それはa)のそれはいくつかの混乱クロスサーバセキュリティの問題ではないことを示唆しているように思われ、作品およびb)の問題が日にWindows認証オフと匿名認証を切り替えた場合PHP/fastCGIがWindowsユーザーを偽装する方法にもっと関連しています。 Windows認証に戻り、テストを続行します!

+1

コマンドプロンプトまたはイメージビューアからイメージを開くことはできますか?そうでない場合はまずこれを解決してください。 – Nic3500

+0

他のサーバーにWebサーバーを置くことはできませんか? HTTPだけが必要な場合、人生ははるかに簡単です – icc97

+0

\\ otherServer \ my_photosをサーバー上のドライブ文字にマップしてみませんか?シンボリックリンクよりも優れています。また、フォルダ自体だけでなく、すべてのファイルに対して正しいアクセス権が必要です。それらは必ずしも同じではありません。何らかの種類のパススルー認証を使用しようとしている場合を除き、通常、アプリケーションが実行されているアカウントには、リソースにアクセスするユーザーのアカウントではなく、アクセス許可を与える必要があります。 – ADyson

答えて

0

私はこの答えで説明するように、TCPNamedPipeからのFastCGI「プロトコル」を変更することにより、(ヘッドスクラッチの3日後)この作業を取得するために管理:

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

私はまだですこれがなぜ機能するのか完全にはわからないが、見続けるだろう。結局のところ、シンボリックリンク(またはマップされたドライブ)の必要はありませんでした。私たちはUNCパス経由でリモートファイルに直接アクセスできました。

関連する問題