ブラウザから(UNCによって)ネットワーク共有に接続しようとしていますが、接続できません。
コマンドラインからスクリプトを実行すると、すべてが正常になり、共有にアクセスできます。また、Windowsのファイルエクスプローラーから移動することもできるので、コードやWindowsアカウントのアクセス許可に問題はないと思います。
私のスクリプトは次のようになります。
$dir = '\\\\some\path';
if (is_dir($dir))
{
echo 'dir exists';
}
else
{
echo 'dir does not exist';
}
も使用してみDirectoryIterator($dir)
ましたが、この例外エラーがスローされます。
PHP Warning: opendir(...): Access is denied. (code: 5)
これが私のセットアップです:
-Windows Server 2008 R2
-
IIS7.5
-PHP5.3.13-匿名認証が無効になってい
ます-Windows認証が有効になっ ています
そして、php.iniに次の構成設定があります。
cgi.force_redirect=0
cgi.fix_pathinfo=1
fastcgi.impersonate=1
混乱を増すために、私はこれらのシナリオの下でブラウザを介して接続することができました:
1-使用system("net use \"".$dir."\" ".$pass." /user:".$user." /persistent:no>nul 2>&1");
するしかし、これにはユーザーのWindows認証パスワードをハードコーディングする必要があります。これは私にはできません。
2-設定fastcgi.impersonate=0
ただし、これは、ユーザーがスクリプトをヒットするたびに認証する必要があることを意味します。これは受け入れられません。
3-匿名認証を有効にし、Windows認証を無効にしますが、サイトにアクセスしているユーザーを知るには、Windows認証を有効にする必要があります。
これが私の問題と関係があるかどうかはわかりませんが$_SERVER['USERNAME']
、ブラウザーとコマンドラインからスクリプトを実行すると、値が異なります。
これは権限の問題ですか?渡されていない認証トークンはありますか?
編集
残念ながら、この場合、共有をネットワークドライブにマッピングすることはできません。