|
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。
PHPも4.1.0からXSLTを正式サポートするようになりました。PHPマニュアルにもありますが、XSLTプロセッサであるSablotron、および、XMLパーサであるexpatの各ライブラリが必要となります。今回は、両ライブラリをソースからコンパイル・インストールしています。
1.expatのインストール
後述の「Apacheのインストール」にある理由のため、ExpatをApacheよりも先にインストールします。
Expatプロジェクトのサイト(http://sourceforge.net/projects/expat/)からソースを取得します。最新版は(2002/09/06現在)は、expat1.95.4です。ソースをダウンロード・展開後、expat-1.95.4ディレクトリに移動し、configure、make installすれば完了です。デフォルトでは、/usr/local/libにインストールされます。
$ tar zxf expat-1.95.4.tar.gz
$ cd expat-1.95.4/
$ ./configure
$ su -
# make install
2.Sablotronのインストール
Ginger Allianceのサイト(http://www.gingerall.com/charlie/ga/act/index.act)からソースを取得します。最新版は(2002/09/06現在)は、Sablotron 0.96です。Sablotron 0.96のソースをダウンロードし、ソースを展開します。
$ tar zxf Sablot-0.96.tar.gz
Sablotron 0.95を使用する場合、PHP用のパッチがありますので、それを適用する必要があります。
[2002/10/08] Red Hat Linux7.3でmake時に「parser.cpp :434:cannot convert `int' to `XML_Error' for argument `1' to `XML_ErrorString(XML_Error)'」なエラーが発生する場合には、Sablotron 0.96.1パッチを当てるとうまくいくようです。
[2004/07/14] インストールは問題なく実行でき、Apacheの起動時に「undefined symbol: __gxx_personality_v0」なエラーが発生する場合には、gingerall.orgから辿ることができるチュートリアルの「Now lets configure Apache so we have PHP as an Apache Module」にあるように、MakefileのEXTRA_LIBSに「-lstdc++」を追加して再buildすると良いようです。Apache2.0.50+PHP4.3.8+Sablot1.0.1(ソース)で確認しました。
expatと同様、configure、make installすれば完了です。デフォルトでは、/usr/local/libにインストールされます。
$ cd Sablot-0.96/
$ ./configure
$ su -
# make install
3.Apacheのインストール
Apacheのインストールのページを参照して、DSOをサポートするようインストールしてください。ただし、Apache付属のexpat(expat-lite)をインストールしないようにする必要があります。詳しくは、PHP本家のバグDBを参照してください。2002/09/06時点で最新のApache1.3.26では、Apacheのインストールページの手順でシステムのexpatを使用するようにconfigureされますので、特に意識する必要はないです。手動で行う場合は、configure時に「--disable-rule=EXPAT」を指定します。
4.PHPのソースを入手・展開
PHP本家のサイト(http://www.php.net/)からソースを取得します。最新版は(2002/09/06現在)は、PHP4.2.2です。php-4.2.2.tar.gzをダウンロード・展開後、php-4.2.2ディレクトリに移動します。GNU tarの場合、以下のコマンドです。
$ tar zxf php-4.2.2.tar.gz
$ cd php-4.2.2/
5.PHPのconfigure
ここで、XSLTサポートのオプションを付け、configureスクリプトを実行します。今回は、以下のオプションを付けましたが、その他のオプションはお好みにより付けて下さい。
- PHPをApache DSO版にする(*1)
- PHPでXSLT関数をサポートする(*2、必須です)
- マルチバイト文字列関数(mbstring)をサポートする(*3)
- マルチバイト正規表現関数(mbregex)をサポートする(*4)
- デフォルトで組み込まれるMySQLサポートを外す(*5)
具体的なコマンドは、以下のようになります(カッコ内の数字は、上記のオプションの説明に対応しています)。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs \ (*1)
--enable-xslt \ (*2)
--with-xslt-sablot \ (*2)
--enable-mbstring \ (*3)
--enable-mbstr-enc-trans \ (*3)
--enable-mbregex \ (*4)
--without-mysql (*5)
configure --help とすると、オプションの説明が表示されます。
PHP3/4を同居させるためには、PHP3、PHP4のconfigure時に「--enable-versioning」オプションを付け、それぞれmake・make installします。
configureに失敗した場合、コンソールの最後にメッセージが表示されるので、確認してみましょう。また、ログファイルconfig.logが作成されているはずですので、こちらも確認してみましょう。このファイルには、configureスクリプトの何行目辺りにある、どういった処理を行っている時にエラーとなったかが記されています。
6.コンパイルとインストール
configureが無事終了したら、makeを実行しコンパイルを行います。コンパイルが終了したらrootユーザーとなり、インストールを実行します。
$ make
$ su
# make install
インストール先は、[Apacheのインストール先]/libexec となります。ここにlibphp4.soが存在するかどうか、確認しましょう(これが実体です)。
configure終了後、suでrootユーザーになり、make installとしてもOKです。個人的には最近こちらの手順を使っています。
7.php.iniの設定
PHP4の設定ファイルであるphp.iniのコピー&設定を行います。php-4.2.2ディレクトリにphp.ini-recommendedファイルがありますので、/usr/local/lib/php.iniとしてコピーします。内容は必要に応じて適宜編集してください(^-^;
8.httpd.confの設定
[Apacheのインストール先]/conf/httpd.confを編集し、PHPを使用可能な状態にします。以下の赤字が編集した部分です。
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php(アンコメント)
AddType application/x-httpd-php-source .phps(必要であればアンコメント)
9.Apacheの起動と動作確認
[Apacheのインストール先]/bin/apachectlを使って、Apacheを起動します。PHP+Oracleのインストール手順で示しているような起動・停止スクリプトを別途作成している場合は、そちらを使って起動してください。
$ su -
# [apachectlへのパス]apachectl start
以下のようなPHPスクリプト・xml・xslファイルを用意し、XSLTプロセッサの動作テストを行います。なお、XMLのデータは、PHP日本語ページ(http://www.geocities.jp/rui_hirokawa/php/)のPHP関連書籍に記載されていたものです。
●xslttest.php
<?php
$xml_file = "test.xml";
$xsl_file = "test.xsl";
$xslt = xslt_create();
$data = xslt_process($xslt, $xml_file, $xsl_file);
xslt_free($xslt);
echo $data;
?>
●test.xml<?xml version="1.0" encoding="shift_jis"?>
<article>
<subject>PHP関連書籍</subject>
<book>
<title>PHP4徹底攻略</title>
<isbn>ISBN4-7973-1392-7</isbn>
</book>
<book>
<title>Dynamic Webサイト構築入門 PHP編</title>
<isbn>ISBN-4898142818</isbn>
</book>
<book>
<title>Oracle8iとPHPで作るWebデータベースfor Miracle Linux</title>
<isbn>ISBN4871938670</isbn>
</book>
<book>
<title>PHPパーフェクトリファレンス</title>
<isbn>ISBN-4894714027</isbn>
</book>
<book>
<title>ホンキで学ぼう!PHPのキホン―PHP4によるwebアプリケーション構築のはじめの一歩</title>
<isbn>ISBN4-7980-0119-8</isbn>
</book>
<book>
<title>PHP、PerlでつかうXML/XSL―Sablotronで実現するWEBサイト管理の効率化</title>
<isbn>ISBN4886486169</isbn>
</book>
<book>
<title>プロフェッショナルPHPプログラミング</title>
<isbn>ISBN4-8443-1483-1</isbn>
</book>
<book>
<title>PHP4でカンタンWebDB構築ガイド</title>
<isbn>ISBN4-7980-0082-5</isbn>
</book>
<book>
<title>PHPデスクトップリファレンス</title>
<isbn>ISBN4-8731-1034-3</isbn>
</book>
<book>
<title>PHP+RDBMS Webサーバーでのデータベース活用術</title>
<isbn>ISBN4871938050</isbn>
</book>
<book>
<title>MySQL & PHP Webデータベース入門</title>
<isbn>ISBN4-7973-1325-0</isbn>
</book>
<book>
<title>PHPプログラミング入門</title>
<isbn>ISBN4-89471-225-3</isbn>
</book>
<book>
<title>PHPによるWebデータベース構築</title>
<isbn>ISBN4-89471-255-5</isbn>
</book>
<book>
<title>オープンソースソフトウェアによる全文検索・データベースWebの作り方</title>
<isbn>ISBN4-88337-177-8</isbn>
</book>
<book>
<title>オープンソースでつくるグループウェア</title>
<isbn>ISBN4898140505</isbn>
</book>
<book>
<title>PC-UNIXによる高機能Web構築入門</title>
<isbn>ISBN4-7741-0758-1</isbn>
</book>
<book>
<title>Linux/FreeBSDによるSQLデータベース構築入門 PostgreSQL6.4.2+PHP3編</title>
<isbn>ISBN4-07-391360-3</isbn>
</book>
</article>
●test.xsl<?xml version="1.0" encoding="shift_jis"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="shift_jis" indent="yes"/>
<xsl:template match="/article">
<html>
<head><title><xsl:value-of select="subject"/></title></head>
<body>
<b><xsl:value-of select="subject"/></b>
<hr/>
<ul>
<xsl:apply-templates select="book"/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="book">
<li><b><xsl:value-of select="title"/></b> (<xsl:value-of select="isbn"/>)</li>
</xsl:template>
</xsl:stylesheet>
PHPスクリプトをブラウザからアクセスし、以下のように内容が表示されればOKです。
|