モダンなPHPの開発環境の構築方法
- via. はてなブログ
誰か書くんじゃないかと思いつつ、まあ、お決まりのパターンとしてPHP版も書いてみよう。
PHPのこと見てると、書き方とか取り巻く環境ってあんま変わってないなーとか思いつつ、そして何がモダンなんだっけ?新しければいいのか?って話だけど。
一般的な OSX 環境および Linux 環境における、モダンな PHP 開発環境の構築方法についてまとめてみた。最新のPHPとxdebugがあれば十分。
PHP 5.3.2 のインストール
ソースから入れてた時期もあるけどやっぱパッケージが楽だな。。オフィシャルじゃないリポジトリを使えばパッケージで入れられる。
pearとpeclは、パッケージ入れるときに一緒に入れちゃう。
pear や pecl そのものは、PHPよりも頻繁にバージョンアップされるし、パッケージになってたりなってなかったりの管理が面倒だから基本的にpear/peclコマンドで。
Mac OS X
Snow LeopardならデフォルトでPHP 5.3.1入ってる。が、Mac Portsから入れるのがいいならPortsから入れる(Perl は脱Portsの流れなの?)。最近はvariantsで入れるのではなくモジュールごとにパッケージが分けられるようになった。ばんざーい。でもpearコマンドやらpeclコマンドのために +pear は必要っていうね...
% sudo port install php5 +pear % sudo port install php5-mbstring
ports で入れたPHPを使うには、パスの調整が必要(以下は、OpenSolaris(!)、Mac(ports), Linux全般対応版)。
PATH=$HOME/bin:/usr/gnu/bin:/opt/local/bin:/usr/local/bin:$PATH:/sbin:/usr/sbin
Debian
squeeze ならデフォルトで PHP 5.3.3 が入る。
以下は、lenny の場合。dotdeb から PHP 5.3 むけのaptパッケージを入れる。
※2012/1/19追記: dotdeb の source URLが変更されています。mirror リストの中から Japan のものを使えば良いと思います。 http://www.dotdeb.org/mirrors/
% sudo vim /etc/apt/sources.list #末尾に以下の2行を追加 deb http://php53.dotdeb.org stable all deb-src http://php53.dotdeb.org stable all % sudo aptitude update % sudo aptitude install php5 php5-dev php-pear php5-mbstring
update の時点で、以下のようなエラーが出る場合があるが、
W: GPG error: http://php53.dotdeb.org stable Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY E9C74FEEA2098A6E W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれません
その場合は、以下のように対応(参考 Dotdeb packages are now signed! | Dotdeb)
% gpg --keyserver keys.gnupg.net --recv-key 89DF5277 % gpg -a --export 89DF5277 | sudo apt-key add -
CentOS
epelとremiを使えばyumで入る。remiはデフォルトでenabledにならないので、enabledにする。
% sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm % sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm % sudo vim /etc/yum.repos.d/remi.repo ### [remi] セクションで 0 を 1 に enabled=1 % sudo yum install php php-devel php-pear php-mbstring
xdebug
開発環境なら当然xdebugは入れる。
% sudo pecl install xdebug
最後にiniに extension=xdebug.so って書け、と出てくるが、正しくは zend_extension。php.ini には書かないで、Config File Scan Dir に xdebug.ini ってファイルを作成して、そこに書く。
- Mac OS X : /opt/local/var/db/php5/xdebug.ini
- Debian : /etc/php5/conf.d/xdebug.ini
- CentOS : /etc/php.d/xdebug.ini
に、
zend_extension=/path/to/xdebug.so
を記述。zend_extensionには絶対パスを書かなければいけないので、分からない場合は pear config-show の ext_dir を参考にすること。
deploy の手法
pearのディレクトリをまるごとrsyncでもいいな。peclは、アーキテクチャによって違うから個別にインストールしたほうが良い。
APC
開発環境には xdebug 必須だけど、本番環境にはやっぱAPCでしょ。PHP 5.3対応版はbeta。
% pecl install apc-beta
メモリなどの設定は、pear の doc_dir の doc/APC/INSTALL を参考。以下はdebianの場合のファイルの場合。
% sudo vim /etc/php5/conf.d/apc.ini extension=apc.so apc.enabled=1 apc.shm_segments=1 apc.shm_size=128M apc.ttl=7200 apc.user_ttl=7200 apc.num_files_hint=1024 apc.mmap_file_mask=/tmp/apc.XXXXXX apc.enable_cli=1
apc の管理画面は、pear の php_dir から apc.php をウェブでアクセス出来る場所にコピーして使う。
複数アプリケーションを開発していて、それぞれの依存モジュールがそれぞれことなる場合の運用
アプリケーション以下に lib/ などとディレクトリを作って、その中に pear コマンドなどでパッケージを入れる+ include_path を調整するのが良い(まあ、だいたいフレームワークがやってるよ)。
アプリケーションの中で include_path を調整するには以下。
<?php set_include_path('/path/to/lib' . PATH_SEPARATOR . get_include_path());
ちなみにシステムのpearディレクトリじゃなくて任意のディレクトリのpearのインストールをするには、 .pearrc を作れば良い。kayacさんのブログをご参考のこと。
使用するPHPのバージョンの選定
PHP 5.3.2 択一(2010/07/17現在)。
PHP 5.3.0のころから5.3は使っているけど、今はだいぶ安定してるし(nequalのサービスは全部PHP 5.3で動いてるよ)、やっぱ名前空間や無名関数使いたい。PHP 5.2.x 使ってた人が移行する場合は、特に注意すべきはE_DEPRECATED。それ以外はわりとすんなりいくとおもう。
PHP 4とか使ってる場合すぐさま今すぐ本当に今すぐとにかく今すぐJust Now、PHP 5にアップグレードするべきですね。
追記
これはこれでイイ!のだが、個人的には開発環境と本番環境は極力バージョンやパッケージも含め完全同一化するほうが後で悩まされなくてすむと思う。ということでいつも仮想化。
はてなブックマーク - Ryuzeeのブックマーク - 2010年7月18日
- 僕もいつも仮想化(ですが、それはまた別の話)。たぶん仮想化すべき、って話とこのエントリ自体は対立する話じゃなくて、仮想化した中での環境構築方法。本番と開発環境のバージョンは完全同一化すべきですね!モダンならね... 最新のPHP 5.3.2でね... (理想は)。