自分のアホさ加減をさらすことになりますが、反面教師のネタとして面白いので書き残しておきます。
先日、PHPのエラー表示(display_errors)を変えるために、設定ファイル(php.ini)を操作していました。実はそのとき他の用事で慌てていて、変更した内容をしっかり保存(:wq)していませんでした。
記憶がちょっとあいまいなのですが、たしか、:qもしくは:q!で終了させていたかと。するとどうなったか?
swapファイル現る!
再度、設定ファイルを開けようとします。
$sudo vi /etc/php.ini
すると「ファイルが入れ替わっているよ!」という主旨のエラーが表れます。
E325: ATTENTION Found a swap file by the name "/etc/.php.ini.swp" owned by: root dated: Tue Sep 2 23:00:42 2014 file name: /etc/php.ini modified: YES user name: root host name: myservername.com process ID: 1091 While opening file "/etc/php.ini" dated: Thu Nov 20 14:23:46 2014 NEWER than swap file! (1) Another program may be editing the same file. If this is the case, be careful not to end up with two different instances of the same file when making changes. Quit, or continue with caution. (2) An edit session for this file crashed. If this is the case, use ":recover" or "vim -r /etc/php.ini" to recover the changes (see ":help recovery"). If you did this already, delete the swap file "/etc/.php.ini.swp" to avoid this message.
なるほど、.php.ini.swapという見慣れないファイルが。
swapファイルの内容を確認すると文字化けがひどく、いかにもファイルが壊れた感じの内容です。ここで自分は、/etcから、php.ini.swapというファイルを削除いたしました。
削除すると、「リカバリーできたよ!」という感じのメッセージが返ってきましたが、実は全然リカバリーできていません。php.iniの内容は真っ白です。
phpをアンインストールして、再インストールしてみました。しかし、相変わらずphp.iniは真っ白のままです。
最終的にはどうしたか?
仕方がないので、PHP For Windows: Binariesから、PHPバイナリの zip 版(VC11 x86 Non Thread Safe (2014-Nov-13 03:39:23))をダウンロードします。
ダウンロードしたフォルダの中から、php.iniのファイルを見つけ出し、内容をそのまま真っ白のphp.iniにコピペしました。
:wq $sudo service httpd restart
保存と再起動に関するコマンドもお忘れなく!またTimezoneや言語設定もやり直す必要があります。何をやるかは、ドットインストールの動画が参考になるでしょう。
一応動いてます
zipフォルダはWindows用らしいですが、一応Linux(CenTOS6.5)上でも動きます。php.iniを消してしまい、パニックなりそうなときの応急措置としてありかもしれません。
教訓としては、php.iniを操作するときは落ち着いてやるというところでしょうか。「とりあえず動く」というだけなので、これがまともなやり方かどうか、検証する必要があるでしょう。
〔参考サイト〕