LeopardのPHP環境を拡張する準備
PHPの拡張モジュールの追加は、PHP本体と拡張モジュールを一緒に再コンパイルする方法と、独自にコンパイルした拡張モジュールを実行時に動的に組み込む方法があります。Mac OS Xの場合は、ソフトウェアアップデートによってPHPバイナリが上書きされる可能性がありますので、前者の方法でPHP本体には手を入れない方が賢明です。
そこで今回は後者の方法を用い、拡張モジュールをPHP本体から切り離したところにインストールし、実行時に組み込む方法を使用します。追加する拡張モジュールは比較的使用頻度の高いGD拡張です。
拡張モジュールを組み込む前には、あらかじめ2つの準備が必要です。1つは、拡張モジュールをコンパイルするために必要なautoconfやmakeなどのUNIX開発ツール群。もう1つは、拡張モジュールが必要とするライブラリ群です。
前者の開発ツール群は、Leopardのデフォルト環境には備わっていませんから、インストールDVDからX Code Toolsをインストールする必要があります。後者のライブラリ群は、必要となるものは拡張モジュールごとにさまざまに異なります。今回のGD拡張の場合はlibjpegとlibpngが必要となります。
では、最初に開発ツールをインストールしましょう。Mac OS X用の開発ツールは、LeopardインストールDVDからX code Toolsをインストールすることにより組み込まれます。ディスクを挿入し、マウントされると、画面1のようなイメージが表示されます。
この中の「Optional Installs」フォルダから「Xcode Tools」フォルダを開き、XcodeTooks.mpkgファイルを実行するとインストーラが表示されます。インストールウィザードでは特に設定項目や入力は必要ありませんので、画面に従ってインストールを完了させてください。
画面1 Mac OS X Install DVD |
次は、GD拡張に必要となるlibjpegとlibpngをインストールします。今回は、あらかじめMac OS X向けのバイナリが配布されていますので、以下のURLより「Combo Installer: libpng & libjpeg」をダウンロードします。
関連リンク: | |
ETHAN TIRA-THOMPSON (Mac OS X Ports libjpeg & libpng) http://ethan.tira-thompson.com/Mac%20OS%20X%20Ports.html |
ファイルはインストーラ形式となっていますので、ダウンロード完了後自動でインストーラが起動します。ライブラリのインストールプレフィックスは/usr/localとなっていますので、インストール完了後、/usr/local/libディレクトリ以下に「libjpeg〜」「libpng〜」といったファイルが作成されていれば成功です。
GD拡張モジュールのインストール
では、GD拡張モジュールをコンパイルしてみましょう。PHPのソースコードは、以下のURLから取得可能です。
関連リンク: | |
PHP Releases http://www.php.net/releases/ |
この中から、LeopardにインストールされたPHPと同じバージョンのものをダウンロードし、特定のフォルダに保存します。今回はバージョン5.2.4のtar.gz版をダウンロードし、~/Downloadsフォルダに保存します。保存後、ターミナルからアクセスし、ファイルを解凍します。
$ cd ~/Downloads |
ソースが展開されたら、その中のext/gdディレクトリへ移動します。
$ cd php-5.2.4/ext/gd |
今回のようにPHPの拡張モジュールを個別にコンパイルする際は、まずPHPヘルパープログラムのphpizeコマンドを実行します。以下のように引数なしで実行します。
$ phpize |
次に、libjpegとlibpngライブラリへのパスを指定し、configureスクリプトを実行します。パスはライブラリのインストールプレフィックスフォルダを指定します。
$ ./configure --with-jpeg-dir=/usr/local --with-png-dir=/usr/local |
最後にmake、make installを実行します。
$ make |
この状態ではGD拡張モジュールが「/usr/lib/php/extensions/no-debug-non-zts-20060613」ディレクトリに配置されただけですので、PHP実行時には組み込まれません。追加インストールした拡張モジュールを組み込むには、設定ファイルに拡張モジュールファイル名を指定します。
ただし、今回コンパイルしたGD拡張モジュールはコマンドライン版のPHPでは動的組み込みが失敗してしまいます。Apache2のモジュールロード時のみ組み込まれるよう、Apache2モジュール版PHP専用の設定ファイルに記述することにします。
通常、PHPの設定ファイルは/etc/php.iniですが、サーバAPIごとに設定ファイルを設けることが可能です。LeopardにインストールされているPHPのサーバAPIは、CLIとApache2 Handlerの2種類ですので、それぞれ、以下の3つの設定ファイルを用意すれば環境を切り分けることができます。
/etc/php-cli.ini | コマンドライン版PHP設定ファイル |
/etc/php-apache2handler.ini | Apache2モジュール版PHP設定ファイル |
/etc/php.ini | それ以外のSAPIの設定ファイル |
今回は既存の/etc/php.iniをコピーした/etc/php-apache2handler.iniを作成し、GD拡張モジュールを組み込むよう記述を追加します。
$ sudo cp /etc/php.ini /etc/php-apache2handler.ini |
Apache2モジュール版PHP設定ファイルをコピーして作成 |
(拡張モジュールのインストール先「extension_dir」の指定 [486行目前後]) |
/etc/php-apache2handler.ini |
設定ファイルを修正し、保存した後はWebサーバを再起動して完了です。
$ sudo apachectl restart |
それでは、試しにPHPスクリプトから画像を出力してみましょう。以下の簡単なサンプルコードを記述したファイルを「/Library/WebServer/Documents/」ディレクトリにファイル名「gdtest.php」として保存し、Webブラウザから「http://localhost/gdtest.php」へアクセスしてみましょう。
<?php |
このスクリプトはLeopardに付属するデスクトップピクチャのEarth.jpgとAurora.jpgを合成したものです。画面2のような画像が表示されていれば成功です。
画面2 GD関数でJPEG画像のマージ |
◆
今回はGD拡張モジュールをインストールしましたが、PHPのソースコードには、これ以外にもいくつか拡張モジュールが含まれています。また今回は紹介できませんでしたが、PECLと呼ばれるリポジトリではさらに多くの拡張モジュールが配布されており、依存するライブラリさえ手に入ればLeopard上でもコンパイルが通ります。
また、MacPortsやFinkを使用すれば比較的容易にライブラリ環境を構築できますので、PHP本体の新規インストールも難しくはないでしょう。腕に自信のある方はチャレンジしてみてはいかがでしょうか。
関連リンク: | |
PECL:: The PHP Extension Community Library http://pecl.php.net |
2/2 |
Index | |
Mac OS Xで動かす軽量プログラミング言語 | |
Page1 Webアプリ開発機としてのMac Leopardで動く軽量プログラミング言語は? PEAR環境のインストール LeopardのPHP環境を見る |
|
Page2 LeopardのPHP環境を拡張する準備 GD拡張モジュールのインストール |
Coding Edgeフォーラム トップページ |
Mac OS X関連記事 |
プログラマーを引き付けるMac OS Xの魅力 続々移行するそのワケとは Mac一筋という熱狂的なユーザーだけでなく、「面白いことをしたい」と考えるエンジニアもMac OS Xを利用し始めている。いったいなぜだろう |
|
Mac OS XでAMP構築 3通りの方法で整備できる開発環境 Mac OS Xの上にWebアプリケーションの定番、AMP(Apache+MySQL+PHP)環境を3通りの方法で導入してみましょう |
|
Mac OS Xで動かす軽量プログラミング言語 導入からPHP拡張モジュール組み込みまで Leopardでは、インストール直後からいくつかの軽量プログラミング言語が利用できます。早速試してみませんか? |
|
Objective-Cは特殊な言語? Cocoaの素、Objective-Cを知ろう(1) iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう |
|
Mac内にPHP4、5、6を同居させるコツ Mac OS X+PHPでオールインワン環境(インストール編) PHP4の開発は終了したが、移行の問題は残されている。異なるバージョンのPHPをスムーズに切り替えるには? |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|