0

ブラウザから(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']、ブラウザーとコマンドラインからスクリプトを実行すると、値が異なります。

これは権限の問題ですか?渡されていない認証トークンはありますか?

編集
残念ながら、この場合、共有をネットワークドライブにマッピングすることはできません。

4

2 に答える 2

1

動作するはずですが、パスにアクセスするにはphpプロセスを実行するユーザーが必要です。

あなたの場合、ドメインに属していない場合は、サーバー上にユーザーを作成し、それをアプリケーションプールの所有者として設定することができます。次に、他のコンピューターで同じユーザー/パスワードを作成し、共有フォルダーへのアクセスを許可します。

醜いように見えますが、同意しますが、機能するはずです。

編集

または、はい、ニールによって提案されたように、マップされたフォルダを作成します。簡単かもしれません。

編集2

ドメインに属していない場合、ユーザーを作成してアプリケーションの実行に割り当てるには、次のようにします。

  1. ユーザーを作成する ユーザーを作成する

  2. iismanagerを実行し、アプリケーションを実行するようにユーザーを設定します

アプリケーションを実行するユーザーを割り当てます

最後のステップは、パスを共有しているリモートサーバー上にまったく同じユーザー(パスワードも)を作成し、必要な権限を持つこのユーザーを[セキュリティ]タブに追加することです。

iisを再起動する必要がある場合があります。iisreset

于 2012-12-14T19:19:32.580 に答える
0

PHPでUNCパスを使用して、ファイルに簡単にアクセスすることはできません。

マップされたネットワークドライブを作成してみてください。

于 2012-12-14T19:14:19.753 に答える