2011-10-17 11 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 server)。

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))は、IISマシンからブラウザを開くとtrueに戻りますが、外部からfalseを返します.. !! – delmi

+0

あなたは "Y:\は認証付きのネットワークフォルダです"と言っています..リモートマシンは認証できるはずですか? – mishu

+0

いいえ..特定のドメインアカウントを持つウィンドウにマップされたシェアです。クライアントの観点から見ると、透明でなければならないので奇妙です。ブラウザがWebサーバーに接続し、phpがフォルダを読み込みます(ウィンドウで適切な認証)。私がウェブサーバと同じマシン上のブラウザを開くかどうかは、同じでなければなりません。..すべきですが、そうではありません! – delmi

1

と呼ばれる機能を使用してそれを行うことができ、私は許可を変更し、私はエラーが持続管理者としてログインした場合にも前に、私はこのエラーが発生しました。

私は "C:\ wamp \ www \ myproject \ subfolder"と書いた "サブフォルダ"を書くのではなく、関数opendir()の絶対パスを与えることでこれを解決し、これが私の問題を解決しました!

ありがとうございます。