タグ別アーカイブ: PHP

PHP5.3導入

Dreamhost上にPHP5.3を入れてみました。

インストールにはInstalling PHP5 – DreamHostを参考に、設定ファイルのパスをUbuntu風に変えてインストールしました。

具体的には、

--prefix=$HOME/local
--with-config-file-path=$HOME/local/etc/php5
--with-config-file-scan-dir=$HOME/local/etc/php5/conf.d

を追加/変更しました。

インストールしたPHP5.3は快適に動いています。

以前インストールしたPHP5.2ではWordPressの管理画面が最後まで送られずにページが切れるという不可解な現象があったのですが、それもなくなりました。

PHPのデバッグにはFirePHPが便利

FirePHP は Firebug に PHP から情報を出力できる Firefox アドオン + PHP ライブラリです。
他のログ出力系ライブラリと違う点は HTTP ヘッダを使って情報を送るということ。script タグを使ったりしないので複雑な構造のプログラムにも対応できます。

自分のテスト環境ではなぜか Xdebug のリモートデバッグが使えないのでデバッグができなかったんですが、これからは FirePHP が活躍しそうです。

DreamHostにカスタムPHPをインストールする

DreamHostにはPHPが元々入ってますが、PECLなどの拡張ライブラリが使用できません。
加えてバージョンが古いのです。そこでPHPを自分でコンパイルしてインストールしました。

参考にしたのは、Installing PHP5 – DreamHost

基本は上のページのスクリプトでインストールできるのですが、インストール場所を変えるためと依存パッケージを新しくするために書き直しました。
変更点は以下の通りで、

  • PHP 5.2.6
  • インストール先を $HOME/local に変更
  • php.iniの場所を ${HOME}/etc/php5 に変更
  • パッケージを最新のものに変更
  • パッケージのURLを修正

などです。

まず PHP5インストールスクリプト をダウンロードして中身を解凍し、php5-install.sh の中の INSTALLDIR などを好きなように設定します。
初期状態でインストールした場合は /home/*****/local/bin/php がPHPバイナリとなります。
php5-install.sh を実行し、問題が無ければPHPが指定した場所へインストールされます。
後はサイト毎のfcgiファイルでexecの部分を「exec /home/*****/local/bin/php-cgi」と指定すればFastCGIでカスタムPHPが動きます。
「php-cgi」が要で、CLI版を指定してしまうとFastCGIが動きません。

このあとPECLなどを使う場合はパスが通っている必要があるので .bash_profile などに「export PATH=$HOME/local/bin:$PATH」などと指定しておきます。

スクリプトが途中で止まる・・・などあったらコメント下さい。

php.iniのコメントを消す

今日はエイプリルフールですね。っていってもこの記事は嘘じゃありませんよ。

今日はphp.iniをいじっていたのですが、その時にコメントを削除すればPHPの読み込みが早くなるかも・・・?というような全く根拠のない思いにとらわれて、コメントを削除する正規表現を作ってみました。そしてできたのがコレ(Perlでやってます)。

perl -p -i -e 's/;.*\n/\n/;s/^\n//m;' /path/to/php.ini

これでコメントと空行が無くなります。

で、問題の速度は・・・・・・分かりませんw

C#の三項演算子

以前PHPの三項演算子について書きましたが、C#の場合のPHPでいう三項演算子は?:演算子というようです。項を3個取るもの全てを三項演算子として、その中の条件演算子という位置づけらしいです。

とはいっても演算子の使い方は変わらないので、PHPの三項演算子もC#の?:演算子も同じものです。

DreamHost移行メモ part3

今回はPHP5 FastCGI & PHP.ini のための設定です。WikiではCustom PHP.iniPHP FastCGIに分かれていますが一緒にやっちゃいます。もちろん、パネルでFastCGIをオンにしておきます。

最初にPHPのコピーを置くフォルダを作ります。WikiのCustom PHP.ini ではドメインのディレクトリの下に置いてますが、複数サイトで共有しようとおもうのでホームに作ります。

mkdir $HOME/cgi-bin

そして関連ファイルをコピーします。

cp /dh/cgi-system/php5.cgi $HOME/cgi-bin/php5.cgi
cp /etc/php5/cgi/php.ini $HOME/cgi-bin/php.ini

コピーした先のphp.iniを編集します。編集内容はお好みで。そして、ファイルの最後の方にでも「date.timezone=”Asia/Tokyo”」の記述を入れます。これでPHPがタイムゾーンを日本と認識してくれます。

ここからFastCGIの設定です。まずはFastCGIのラッパーを作ります。php5-wrapper.fcgiという名前でドメインのディレクトリごとに配置します。Wikiではdispatch.fcgiにするとメモリーを多く使ってもkillされなくなると書いてあります(このWordPessはphp5-wrapper.fcgiでもkillされません。よほどのことがないとkillされない模様。)。中身は以下のようにします。

#!/bin/sh
export PHP_FCGI_CHILDREN=2
exec /home/username/cgi-bin/php5.cgi

usernameは置き換えてください。作成したら実行権を与えます。

chmod u+x php5-wrapper.fcgi

そしてドメインのディレクトリのルートに以下の.htaccessを用意します。

AddHandler fastcgi-script fcg fcgi fpl
AddHandler php5-fastcgi .php
Action php5-fastcgi /php5-wrapper.fcgi

これでPHP5&FastCGIで動くようになります。

最後にPHPのバイナリをアップデートするcronを回します。適当な場所にphp-copy.shとでもして以下のファイルを作成します。

#!/bin/sh
CGIFILE="$HOME/cgi-bin/php5.cgi"
rsync -a /dh/cgi-system/php5.cgi "$CGIFILE"

あとは crontab -e で「@weekly /home/username/php-copy.sh」などとしておきます。

これでPHPに関する設定は完了です。次はWordPressの引越しをメモします。