IIS+PhpStormでの開発トラブルと対応の記録

WebサーバにIIS、IDEにPhpStormを使ってPHPアプリを開発しています。
開発中に発生したトラブルとその対応内容をこのページに健忘録として記録しておきます。

スポンサーリンク

ダウンロードフォルダから直接プロジェクトフォルダにファイルを放り込むと401エラー

現象

画像素材をネットからダウンロードし、ダウンロードフォルダに保存。

そのファイルをPhpStormのプロジェクトフォルダにドラッグ&ドロップでコピー。

2016-11-13_22h13_31

プロジェクトをデバッグ実行、ブラウザで開くと画像が表示されない。

画像のURLを直接開くと401エラーが発生する。

2016-11-13_22h14_26

HTTP エラー 401.3 – Unauthorized

Web サーバーにあるこのリソースに対するアクセス制御リスト (ACL) 構成または暗号化設定により、このディレクトリまたはページを表示するアクセス許可がありません。

可能性のある原因:

  • Web サーバーによって認証されたユーザーにファイル システム上のファイルを開くアクセス許可がありません。
  • リソースが汎用名前付け規則 (UNC) 共有に存在する場合、認証されたユーザーの共有および NTFS へのアクセス許可が不足したり、共有のアクセス許可が物理パスのアクセス許可と一致しなかったりすることがあります。
  • ファイルが暗号化されています。
対処方法:

  • エクスプローラーを開き、要求されているファイルのアクセス制御リスト (ACL) を確認します。Web サイトにアクセスしているユーザーからのアクセスが明示的に拒否されていないことを確認し、ファイルを開くアクセス許可があることを確認します。
  • エクスプローラーを開き、共有と物理パスのアクセス制御リストを確認します。共有と物理パスでリソースへのアクセスが許可されていることを確認します。
  • エクスプローラーを開き、要求されているファイルの暗号化プロパティを確認します (この設定は、プロパティの [属性] の [詳細設定] にあります)。
  • この HTTP 状態コードに対して失敗した要求を追跡するトレース規則を作成します。失敗した要求のトレース規則の作成の詳細については、ここをクリックします。
エラー情報の詳細:

モジュール    IIS Web Core
通知    AuthenticateRequest
ハンドラー    StaticFile
エラー コード    0x80070005
要求された URL    http://localhost:50001/test.jpg
物理パス    C:\usr\dev\git\web\techo.red\public_html\test.jpg
ログオン方法    匿名
ログオン ユーザー    匿名
詳細情報:

ページにアクセスしようとしているユーザーは正常にログオンされましたが、リソースにアクセスするアクセス許可がユーザーにありません。これは、リソースのアクセス制御リスト (ACL) にユーザーが含まれていないか、または明示的にユーザーを拒否していることを意味します。リソースの ACL を確認し、ACL にユーザーを追加します。ユーザーがアクセスを拒否されているグループの一員であることも考えられます。詳細情報の表示 »

マイクロソフト サポート技術情報の記事:

  • 907273
  • 332142

原因

ダウンロードフォルダから直接プロジェクトフォルダにドラッグ&ドロップすると「Authenticated Users」グループが不足する為にIISが読み取れない。

✕ 異常 ○ 正常
2016-11-13_22h42_35 2016-11-13_22h49_05

対策

直接ドラッグ&ドロップせず、エクスプローラ経由でコピーする。
なお、ゾーン識別子を削除(ブロックの解除)していなくても問題無いが、IISのバージョンによって挙動が違う可能性があるのでブロック解除しておいたほうが無難。

screenshot_20161113_225824