拡張子でPHPのバージョンを変える
ここまでの段階で、PHP 4.4.9、PHP 5.2.6、PHP 6.0.0-devという3つのバージョンが、1つのApache上に組み込まれました。しかし、Windowsファイルと同じく、拡張子によって、どのアプリケーションに関連付けるかを指定しなければなりません。
ここでは簡易的にバージョンの違いを確認するため、バージョンごとに拡張子を変えてみます。
PHP 5.2.6 | .php |
PHP 4.4.9 | .php4 |
PHP 6.0.0-dev | .php6 |
拡張子の関連付けは、MIMEタイプと拡張子をペアにしてAddTypeディレクティブを使用して記述します。/opt/local/apache2/conf/httpd.confファイルを管理者権限で開き、以下の3行を記述します。
AddType application/x-httpd-php .php |
Apache設定ファイルの変更後にサービスを再起動します。
$ sudo /opt/local/apache2/bin/apachectl restart |
では、それぞれのバージョンでphpinfo()関数を出力してみましょう。Apacheのドキュメントルート「/opt/local/apache2/htdocs」直下に、以下の3つのファイルを作成し、ファイルの中に<?php phpinfo();?>とだけ記述します。
PHP 5.2.6 | /opt/local/apache2/htdocs/info.php |
PHP 4.4.9 | /opt/local/apache2/htdocs/info.php4 |
PHP 6.0.0-dev | /opt/local/apache2/htdocs/info.php6 |
<?php |
これをWebブラウザからアクセスします。以下の図1から3のように、拡張子ごとにバージョンが変わり、インストールしたバージョンの情報が表示されていれば成功です。
図1 PHP 5.2.6 |
図2 PHP 4.4.9 |
図3 PHP 6.0.0-dev |
ディレクトリごとにPHPのバージョンを変える
拡張子によってPHPのバージョンを変えるとなると、既存のプログラムを別のバージョンのPHPで実行したい場合に、いちいち拡張子を変えなければなりません。これはあまり現実的とはいえないので、拡張子は.phpで統一しつつ、ディレクトリごとに実行するPHPのバージョンを変えるようにしてみましょう。
今回はドキュメントルート以下にphp4、php5、php6というディレクトリを作り、それぞれのディレクトリ以下に保存した拡張子.phpのファイルは、ディレクトリに指定されたPHPのバージョンで実行されるようにします。
$ sudo mkdir /opt/local/apache2/htdocs/php4 |
このそれぞれのディレクトリに対し、拡張子.phpのMIMEタイプを変更します。
$ sudo vim /opt/local/apache2/conf/httpd.conf |
変更後にApacheを再起動します。
$ sudo /opt/local/apache2/bin/apachectl restart |
これにより、php4ディレクトリ以下の拡張子.phpファイルは、MIMEタイプ「application/x-httpd-php4」に関連付けられます。同様にphp5やphp6もそれぞれのバージョンのMIMEタイプに関連付けられます。以下の3つのファイルを用意し、phpinfo()の記述を比べてみましょう。
PHP 5.2.6 | /opt/local/apache2/htdocs/php5/info.php |
PHP 4.4.9 | /opt/local/apache2/htdocs/php4/info.php |
PHP 6.0.0-dev | /opt/local/apache2/htdocs/php6/info.php |
いずれも図1から3とまったく同じ結果が表示されます。拡張子を変えなくても、ディレクトリを変えるだけでPHPのバージョンを切り分けることができ、より現実的な環境といえます。物理的にディレクトリを分けなくても、ApacheのAliasディレクティブなどで仮想ディレクトリを作り、切り分けることも可能です。
バーチャルホストごとにPHPのバージョンを変える
バーチャルホストのドキュメントルートごとにPHPのバージョンを変更することもできます。ローカル環境に上のApacheでも名前ベースのバーチャルホストは構築できますので、好きな名前のローカルホスト名で実行バージョンを使い分けることができます。
例えば、以下のようにlocalhost4からlocalhost6を作成し、アクセスするホストによって実行バージョンを変えてみましょう。
PHP 5.2.6 | http://localhost5/ |
PHP 4.4.9 | http://localhost4/ |
PHP 6.0.0-dev | http://localhost6/ |
ローカル環境にバーチャルホストを構築する際には、そのホスト名の正引きができなければなりません。今回は開発環境なのでほかのPCからそのホスト名が使用できる必要性はないので、ローカル内の静的なルックアップテーブルに、ホスト名とIPアドレス(127.0.0.1)を記述しておけば問題ありません。
管理者権限で/etc/hostsファイルをエディタで開き、直接記述します。すでに127.0.0.1に対しlocalhostが割り当てられていますので、以下のようにホスト名を追加しましょう。
$ sudo vim /etc/hosts |
これで、ローカル内限定で正引きが行えるようになりました。Apacheの設定ファイルに以下のバーチャルホスト設定ディレクティブを記述します。
NameVirtualHost *:80 |
Apacheの再起動で完成です。Webブラウザから、「http://localhost4/info.php」「http://localhost5/info.php」「http://localhost6/info.php」の3つのアドレスを入力し、それぞれ違ったバージョンが表示されることを確認しましょう。あたかも複数のサーバが用意されているかのように見えますが、すべて1台のPC上の1つのWebサーバ上での環境なのです。
Webアプリケーションによってはドキュメントルートを丸ごと使用する場合もあり、ディレクトリごとの切り替えができない場合もあります。そのような場合にはローカル限定のバーチャルホスト環境を作るのが最善です。
前回と今回で、オールインワンかつフレキシブルな開発環境はひとまず完成です。次回は堪能編としてMac OS X上の開発環境ならではのライブラリやプログラム手法を解説します。
4/4 |
Index | |
Mac内にPHP4、5、6を同居させるコツ | |
Page1 ライブラリのインストール PHPのインストール、その前に |
|
Page2 PHP 5のインストール PHP 5の環境設定 |
|
Page3 PHP 4のインストールと環境設定 PHP 6のインストール |
|
Page4 拡張子でPHPのバージョンを変える ディレクトリごとにPHPのバージョンを変える バーチャルホストごとにPHPのバージョンを変える |
Mac OS X+PHPでオールインワン環境 |
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を紹介する。※ショートカットキー、アクセスキーの解説あり
|
|