PHPでchmod()した際のOperation not permittedエラーに関して

chmod()

PHPにて、とあるファイルのパーミッションを変更しようと以下の様に記述を行いました。  

$file_pathにあるファイルのパーミッションを変更しようとしています。

その後も更新の発生するファイルだったためです。

しかし、処理を実行してみると以下のようなエラーが出力されてしまいました。

 

 

Operation not permitted 

調べてみると当然のことだったのですが、chmod()を実行する際は実行ユーザと対象ファイルの所有者ユーザが一緒でなければなりません。

以下はrootユーザで作成したファイルに対してapacheユーザでchmodコマンドを実行しようとテストした際の様子です。

chmod_vagrant

PHPのWarningと同様のOperation not permittedと表示されているのが分かりますね。

 

解決

実際にPHPから操作しようとしたファイルを確認してみると、

PHPの実行ユーザのapacheとは異なる所有者設定になっていました。

rootユーザで対象ファイルの所有者をapacheに変更し解決しました。

●この記事を書いた人