質問

Windows XPコンピューターにインストールされたPHP(XAMPP)内に、ローカルネットワークサーバーに存在する監督を読み込もうとしています。使用しています is_dir() それが私が読むことができる監督であるかどうかを確認するために。

Windows Explorer Iタイプ \\\server\dir そして、その監督が示されています。ネットワークドライブをマップすると、アクセスできます z:\dir 同じように。

PHPにはそのスクリプトがあります:

<?php if( is_dir($dir){ echo 'success' } ) ?>

為に $dir 私は試した:

  • /server/dir
  • //server/dir
  • \server\dir
  • \\server\dir
  • \\\\server\\dir

  • z:\dir
  • z:\\dir
  • z:/dir
  • z://dir

しかし、私は決して成功しませんか?何か案が?どうも

役に立ちましたか?

解決

この議論の最後の答えで説明されているように、サーバーのレジストリ内のいくつかのものを変更することでそれを解決しました。

http://bugs.php.net/bug.php?id=25805

とにかくVolkerkとGumboに感謝します!私はStackoverflowと、あなたをとても速く助ける彼らの素晴らしい人々が大好きです!!

編集(php.netから取得):

このサービスは、資格情報がなく、nullセッションを使用して接続する必要があるため、株やパイプなどのネットワークリソースへのアクセスが制限されています。次のレジストリキーには、nullsessionpipesとnullsessionshares値が含まれています。これらの値は、nullセッションが接続できるパイプと共有を指定するために使用されます。hkey_local_machine system currentControlset Services Lanmanserver Parameters alt addword value dword value dword bale addworeすべてのnullセッションがそのマシンで作成されたすべてのパイプと共有にアクセスできるように0に設定します。

restrictnullsessaCcess = 0を登録に追加します。

他のヒント

おそらく、XAMPPにApacheをサービスとしてインストールし、このApacheをTrough Troughに実行することです。およびApacheサービス(ASを実行しています LocalSystem)ユーザーアカウントのようにネットワークにアクセスすることは許可されていません。

LocalSystemアカウントのコンテキストで実行されるサービスは、SCMのセキュリティコンテキストを継承します。ユーザーSIDは、security_local_system_rid値から作成されます。 アカウントは、ログオンユーザーアカウントに関連付けられていません.
これにはいくつかの意味があります:
...
   * このサービスは、コンピューターの資格情報をリモートサーバーに提示します.
...

これをテストして、Apacheをコンソールアプリケーションとして起動して(XAMPPディレクトリのapache_start.batがそれを行う必要があります)、スクリプトを再度実行できます。 UNCパスで前方と後方の両方のスラッシュを使用できます。 PHPが文字列リテラルについて気にしないので、//サーバー /共有を使用することをお勧めします。

<?php
$uncpath = '//server/dir';
$dh = opendir($uncpath);
echo "<pre>\n";
var_dump($dh, error_get_last());
echo  "\n</pre>";

試してみてください file: URIスキーム:

file://server/dir
file:///Z:/dir

始まりは常にです file://. 。次のパスセグメントはサーバーです。ローカルマシン上にある場合は、空白のままにしておきます(2番目の例を参照)。参照してください Windowsにurisをファイルします.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top