web-dev-qa-db-ja.com

PHP on IIS 7

PHPスクリプトがディレクトリに書き込み許可を持っている必要があります。PHP 5.3は、IIS 7でWindowsサーバー2008をOPとして使用しています。PHPエラーログで、スクリプトがファイルを書き込もうとすると「許可が拒否されました」と表示されます。

これをどうやって整理できますか? IIS_IUSRとIUSR_myservernameに(私のフォルダーを右クリックして)すべての権利を与えようとしましたが、うまくいきませんでした。

どんな助けでも大歓迎です、

よろしく、

ジュリアン

35
JuCachalot

私は同じ設定をしていて、書き込み許可を与えなければなりません:

  • IUSR
  • IIS AppPool\<<AppPoolName>>
68
tomfumb

実際には、もう少し複雑です。

最初に行うことは、単純なPHPファイルを関連するWebサイトに作成することです。各Webサイトは異なる設定を持つことができるため、関連するWebサイトにファイルを作成することが重要です。)このファイルは次のとおりです。

<?php var_dump(ini_get('fastcgi.impersonate')); ?>

ブラウザを使用してこのファイルに移動します。

**ケース1 **

ブラウザに表示される場合:

string(1) "1"

次に、次のコマンドを実行する必要があります(「既定のWebサイト」をIISでWebサイトに付けた名前に置き換える必要があります)。

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication

次のような回答が表示されます。

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>

探している情報は、usernameタグのanonymousAutthentification属性の値です。

  • この値が空でない場合、そのコンテンツは書き込み権限を付与する必要があるユーザーの名前です。
  • この値が空の場合、または属性が欠落している場合は、IIS AppPool\AppPoolNameに書き込み権限を付与する必要があります(「AppPoolName」をWebサイトのアプリケーションプールの名前に置き換えてください)。

**ケース2 **

ブラウザに表示される場合:

string(1) "0"

IIS AppPool\AppPoolNameに書き込み許可を与える必要があります(「AppPoolName」をWebサイトのアプリケーションプールの名前に置き換えます)。

25

[〜#〜] php [〜#〜] IISではなく書き込み許可を与える必要があります。これは、PHPで実行されているユーザーアカウントにアクセス許可が必要であることを意味します(おそらく同じアカウントIISで実行されています)。

9
Andrea