0

スタック オーバーフローと Google を何時間も検索しましたが、答えが見つかりません。関連するものを見つけましたが、何も機能していません。

コードは次のとおりです。

$oldmask = umask(0);

if(!is_dir("play")){
    mkdir("play", 0777, true);
    chmod("play", 0777);
}
if(!is_dir("play/playTest")){
    mkdir("play/playTest", 0777, true);
    chmod("play/playTest", 0777);
}

umask($oldmask);

ディレクトリ「play」は正常に作成されますが、「play/playTest」ディレクトリを作成しようとするとこのエラーが発生します。

SAFE MODE Restriction in effect. The script whose uid/gid is 178245/178245 is not allowed to access /a/b/c/play owned by uid/gid 25000/25000 in /a/b/c/script.php

これはセーフ モードによるファイル所有者の制限であることは理解していますが、同じスクリプトでフォルダーを作成したときにユーザーが異なるのはなぜですか?

umask の有無にかかわらず、chmod の有無にかかわらず、その他多くのことを試しましたが、何も機能しませんでした。

ありとあらゆる助けをいただければ幸いです。

4

1 に答える 1

0

このハッキーな回避策は、セーフ モードの脆弱性に依存しています。

(FTP を使用すると、ディレクトリを再帰的に作成できます)

http://php.net/manual/en/function.mkdir.php#104301

于 2014-09-17T21:09:08.940 に答える