PHPエラー「PHP Warning: chown(): Operation not permitted」の原因と解決方法
PHP関数「chown()」でファイルの所有者を変更しようとすると、
PHP Warning: chown(): Operation not permitted
といったPHPエラーが発生することがある。
《参考:PHPサンプルプログラム「test.php」の中身》
chown ("./test.txt","nobunaga");
?>
※test.txtというファイルの所有者を「nobunaga」ユーザに所有者を変更するサンプルプログラム。
このPHPエラーが発生した場合、PHPプログラムを実行するユーザが、chownコマンドを実行できる権限を有しているかどうかを確認する必要がある。
Linuxでは、sudoで一般ユーザにも実行できるような権限設定をしていなければ、chownコマンドはスーパーユーザ(rootユーザ)でしか実行できない。
つまり、このエラーとなったPHPプログラム内にあるchownについても、PHPを実行するユーザが、chownを実行できる権限を有している必要がある。
PHPを実行するユーザとは、ブラウザでPHPプログラムを実行した場合は、ウェブサービスの実行ユーザ、例えば、apacheユーザとなる。
PHPプログラムをapacheユーザで実行した時に「chown(): Operation not permitted」というエラーになったのであれば、apacheユーザではchownを実行できる権限を持っていないことが分かる。
PHPプログラムをコマンドラインで実行した時に「chown(): Operation not permitted」というエラーになったのであれば、コマンドラインでの実行ユーザではchownを実行できる権限を持っていないことが分かる。
そして、rootユーザで、PHPプログラムをコマンドラインで実行すれば、PHPエラーは発生しないことが確認できるはずである。
PHPエラー「PHP Warning: chown(): Operation not permitted」の原因は、PHP実行ユーザにchownを実行できる権限がないから、となる。
そして、この問題を解決する方法としては、PHP実行ユーザでもchownが実行できるようにLinuxサーバの設定を変更するか、rootユーザでPHPプログラムを実行するか、のどちらかになりそうだ。