blogですかい

株式会社Loco Partnersに勤めるエンジニアうちの一人のブログ。仕事、プライベートで学んだことなどを発信し、その内容がたとえ少数でも誰かの役に立ったらなら、それはとっても嬉しいなって

Mac OS X Lionにpecl aopをインストールする

pecl aopとは何ぞや
http://www.slideshare.net/hinakano/peclaop

自分のMacのPHPで試してみようと思いましたので、先ずはpeclのインストールから

[prompt]$ cd /usr/lib/php
[prompt]$ sudo php install-pear-nozlib.phar

No log handling enabled - using stderr logging
Created directory: /var/db/net-snmp
(中略)
Wrote PEAR system config file at: /private/etc/pear.conf
You may want to add: /usr/lib/php/pear to your php.ini include_path

以上でpear peclが使えるようになる

続いてpearpeclのアップデート

[prompt]$ sudo php /usr/lib/php/pear/pearcmd.php channel-update pear.php.net
Updating channel "pear.php.net"
Channel "pear.php.net" is up to date

[prompt]$ sudo php /usr/lib/php/pear/peclcmd.php channel-update pecl.php.net
Updating channel "pecl.php.net"
Channel "pecl.php.net" is up to date

[prompt]$ sudo php /usr/lib/php/pear/pearcmd.php upgrade-all
(中略)
upgrade-all ok: channel://pear.php.net/Archive_Tar-1.3.10
upgrade-all ok: channel://pear.php.net/Console_Getopt-1.3.1

以上でpeclのインストールはおk

ここからaopのインストール
現状、安定版が無いのでbetaを

[prompt]$ sudo php /usr/lib/php/pear/peclcmd.php install aop-beta
downloading AOP-0.2.2b1.tgz ...
Starting to download AOP-0.2.2b1.tgz (2,855,061 bytes)
(中略)
ERROR: `phpize' failed

phpize が無いと言われました。
phpizeを入れるために、autoconfをインストール

[prompt]$ sudo port install autoconf
--->  Computing dependencies for autoconf
--->  Dependencies to be installed: help2man p5.12-locale-gettext m4
(中略)
--->  Cleaning autoconf
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.

これでphpizeが入ったはずなので再チャレンジ

[prompt]$ sudo php /usr/lib/php/pear/peclcmd.php install aop-beta
downloading AOP-0.2.2b1.tgz ...
Starting to download AOP-0.2.2b1.tgz (2,855,061 bytes)
(中略)
 cc -I. -I/private/tmp/pear/temp/AOP -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-rootrtXWNk/AOP-0.2.2b1/include -I/private/tmp/pear/temp/pear-build-rootrtXWNk/AOP-0.2.2b1/main -I/private/tmp/pear/temp/AOP -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /private/tmp/pear/temp/AOP/aop.c  -fno-common -DPIC -o .libs/aop.o
In file included from /private/tmp/pear/temp/AOP/aop.c:24:
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found
#include "pcre.h"
         ^
1 error generated.
make: *** [aop.lo] Error 1
ERROR: `make' failed

pcre.hが無いと言うので、MacPortsでpcreをインストール

[prompt]$ sudo port install pcre
--->  Computing dependencies for pcre
(中略)
--->  Cleaning pcre
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.

pcre inside どや?

[prompt]$ sudo php /usr/lib/php/pear/peclcmd.php install aop-beta
downloading AOP-0.2.2b1.tgz ...
Starting to download AOP-0.2.2b1.tgz (2,855,061 bytes)
(中略)
 cc -I. -I/private/tmp/pear/temp/AOP -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-rootGr7VPd/AOP-0.2.2b1/include -I/private/tmp/pear/temp/pear-build-rootGr7VPd/AOP-0.2.2b1/main -I/private/tmp/pear/temp/AOP -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /private/tmp/pear/temp/AOP/aop.c  -fno-common -DPIC -o .libs/aop.o
In file included from /private/tmp/pear/temp/AOP/aop.c:24:
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found
#include "pcre.h"
         ^
1 error generated.
make: *** [aop.lo] Error 1
ERROR: `make' failed

が・・・・だめ・・・・
pcre.hにパスが通ってないのね・・・
パスの通ってそうな場所にコピーして、N度目の正直チャレンジ

[prompt]$sudo cp /opt/local/include/pcre.h /usr/local/include/

[Prompt]$ sudo pecl install aop-beta
downloading AOP-0.2.2b1.tgz ...
Starting to download AOP-0.2.2b1.tgz (2,855,061 bytes)
(中略)
4 source files, building
(中略)
Build complete.
Don't forget to run 'make test'.
(中略)
Build process completed successfully
Installing '/usr/lib/php/extensions/no-debug-non-zts-20090626/aop.so'
install ok: channel://pecl.php.net/AOP-0.2.2b1
configuration option "php_ini" is not set to php.ini location
You should add "extension=aop.so" to php.ini

ようやくビルドできました
続いてphp.iniの編集

[prompt]$ php --ini
Loaded Configuration File: /private/etc/php.ini

[prompt]$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
[prompt]$ sudo chmod u+w /private/etc/php.ini
[prompt]$ sudo echo extension=aop.so >> /private/etc/php.ini
[prompt]$ php -i

/private/etc/php.ini を編集すれば良い模様。
ただ、そのファイルが無かったのでデフォルトからコピーして作成した。
/private/etc/php.ini.defaultをコピーすると -r--r--r--で作成されるので、
chmodして-rw-r--r--にする。
aopをロードする一文を追加し、最後に php -i でaopが使用可であることを確認

以上でpecl aopが使用できるようになりました。