PHPにももちろんパーミッションを変更する関数はある*1。ところがこれでエラーになる場合がある。
PHPのchmodでエラーになる場合
<?php // パーミッションを0666へ変更する。 chmod ('hoge/hoge.php', 0666); // ところが以下のようなエラーになる場合がある。 //Operation not permitted ?>
原因は実行する側の権限の問題。いろいろ調べた結果、systemという関数を使用した*2。スマートではないけどレンタルサーバーでSSHアクセス出来ない場合はこれしか方法がないのかなぁ、という感じ。
対策方法
<?php // 使用しているサーバーでchmodコマンドが使えることが前提 system('chmod 666 ./hoge/hoge.php');exit; ?>
備考
相変わらずスマートさにかける・・・。