web-dev-qa-db-ja.com

PHP chmod():操作は許可されていません。safe_modeの廃止は関係しますか?

私が現在取っているコースは少し古く、safe_modeを含むため、PHPからchmod()の概念を理解するのに少し苦労しています。がオフになっていると、所有者がコマンドを実行する所有者と異なる場合に、chmod()を使用してファイルにアクセス許可を変更する制限が解除されます。PHP = 5.5.9とXAMPPを組み合わせて、フラグがオフになっていることを確認しました(念のため)が、機能していないようです。次のPHP脚本:

echo "File permissions :" .  decoct(fileperms("file_permissions.php"));
chmod("file_permissions.php" ,0777);

次の出力が表示されます。

Warning: chmod(): Operation not permitted

ファイルに対する私の許可は次のとおりです

-rwxrwxrwx@  1 joelhernandez  staff     24 Apr 14 06:59 file_permissions.php

そして、私はps aux | grep httpd私のWebサーバーがユーザー "デーモン"の下で動作していることを確認します。

ファイルの所有権をdaemonに変更すると:

-rwxrwxrwx@  1 daemon  staff     24 Apr 14 06:59 file_permissions.php

すべてが機能します。safe_modeをオフにすると、ファイルの所有権が意味をなさないことを理解したため、ファイルのアクセス権がアクセスを処理する方法である理由を理解できません。

14
Joel Hernandez

daemonユーザーはrootではないため、別のユーザーが所有するファイルのモードを変更することはできません。 PHP safe_modeはここでは原因ではありません。警告は、Webサーバーのユーザーにモード変更を行う権限がないため、試行された操作が失敗したことを示しています。

ユーザーは所有するファイルのモードを変更できるため、ファイルの所有権を手動でdaemonに変更した後、操作は成功しました。

22
Andrew Medico