PHP
OSXELCapitan

Call to undefined function imagettftext() が解消しない時にはPHPのインストール先を疑う

PHPにモジュールを追加インストールしたい

OS X El Capitan には最初から入ってるPHPだとモジュールが少し足りない。ということで、brewで追加モジュールをインストールする。

例えば以下のQ&Aのように、brewでインストールしなさいとある。
http://stackoverflow.com/questions/26493762/yosemite-el-capitan-php-gd-mcrypt-installation

ところが、コマンドラインからPHPのCLI版を実行しても、imagettftext は見つからない。これって単独のモジュールじゃなくて、GDの中の機能の一部だから、GDのバージョンかなにかかと思って、他にも、足りないはずのmcryptもbrewから入れてみたが入らない。

おかしいなー、怖いな怖いなーと思って、iniファイル上の、extention=mcrpypt.so がコメントアウトでもされてるのかと思って、/etc/php.ini を見ても、.soがロードされている気配もなく、.dllのコメントばかり。

よくよく、brewのインストール後のコメントをみたら。

To finish installing mcrypt for PHP 5.5:
  * /usr/local/etc/php/5.5/conf.d/ext-mcrypt.ini was created,

??ちょっとまてと。そっか、/etc/配下ではなく、/usr/local配下のPHPに入ってる。じゃぁ、それってPHP自体も想定とは違うかも。

と思って探すと。/usr/bin/php と /usr/local/bin/php の両方に入っていました。デフォルトは、/usr/bin/php を参照しちゃうので、 /usr/local/bin/ を先に探すように、.bash_profileの最終行に以下を追加。

export PATH=/usr/local/bin:$PATH

これで、brewで入れたPHPがターミナルから参照されてめでたしめでたし。

brewがあまりに便利なので、うっかりOSXの標準機能のように思いがちだけど、デフォルトで入ってるPHPとは別のパスにbrewからはインストールされるのだから、そっちを参照しないと意味ないよねって話です。