2011年2月15日火曜日

XERAでPHPのsystem関数を使ってmysqlのバックアップデータを復元

XREAに限らず、PHPがセーフモードで動いているサーバーがけっこう多いと思います。

MySQLのバックアップデータをWeb上で復元するという処理が必要だったので、PHPのsystem関数を使わないといけませんでしたが、system関数ってのはセーフモードでは動かないので、XREAの場合はCGI版のPHPで実行しないといけません。

まずは.htaccessを編集して、system関数を実行するphpファイルをCGIとして動かすようにします。

<Files ファイル名.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

それでsystem関数でバックアップデータ復元のコマンドを指定するんだけど、ここで一回つまずいた・・

$command = "mysql -u ログインID -pパスワード データベース名 < /virtual/XREAのユーザー名/バックアップファイル";
system($command);

と書いて実行してみたけど、うまくいかない。
sh: mysql: command not found となってしまいます。

パスが通ってないのかな?と思ってSSHで同じコマンドを実行すると正常にバックアップを復元できました。
パスは通ってるのに・・と思ったけど、とりあえずsystem関数でmysqlのフルパスを指定してみました。

$command = "/usr/local/mysql/bin/mysql -u ログインID -pパスワード データベース名 < /virtual/XREAのユーザー名/バックアップファイル";
system($command);

こうするとうまくいきました。

phpMyAdminからだと、アップロード可能容量の制限で大容量のバックアップファイルを復元することができないと思うので、一度サーバーにFTPでバックアップファイルをアップしてからこの方法で復元するということもできますね。

0 件のコメント:

コメントを投稿