xampp1.7.3入れた。PHP、MySQL、CakePHPの設定

会社のWindowsXPがうんこになってしまったのは、まだ桜の花が舞い散る春のことだった。
半年も我慢できていた自分が信じられない。その間の作業効率は、今となっては考えたくもない。それほど無駄な時間を過ごしてきたと思う。


下らない前置きはどうでもいい。
xamppをhtdocsだけバックアップとって全部消してみたら、結構色々とカスタマイズしていたことに気付いたので元の環境に戻すのに少し苦労したという話をしたい。この手の話は前回も何度かエントリー書いてる気がするんだけど、もう一度おさらいで。
本日時点でのxampp最新版は1.7.3。パッケージ内容は以下の通り。

Apache 2.2.14 (IPv6 enabled), MySQL 5.1.41 + PBXT engine, PHP 5.3.1,
OpenSSL 0.9.8l, phpMyAdmin 3.2.4, XAMPP Control Panel 2.5.8, XAMPP CLI Bundle 1.6,
Webalizer 2.21-02, Mercury Mail Transport System v4.72, msmtp 1.4.19,
FileZilla FTP Server 0.9.33, SQLite 2.8.17, SQLite 3.6.20, ADOdb 5.10,
eAccelerator 0.9.6-rc1, Xdebug 2.0.6-dev, Ming 0.4.3.

インストール自体はすぐに済む。その後、ApacheMySQLをサービスに登録して起動させる。

ttp://localhost/
にアクセスすれば、Apacheが動いていることがわかる。
phpindo()リンクを踏めば、PHPも正常に動いていることを確認できる。


このあたりで大変なことに気付いた。MySQLのDBバックアップをとってなかったのだ。
アホか。ちんこか。いや、ちんこにすら値しない。ちんこのほうがいくらかマシだ。まだmigrationに手をつけていない自分は負け組だったのだ。
しかし開発が一段落したからOS再インストールしたというわけなので、最新のDB情報はすべてネット上にある。全部拾ってきて突っ込むことにしよう。


DBはとりあえず置いといて、PHPフレームワークを動かそう。
自分はPHPフレームワークとしてCakePHPを使っているんだけど、CakePHPをPHP5.3.xで動かそうとすると、
Assigning the return value of new by reference is deprecated
というエラーで世界は覆い尽くされる。これでは作業にならない。
回避方法としては
PHP Deprecated: Assigning the return value of new by reference is deprecated in ... | CakePHPWiki Users in Japan
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1993&forum=3
このようにしてやれば、世界は綺麗な姿を取り戻す。Hello, Cake!


ここで従順且つ優秀なプログラマPHPの開始タグはしっかり<?phpを使っているよね。
でもechoの時に

<?php echo $unnko ?>

って書くの面倒じゃないですか。
PHPの設定にshort_open_tagっていうオプションがあり、これがOnになっていれば以下のように書ける。

<?= $unnko ?>

記述量が減るし、なにより見た目スッキリする。viewのファイルを編集する時に、違いは一目瞭然だ。
だから自分はこのオプションをいじるために
xampp\php\php.ini
short_open_tag On
にして、Apacheを再起動させる。


ただし、この変更には注意が必要。
CakePHPのviewテンプレートも、確か最新版ではshort_open_tagはOffを前提に書かれている。
「short_open_tagは使うな」的風潮も、ネット上ではよく見かける。
xamppのphp.iniもデフォルトはOffになっている。


理由としては、以下のようなものがある。
php.ini ディレクティブ - コア php.ini ディレクティブに関する説明 | <?php pro
http://www.phppro.jp/phpmanual/php/ini.core.html
short_open_tag | PHPのテクメモ
http://php.tekmemo.net/?p=1204

個人的には、htmlヘッダは自動生成しているし、そこでxml定義を吐き出す部分だけの問題なので、short_open_tagはOnのほうが恩恵が大きい。
今後どうしても不都合を被るようなことがあれば直しますけどねヽ(`Д´)ノ
この記事を見た皆さんはshort_open_tag Offでやるといいと思います。


さて、次はWebアプリで使っているDBを元に戻す作業。
例によって、デフォがlatin1であるが故の文字化け問題が発生するので、
[MySQL] 文字化け問題を本気で直す | ヽ( ・∀・)ノくまくまー
http://wota.jp/ac/?date=20061011

上記のサイトを参考にxampp\mysql\bin\my.iniに

default-character-set=utf8
skip-character-set-client-handshake

[mysqld]と書いてある部分の末尾に追加して保存。
mysqlを再起動。


ステータスがutf-8になっていることを確認できればOK。
※あまり関係無いけどmysqlユーザを追加した時はFLUSH PRIVILEGESを忘れずに。


大きい変更は以上か。
あとphpのmemory_limitとかもいじると、重い処理も途中で諦めずに最後までタイムアウトしないでやってくれる。
詳しくは上で紹介した、php.ini ディレクティブのページを見ると色々載っているので参考に。


その他でやっておきたい点としては、windows環境変数Pathを通しておくことですかね。
xampp\php\
xampp\perl\bin\
を追加しておけばおk。

確認はプロンプトで

php -v
perl-v

でおk

追記:元々Skypeを使ってたりすると、デフォルトでwebのポート(80)を使ってたりするので、Skypeの設定で解除してやる必要があります。



尻窄みは生き様(キリッ