chmod()
PHPにて、とあるファイルのパーミッションを変更しようと以下の様に記述を行いました。
1 |
chmod($file_path, 0666); |
$file_pathにあるファイルのパーミッションを変更しようとしています。
その後も更新の発生するファイルだったためです。
しかし、処理を実行してみると以下のようなエラーが出力されてしまいました。
1 |
Warning: chmod() : Operation not permitted in hogehoge.php on line ~~~ |
Operation not permitted
調べてみると当然のことだったのですが、chmod()を実行する際は実行ユーザと対象ファイルの所有者ユーザが一緒でなければなりません。
以下はrootユーザで作成したファイルに対してapacheユーザでchmodコマンドを実行しようとテストした際の様子です。
PHPのWarningと同様のOperation not permittedと表示されているのが分かりますね。
解決
実際にPHPから操作しようとしたファイルを確認してみると、
PHPの実行ユーザのapacheとは異なる所有者設定になっていました。
rootユーザで対象ファイルの所有者をapacheに変更し解決しました。