本家のお世話-#2。

投稿アップデート情報  追記4(2012/4/11)

 初っ端に自鯖をたてた時以来,Apacheについては,http://www.apache.org/dist/httpd/binaries/win32/から.msiを落としてきて使ってきた。
 ところが,今回,3月17日のPHP 5.3.6のリリースで,ちょっと困った事態が発生した。いままで提供されていたVC6 x86 対応バージョンがなくなってしまったのだ(この件に関しては,追記2・3参照)。しかし,PHP 5.3.6ではかなり脆弱性が修正されているので,アップデートしないというのは,日ごろの主義に反する。
 修正された脆弱性は,主なものだけでも以下の通りだ。

  • Enforce security in the fastcgi protocol parsing with fpm SAPI.
  • Fixed bug #54247 (format-string vulnerability on Phar). (CVE-2011-1153)
  • Fixed bug #54193 (Integer overflow in shmop_read()). (CVE-2011-1092)
  • Fixed bug #54055 (buffer overrun with high values for precision ini setting).
  • Fixed bug #54002 (crash on crafted tag in exif). (CVE-2011-0708)
  • Fixed bug #53885 (ZipArchive segfault with FL_UNCHANGED on empty archive). (CVE-2011-0421)

 PHP For Windows では前々から,「Do NOT use VC9 version with apache.org binaries」となっている。見ての通り,NOTは大文字かつ太字。
 仕方がないので,http://windows.php.net/download/での指示通り,Apache Loungeに行って,httpd-2.2.17-win32-x86-ssl.zipを落としてきた。
 さて,地道に本家のお世話に取り組むか。

  1. こいつを解凍してみると,Apacheのディレクトリ名がApache2になっているので,これを現在の使用中のApache2.2に変更。
    また,*.confファイルの中に14か所あるc:/Apache2を,自鯖のパスにアジャスト。
  2. httpd.confを自鯖の環境に合わせて書き換え。
  3. conf/extra内の*.confの追加および書き換え。(awstats用,バーチャルホスト用などなど。)
  4. php-5.3.6-Win32-VC9-x86.zipを解凍して,php.ini-productionをphp.iniにリネームし,現在使用中のphp.iniと比較しつつ,手直し。
  5. allow_url_fopen = Onをallow_url_fopen = Offにする。(RFI対策のひとつ)
  6. ;extension_dir = “ext”をアンコメントし,extension_dir = “C:\PHP\ext\”に書き換え。
  7. ;extension=php_gd2.dllをアンコメント。
  8. ;extension=php_mbstring.dllをアンコメント。
  9. ;extension=php_mysql.dllをアンコメント。
  10. ;extension=php_mysqli.dllをアンコメント。
  11. ;date.timezone =をアンコメントし,date.timezone =”Asia/Tokyo”に書き換え。
  12. ;sendmail_from = me@example.comをアンコメントし,sendmail_from =”管理者のメールアドレス”に書き換え。
  13. ;mbstring.language = Japaneseをアンコメント。
  14. ;mbstring.internal_encoding = EUC-JPをアンコメントし,mbstring.internal_encoding = UTF-8に書き換え。
  15. ;mbstring.http_output = SJISをアンコメントし,mbstring.internal_encoding = UTF-8に書き換え。
  16. この際だから,ついでにdisable_functions =も編集して,disable_functions =”shell_exec, suexec, passthru, phpinfo”にしておいた。

 ApacheとPHPの下準備が済んだので,インストールにかかるが,その前にサイトのデータをバックアップ。この間みたいに後で青ざめたくないもんね!!
 今回ほかにもいろいろアップデートが出ているので,下記の順でやります。

  1. まず,VC6からVC9ということで,Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)を,更新も含めてインストール。
  2. ちょっとApacheをストップして,Apache Lounge版とそっくり入れ替え。
  3. C:\PHPの中身もPHP 5.3.6とそっくり入れ替え。
  4. ここで,ドキドキしながら,Apacheをスタート。おっ,走ったよッ。
  5. 再度,Apacheをストップ。
  6. ActivePerl-5.12.2.1203-MSWin32-x86-294165.msi
    ————> ActivePerl-5.12.3.1204-MSWin32-x86-294330.msi
  7. mysql-5.5.8-win32.msi
    ————> mysql-5.5.10-win32.msi (マイナーバージョンアップなので上書きインストール。)
  8. ImageMagick-6.6.7-4-Q16-windows-dll.exe
    ————> ImageMagick-6.6.8-10-Q16-windows-dll.exe (いつもながら,OSを再起動しないと更新されない。)
  9. phpMyAdmin-3.3.9-english.zip
    ————> phpMyAdmin-3.3.10-english.zip

 完了。
 いろいろ変わったので,ブログのプラグインでも不具合の起こる恐れもあります。なんか,気づかれましたら,ご連絡いただけたら幸いです。

追記:
 早速だが,次記事に書いたように,file_get_contents()が使えなくなっちゃったので,最新のcurl-7.21.4-devel-mingw32.zipを落としてきて,cURLをインストールした。
 http://www.php.net/manual/ja/curl.installation.phpによると,「libeay32.dll および ssleay32.dll が PATH の通った場所に存在する必要があります。」ということなので,curl.exeとlibeay32.dllをC:\PHPにコピーするともに,既に存在したssleay32.dllを最新版で上書き。さらに,php.iniのextensionでextension=php_curl.dllをアンコメントした。

追記2(4/5):
  #apache.org
   httpd-2.2.17-win32-x86-openssl-0.9.8o.msi (released 2010-10-19)
  #apache lounge
   httpd-2.2.17-win32-x86-ssl.zip Changelog 18 Oct ’10
 となっていて,apache.org版でPHP5.3.6はちゃんと動くようだ。
 http://www.phppro.jp/qa/3176 で,iroha_codeさん から情報をいただきました。iroha_codeさん,ありがとうございます。
  何事も,鵜呑みはいけないようですね。

追記3(4/6):
 kazenokakasiさんの情報 (http://sitifukuzin.com/blog/?p=16145) によれば,apache.org版では動かなかったようですね。
 うーん,情報が錯綜しているなぁ。サーバのアップデートというのはあまり試行錯誤してどうこうという種類のことじゃないので,Apache Loungeのzip版の上書きインストールが無難なのかもしれん。

追記4(2012/4/11):
 Apache導入についての新しい記事を,本家のお世話-#28。本家のお世話-#29。に書いた。