私が現在取っているコースは少し古く、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をオフにすると、ファイルの所有権が意味をなさないことを理解したため、ファイルのアクセス権がアクセスを処理する方法である理由を理解できません。
daemon
ユーザーはroot
ではないため、別のユーザーが所有するファイルのモードを変更することはできません。 PHP safe_modeはここでは原因ではありません。警告は、Webサーバーのユーザーにモード変更を行う権限がないため、試行された操作が失敗したことを示しています。
ユーザーは所有するファイルのモードを変更できるため、ファイルの所有権を手動でdaemon
に変更した後、操作は成功しました。