phpでパーミッションを変更する

phpでパーミッションを変更する

通常パーミッションはFTPソフトでの変更で十分間に合うのですが、処理によっては頻繁に変更したい場合があります。下記のコードはサーバー上のhtmlファイルを動的に変更する際にhtmlファイルのパーミッション”666”に変更し更新を可能にする処理部分です。当然、改ざんを防ぐためにこの処理の後にはパーミッションを元に戻す処理が必要になります。

$file = ‘xxxxxx.html’;
$ftp_server = “ftp.xxxxx.com”;
$ftp_user = “usernamu”;
$ftp_pass = “password”;

// ftp接続を確立する。接続に失敗したら終了する。
$conn_id = ftp_connect($ftp_server) or die(“Couldn’t connect to $ftp_server”);

// ftpログインを試みる
if (!@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
echo “Couldn’t connect as $ftp_usern”;
}

// $file のパーミッションを 666 に変更する
if (ftp_chmod($conn_id, 0666, $file) == false) {
echo “could not chmod $filen”;
}
// ftp接続を閉じる
ftp_close($conn_id);

//htmlオープン(lockモード)
$filepath = “./xxxxx.html”;
$fp = fopen($filepath,”a”);
flock ($fp,LOCK_EX);

//先頭に位置セット
ftruncate($fp,0);
rewind($fp);

//$h_resに格納されているhtml文を出力
fwrite($fp,$h_res.”rn”);

//htmlクローズ
fclose($fp);

通常ユーザーからの変更はこの様にパーミッションを変更しないと、htmlの書き換えができなようですが、管理者からの変更はパーミッションの変更なしでもhtmlの書き換えができます。

phpはバージョンやレンタルサーバーの初期設定よって仕様が違うので、移行の際は前もっての調査が必要なのかも知れません。ただ実際、動かして見ないとわからないことも少なくないのですが・・・