Windows Server 2008 上の IIS 7 で実行されている PHP Web サイトで問題が発生しています。
エラーが発生している mkdir を呼び出すコード行が 1 行あり、エラー ログには次のように表示されます。
"... アクセス拒否 ..."
フォルダーのアクセス許可に関係することは何も除外しました(複数のグループを試しました:全員、ユーザー、IUSR、ネットワークサービスなど、運がありません)。
mkdir の仕組みを知りたいのですが、親フォルダーの読み取り専用属性をチェックしますか?
もしそうなら、Windows Server 2008 のすべてのフォルダが「読み取り専用」としてマークされ、チェックボックスがグレー表示されているため、これが問題の根本である可能性があります - Microsoft は「設計による」と言っていますが、私はそれが本当に「悪い」デザイン"。
助けてください。
PSここでエラーが見つかるコード行https://github.com/LimeSurvey/LimeSurvey/blob/070d255ba381d7abcd231d7c9e0c7d11f5578c97/admin/templates.php#L1182 1182行目です。
解決:
- 結局、それは許可の問題でした!
- 間違ったフォルダーにアクセス許可を適用していました (手を額に叩きつける)
- /Templates と /Uploads/Templates の 2 つの「テンプレート」フォルダーがあります。
- /Template はデフォルトのテンプレート用で、/Uploads/Templates はユーザーが作成したテンプレート用です
- "Users" グループに /Uploads/Templates フォルダーへの r/w/execute/modify 権限を付与しました
- 以前は /Templates にアクセス許可を適用していましたが、
- これをデバッグするために、値
echo
を出力していました$target
教訓:
- 常にエラーメッセージを読んでください-「許可が拒否されました」と書かれていて、信じられませんでした
- 明らかなことを真実だと思い込まないでください - /Templates は適切なフォルダーではありませんでした
- コードにエラーがある場合は、コードをデバッグし、問題を推測しようとしないでください。
- 変数値の出力などの単純な手法を使用してコードをデバッグします - 例: echo
- 大多数の意見に耳を傾けてください。ここにいるほとんどの人は、IT は許可の問題だと言っています。
- ほとんどのエラーは簡単に修正できます - 複雑なものを探す必要はありません
@BOMEz に賞金が授与されたのはmkdir()
、許可について再考する必要があることを示すドキュメントからの有用な引用のためです。@BOMEz もカスタマイズされた回答を提供し、コメントを介して私とやり取りしてくれました。