PHP は、Apache モジュールや、CGI として動作するスクリプト言語です。PHP は、HTML ファイルに記述するが可能で、Web アプリケージョンの開発などによく使われるようになってきました。また、データベース関係の関数も多く、データベースとの連携も間単に行えます。
ここでは、Apache と併せて、ソースからインストールを行います。RPM の PHP や Apache をインストールしている場合はまず、アンインストールしておかないと不具合が出る可能性が高いため、注意してください。また、Apache の DSO を利用して PHP を組み込むように設定します。
このメモは、RedHat Linux や、Gentoo Linux、Cygwin 環境などで作成しました。FreeBSD など、他の Unix 系の OS の場合、個々の OS による違いはあるかもしれませんが、同じようにインストールできると思います。何か問題や、間違いなどがありましたら、メールで指摘をお願いします。
PHP 4.x のインストールメモ 目次
Apache は、世界的にも広く使用されている Web サーバです。The Apache HTTP Server Project から入手することができます。
古いバージョンの Apache にはセキュリティホールが報告されていることがありますので、基本的には、最新版を使用するようにしてください。2006.01.04 時点での最新版は、Apache 1.3.34 と Apache 2.2.0 です。Apache 2.x では、MPM マルチスレッドモードで使用することは推奨されていません(PHP マニュアル: Unix システムへのインストール - Apache 2.0 (Unixシステム用))。安定した運用を行う場合は prefork MPM か、Apache 1.3.x の最新版を利用することをお勧めします。
ここでは、動的モジュールとして PHP が使用できるように Apache の configure
オプションに --enable-module=so
を入れてコンパイルします。その他のオプションについては必要に応じて追加してください。
$ tar zxvf apache_1.3.34.tar.gz $ cd apache_1.3.34 $ ./configure --enable-module=so $ make $ sudo make install
PHP は http://php.net/ で入手できます。
初めて PHP をインストールする場合は、PHP 4.4.1(2005.10.31 公開)や、PHP 5.1.1(2005.11.28 公開)以降の最新のバージョンを利用してください。また、セキュリティホールなどが見つかり、使用しているバージョンの PHP が影響を受ける可能性がある場合は、バージョンアップした時に問題が出ないかどうかを確認してから、最新版にバージョンアップしてください。
ただし、PHP 4.4.1 はマルチバイト文字列を扱う mbstring にいくつかバグがあり、mb_send_mail()
を使用すると件名が文字化けする問題が報告されています。バグの影響を受ける場合は、PHP-QAT でテスト用に PHP 4.4.2RC1 が公開されていますので、こちらを使用することを検討した方が良いと思います。
PHP の configure
オプションは非常に多いです。オプションについては、./configure
で確認してから、必要なものを指定してください。--help
--with-pgsql
オプションは PostgreSQL をインストールしていない場合、エラーになります。このオプションを使用する場合は、先に PostgreSQL のインストールを行ってください。ここでは、MySQL は使用しないため、--without-mysql
を入れています。PHP 4.x で MySQL を使用する場合は --without-mysql
を入れないでください。PHP 4.x で --without-mysql
を入れない場合は、自動的に MySQL モジュールがインストールされます。PHP 5.x では、自動的には MySQL モジュールはインストールされませんので、必要なオプションを指定してください。
参考までに、Apache 2.x を使用する場合は、--with-apxs2=/usr/local/apache2/bin/apxs
のように、--with-apxs2
を使用して、Apache の apxs
がインストールされている場所を指定します。
インストールは、以下のように行います。ここでは、PHP 4.4.1 を使用していますが、PHP 4.3.x や PHP 5.x でも、オプションに気を付ければ同様にインストールできます。PHP 4.1.x や、PHP 4.0.x をインストールする必要がある場合は、PHP 4.1.2 とマルチバイト正規表現モジュールのインストール を参考にしてください。
$ tar jxvf php-4.4.1.tar.bz2 $ cd php-4.4.1 $ ./configure \ --with-apxs=/usr/local/apache/bin/apxs \ --enable-mbstring \ --with-libmbfl \ --enable-pcntl \ --with-zlib \ --with-openssl \ --with-pgsql=/usr/local/pgsql \ --without-mysql $ make $ sudo make install
インストール終了後、PHP の設定ファイル php.ini を /usr/local/lib/ にコピーします。サンプルとして、以前の PHP との互換性を重視した php.ini-dist と、パフォーマンスとセキュリティを重視した php.ini-recommended がインストールしたソースのディレクトリに含まれています。
特に、既にある PHP スクリプトを利用するという理由でもない限り、php.ini-recommended をコピーすることをお勧めします。特に、公開サーバでは、php.ini-recommended から必要な設定を変更して使用すると良いと思います。
$ sudo cp php.ini-recommended /usr/local/lib/php.ini
php.ini-recommended の設定については、英語でコメントがありますが、和訳してくださった方がおられます。少し古いので、最新のバージョンとは少し違いがありますが、こちらも参考になると思います。http://www.net-newbie.com/postgres/php.ini-recommended.txt
まず、セキュリティに関係する設定を行っておくことをお勧めします。
php.ini-recommended をインストールした場合は、以下の設定が全て Off
に設定しておくことをお勧めします。allow_url_fopen
については、PHP で外部のサーバに接続することを前提としたスクリプトを書く必要がなければ Off
にしておく方が良いと思います。
[PHP] ; 特殊な変数(GET/POST/Cookie/サーバ変数/環境変数など)をグローバル変数に登録する register_globals = Off ; GET/POST/Cookie を自動的にエスケープする magic_quotes_gpc = Off ; ファイルを開く関数で http://... などの URI でも開くようにするかを設定 allow_url_fopen = Off ; PHP を使用していることを知らせる(HTTP レスポンスヘッダに X-Powered-By: PHP/(version) が表示される) expose_php = Off
次に、display_errors
と error_reporting
を設定します。
display_errors
は PHP スクリプトでエラーが発生した場合にブラウザに表示するかどうかを設定するフラグで、error_reporting
はエラーの報告レベルを指定します。
display_errors
については、PHP スクリプトを開発するサーバでは、On
にしておいた方が便利ですが、外部公開しているサーバでエラーが表示されてしまうのはあまり好ましくありません。外部公開するサーバでは、Off
にしておく方が安全です。
error_reporting
は、開発中であれば、必ず E_ALL
に設定して、エラーが発生しないように開発を行ってください。公開サーバでは、エラーログの状況に応じて変更しても良いと思いますが、E_ALL
にしておき、エラーが発生していないかを確認した方が安全です。
; エラー報告レベル error_reporting = E_ALL ; エラーが発生した場合にブラウザに表示する [外部公開サーバ: Off, 開発サーバ: On] display_errors = Off
外部公開サーバでは、以下の設定を行って、Apache ログへの出力を行うか、指定したファイルへのエラーログの記録を行うことで、エラーの発生状況を把握してください。
; エラーログを記録する log_errors = On ; エラーログの保存場所(syslog/エラーログファイル Path/指定しない: 指定しない場合は Apache のエラーログファイル) ; error_log = syslog
後は、日本語などのマルチバイトを扱う場合、インストール後に php.ini を編集する必要があります。
まずは、以下のように、mbstring ディレクティブの設定を行っておけば良いと思います。mbstring.internal_encoding
については、PHP スクリプトの文字コードを UTF-8 で書く場合は以下のように指定します。
[mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8
他にも多くの設定があります。セーフモード設定(open_basedir
, disable_functions
, ...)や、セッション関連の設定(session.use_only_cookies
, session.use_trans_sid
, ...)などがありますので、外部公開サーバの場合はできる限り安全な設定にしておく必要があると思います。
詳しくは PHP マニュアル: コア php.ini ディレクティブに関する説明を参照してください。
Apache のバージョンや、インストール方法によっては、httpd.conf の初期設定の Port が 8080 になっている可能性があります。その場合は、ブラウザから表示しようとしても Port 番号を指定しないとアクセスできません。httpd.conf を編集して、Port 80
を指定します。最初から 80 になっている場合は変更する必要はありません。
$ sudo vi /usr/local/apache/conf/httpd.conf
Port 80
PHP を使用するには、PHP モジュールが読み込まれているかどうかを確認します。以下の LoadModule
行があるかどうかを確認します。PHP インストール時に自動的に追加されますので、もし、なければ PHP のインストールに失敗した可能性があります。
LoadModule php4_module libexec/libphp4.so
上の行が追加されていない場合は、/usr/local/apache/libexec/ に libphp4.so があるかどうかを確認してください。あれば、上の行を追加すれば問題ありません。ない場合は、インストールに失敗しています。再度 PHP のインストールをやり直してください。
また、拡張子と PHP のスクリプトを関連付けているディレクティブで、.php ファイルが関連付けられているかどうかを確認します。以下の AddType
から始まる 2行がなければ、追加してください。もし、コメントアウトされている場合はコメントアウトを外して有効にしてください。
<IfModule mod_mime.c> ... AddType application/x-httpd-php .php ... </IfModule>
以下のディレクティブで、ディレクトリが指定された場合に読み込まれるファイルが指定できます。index.html がない場合は index.php を読み込むように設定する場合は以下のようにします。
<IfModule mod_dir.c> DirectoryIndex index.html index.php </IfModule>
index.html があっても、先に index.php を読み込ませたい場合は、index.php を前に記述してください。
最後に、apachectl
の引数に configtest
を付けて実行し、httpd.conf の記述に間違いがないか確認します。
$ sudo /usr/local/apache/bin/apachectl configtest
問題がない場合は apachectl
で起動します。start
$ sudo /usr/local/apache/bin/apachectl start
最後に、Apache の Document Root ( デフォルトでは、/usr/local/apache/htdocs/ ) に phpinfo.php というファイルを作成し、以下の内容を記述します。
<?php phpinfo(); ?>
このファイルを Web ブラウザで読み込んで、PHP の環境などの情報が出力されれば、PHP のインストールは成功です。
Cygwin で提供されている mod_php4 はバージョンが 4.2.0 と少し古いので、現在(2004.01.04)で最新の PHP 4.3.4 で、mod_php4 を作成することに挑戦しました。その時のメモを残しておきます。
Cygwin では、PHP の関数の一部が正常に動かないなど、実際に運用するのは危険ですが、Windows 上で、Unix 系のディレクトリ構成と同じにできますので、ローカルテストの環境としては、非常に便利です。
PHP 4.3.5 RC1 でもインストールが成功したという情報が PHP-users メーリングリストに投稿されていましたので、そちらも参考になると思います([PHP-users 19982]Cygwin環境でのPHP4.3.5RC1とpearコマンド)。
(2004.01.25 追記)
Cygwin で pear コマンドを使用する を追加しました。
(2004.02.08 追記)
libphp4.dll の作成に失敗する場合についてを追加しました。PHP のコンパイルを始める前に読んでください。
(2004.07.30 追記)
現在、PHP 4.3.8 が公開されていますが、PHP 4.3.4 と同じように Cygwin で Patch の適用、コンパイルが可能であることを確認しています。また、libphp4.dll の作成に失敗する場合に追記しました。
(2004.11.14 追記)
現時点の最新バージョンである、Apache 1.3.33 と PHP 4.3.9 で確認を行いました。また、Apache のインストール方法について追記しました。
(2004.11.14 修正、追記)
The Apache HTTP Server Project から Apache 1.3.33 をダウンロードして、展開します。
$ tar apache_1.3.33.tar.gz $ cd apache_1.3.33
Apache のインストールスクリプトを使用した場合、インストール時にいくつかの実行ファイルのコピーに失敗しますが、Makefile を書き換え、Cygwin の fileutils パッケージに含まれる install
を使用すると、エラーが発生せず、正常にインストールに成功します。
以下の行を修正します。Apache 1.3.33 の Makefile では、45 行目にありました。
INSTALL = $(TOP)/$(AUX)/install.sh -c
以下のように修正します。
INSTALL = /usr/bin/install
次に、コンパイル、インストールを行います。
$ ./configure --with-port=80 --enable-module=so $ make $ make install
上述のように、Makefile を書き換えた場合は、エラーは発生しませんので、以下のようにコピーを行う必要はありません。
通常では、
make
を実行した時にいろいろとエラーが表示され、いくつかの実行ファイルがインストールされません。インストールされていない httpd.exe などのファイルを Apache のインストールディレクトリにコピーします。install
$ cp src/httpd.exe /usr/local/apache/bin/ $ cp src/support/*.exe /usr/local/apache/bin/
httpd.conf を編集して、User
や Group
、ServerName
などの設定を行います。必要であれば、Apache の専用ユーザの追加や、グループの追加なども行ってください。User
を現在のユーザ名に変更すれば、Apahce の起動は可能です。
$ vi /usr/local/apache/conf/httpd.conf
設定が終了したら、Apache を起動します。
$ PATH=/usr/local/apache/libexec:$PATH /usr/local/apache/bin/apachectl start
/usr/local/apache/libexec に PATH が通っていないとエラーになります。Apache を起動する時に、毎回 PATH を入力するのが面倒な場合は、/usr/local/apache/bin/apachectl を編集して、最初の部分に以下の行を追加してください。
PATH=/usr/local/apache/libexec:$PATH
または、Apache を起動するユーザの環境設定ファイル(~/.bashrc や ~/.bash_profile など)に、以下の行を追加しても良いと思います。
export PATH=$PATH:/usr/local/apache/libexec
Apache が起動したら、ブラウザで、http://localhost/
を開いて、Apache のサンプルページが表示されるかどうかを確認してください。確認したら、Apache を終了させておきます。
$ /usr/local/apache/bin/apachectl stop
(2004.02.08 追記)
libphp4.dll の作成に失敗する場合についてを追加しました。PHP のコンパイルを始める前に読んでください。
Apache の共有モジュールとして動作する mod_php4 を作成します。まず、PHP Hypertext Preprocessor から、ソースをダウンロードします。現在(2004.01.04)の最新版は PHP 4.3.4 です。PATH
を設定し、ソースを展開して、configure
を実行します。configure
オプションについては、他に必要なものがあれば、付け足してください。
$ export PATH=/usr/local/apache/libexec:$PATH $ tar jxvf php-4.3.9.tar.bz2 $ cd php-4.3.9 $ ./configure --with-apxs=/usr/local/apache/bin/apxs --without-mysql --enable-mbstring
configure
オプションに問題がなければ、Makefile が作成されますので、少し編集します。
$ vi Makefile
ここで、Makefile にある、libphp4.so という記述を、libphp4.dll に置き換えてください。vi
で :%s/libphp4\.so/libphp4.dll/g
を実行すると簡単です。または、sed
を使用して置き換える方法もあります。
$ sed -i 's/libphp4\.so/libphp4.dll/g' Makefile
make
を実行します。
$ make
コンパイル中に warning などが出て、libphp4.dll の作成に失敗しますが、以下のように実行することで、libphp4.dll が作成できます。この方法については、Cygwin の mod_php4 のソースである、apache-php-4.2.0-2-src.tar.bz2 に含まれていた、CYGWIN-PATCHES/mkdll.sh を参考にしました。また、Cygwin ユーザーズガイドに、DLL のビルドと利用 という Cygwin 上で DLL を作成する際に非常に参考になるページがありましたので、詳しく知りたい場合はそちらを参照してください。
$ cd libs $ gcc -shared -o libphp4.dll -Wl,--out-implib=libphp4.dll.a -Wl,--export-all-symbols \ -Wl,--whole-archive libphp4.a /usr/local/apache/libexec/libhttpd.dll -Wl,--no-whole-archive -lcrypt
この部分でエラーが出て libphp4.dll の作成に失敗した場合、gcc
のオプションに -lresolv
を追加して再度コマンドを実行してみてください。詳しくは、libphp4.dll の作成に失敗する場合を参照してください。
以上が終了したら、libphp4.dll が作成されます。次に、インストール、設定ファイルのコピー、設定ファイルの編集などを行います。
$ cd ../ $ make install $ cp php.ini-recommended /usr/local/lib/php.ini $ vi /usr/local/lib/php.ini $ vi /usr/local/apache/conf/httpd.conf
必要な設定を追加、編集してください。httpd.conf には、以下の行があることを確認してください。
LoadModule php4_module libexec/libphp4.dll
PHP スクリプトを実行するためには、以下の設定も追加する必要があります。拡張子が phps の場合はソースを表示するように設定していますが、ソース表示が不要であれば、phps の設定は外しても良いと思います。
# ファイル名を省略した場合、読み込むファイルに index.php を追加します。 <IfModule mod_dir.c> DirectoryIndex index.html index.php </IfModule> # 拡張子が php の場合に php スクリプトを実行するように設定します。 # AddType application/x-tar .tgz の記述の下くらいに追加すると良いと思います。 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
設定が終了したら、Apache を起動し、テストスクリプトを実行してみます。
$ /usr/local/apache/bin/apachectl start
以下の PHP スクリプトを Apache の Document Root(設定を変更していない場合は、/usr/local/apache/htdocs/) に、phpinfo.php として設置します。
<?php phpinfo(); ?>
ブラウザで、http://localhost/phpinfo.php
を開きます。PHP のバージョン、設定情報のページが表示されれば、インストールは成功です。
PHP には、pear
コマンドによって、クラスライブラリをインストールする方法が提供されていますが、Cygwin に PHP をインストールした状態では以下のようなエラーが表示され、使用できませんでした。
$ pear list could not acquire unlock lock (/usr/local/lib/php/.lock)
Cygwin の場合は、他の OS と flock
の挙動が少し違うようです。対処方法として、/usr/local/lib/php/PEAR/Registry.php の 290 行目付近で、
$this->lock_fp = @fopen($this->lockfile, $open_mode);
となっている部分を、
if (!is_resource($this->lock_fp)) { $this->lock_fp = @fopen($this->lockfile, $open_mode); }
のように変更することで、Cygwin でも pear
コマンドが使用できるようになりました。
$ pear list INSTALLED PACKAGES: =================== PACKAGE VERSION STATE Archive_Tar 1.1 stable ...省略... XML_Parser 1.0.1 stable XML_RPC 1.0.4 stable
PHP のコンパイルが終了した時に、テストする方法として、make test
を実行することができるのですが、残念ながら、Cygwin では、set_time_limit()
がうまく実行できないため、make test
が途中で止まってしまいます。
テスト環境として、set_time_limit()
が実行できないのは不便ですので、それを解消する Patch を作成してみました。Cygwin では、C 言語の setitimer()
関数では、ITIMER_REAL
のみ実装されているという情報がありましたので、setitimer()
で登録する引数を ITIMER_REAL
に、signal()
の引数を SIGALRM
に変更してみました。とりあえず、PHP では、プロセス制御関数を有効にしてコンパイルした場合は影響がありそうですが、Cygwin でプロセス制御関数を使用しない限りはおそらく問題はないと思います。
set_time_limit()
が使用できないことが不都合である場合は、下の Patch を適用してから、make
を実行してください。
ファイルとしても置いておきます。cygwin_zend_execute_API.c.patch をダウンロードしてください。
--- zend_execute_API.c.orig 2003-08-05 02:14:16.000000000 +0900 +++ zend_execute_API.c 2003-12-31 23:37:46.767337600 +0900 @@ -851,10 +851,10 @@ t_r.it_value.tv_sec = seconds; t_r.it_value.tv_usec = t_r.it_interval.tv_sec = t_r.it_interval.tv_usec = 0; - setitimer(ITIMER_PROF, &t_r, NULL); - signal(SIGPROF, zend_timeout); + setitimer(ITIMER_REAL, &t_r, NULL); + signal(SIGALRM, zend_timeout); sigemptyset(&sigset); - sigaddset(&sigset, SIGPROF); + sigaddset(&sigset, SIGALRM); sigprocmask(SIG_UNBLOCK, &sigset, NULL); } # endif @@ -873,7 +873,7 @@ no_timeout.it_value.tv_sec = no_timeout.it_value.tv_usec = no_timeout.it_interval.tv_sec = no_timeout.it_interval.tv_usec = 0; - setitimer(ITIMER_PROF, &no_timeout, NULL); + setitimer(ITIMER_REAL, &no_timeout, NULL); } # endif #endif
make
を実行する前に、Zend ディレクトリに入り、Patch を適用してください。Cygwin で patchutils
をインストールしていない場合は、patch
コマンドがありませんので、その場合は、Devel/patchutils
パッケージをインストールしてください。
例えば、以下のようにして適用して、コンパイル、テストを行うことができます。
$ wget http://www.asahi-net.or.jp/%7Ewv7y-kmr/data/cygwin_zend_execute_API.c.patch $ cd php-4.3.4/Zend $ patch < ../../cygwin_zend_execute_API.c.patch $ cd ../ $ ./configure --with-apxs=/usr/local/apache/bin/apxs --without-mysql --enable-mbstring $ vi Makefile $ make $ make test
make test
が終了して、結果が表示されれば成功です。あとは、libphp4.dll を作成して、インストールを行ってください。
2004.02.08 時点では、Cygwin の Libs/minires-devel がインストールされている場合、libphp4.dll の作成時に以下のようなエラーが出力されて、libphp4.dll の作成に失敗するようです。
$ gcc -shared -o libphp4.dll -Wl,--out-implib=libphp4.dll.a -Wl,--export-all-symbols \ -Wl,--whole-archive libphp4.a /usr/local/apache/libexec/libhttpd.dll -Wl,--no-whole-archive -lcrypt Creating library file: libphp4.dll.a libphp4.a(dns.o)(.text+0x53a): In function `zif_checkdnsrr': /usr/local/src/php-4.3.4/ext/standard/dns.c:256: undefined reference to `___res_search' libphp4.a(dns.o)(.text+0x8e4): In function `zif_getmxrr': /usr/local/src/php-4.3.4/ext/standard/dns.c:317: undefined reference to `___res_search' libphp4.a(dns.o)(.text+0x928):/usr/local/src/php-4.3.4/ext/standard/dns.c:328: undefined reference to `___dn_skipname' libphp4.a(dns.o)(.text+0x96b):/usr/local/src/php-4.3.4/ext/standard/dns.c:334: undefined reference to `___dn_skipname' libphp4.a(dns.o)(.text+0x9e1):/usr/local/src/php-4.3.4/ext/standard/dns.c:346: undefined reference to `___dn_expand'
Cygwin をインストールするときに、全てのパッケージをインストールしたり、Libs/minires-develをインストールしている場合は、PHP のコンパイル時にはアンインストールしておくと libphp4.dll の作成に成功するようです。または、下の追記に書きましたが、コンパイルオプションに -lresolv
を追加する方法があるようです。
(2004.07.30 追記)
Cygwin使っている人いますか? その12 [313-315](2ch) によると上のエラーが発生した場合、以下のように -lresolv
を追加してコンパイルを行うと libphp4.dll の作成に成功するようです。
$ gcc -shared -o libphp4.dll -Wl,--out-implib=libphp4.dll.a -Wl,--export-all-symbols \ -Wl,--whole-archive libphp4.a /usr/local/apache/libexec/libhttpd.dll -Wl,--no-whole-archive -lcrypt -lresolv
PHP 4.0.6 以降では、国際化モジュールの mbstring
が含まれるようになりましたので、それ以前のように、jstring
モジュールを組み込む必要はありません。
PHP 4.2.0 以降では、マルチバイト正規表現モジュールも含まれるようになりましたが、PHP 4.1.x を使用する場合は、マルチバイト正規表現もジュールは含まれませんので、必要であれば、以下のようにしてコンパイルできます。ただし、buildconf
を使用する時に、automake
, autoconf
, libtool
が必要となります。
PHP 4.1.2 は、http://museum.php.net/php4/ から、マルチバイト正規表現モジュール php4_mbregex は、ftp://night.fminn.nagano.nagano.jp/php4/ から、最新バージョンをダウンロードできます。
2003.03.16 時点では、ftp://night.fminn.nagano.nagano.jp/ には接続できないようです。PHP 4.1.x でマルチバイト正規表現を使用する必要がある場合には、他の手段(雑誌や、持っている人にアップロードしてもらうなど)によって、このマルチバイトモジュールを取得するしか方法がありません。
特に PHP 4.1.x である必要がない場合は、最新版のマルチバイト関数が含まれているバージョンをを使用する方が良いと思います。
コンパイル、インストールは以下のように行います。
$ tar zxvf php-4.1.2.tar.gz $ cp php4_mbregex-1.3.1.tar.gz php-4.1.2/ext/ $ cd php-4.1.2/ext $ tar zxvf php4_mbregex-1.3.1.tar.gz $ cd .. $ rm configure $ ./buildconf $ ./configure \ --with-apxs=/usr/local/apache/bin/apxs \ --without-mysql \ --with-pgsql=/usr/local/pgsql \ --enable-mbstring \ --enable-mbregex $ make $ sudo meke install
マルチバイト正規表現を使用する際の文字コードを設定します。/usr/local/lib/php.ini に文字コードの設定を追加してください。ソースの文字コードと合わせておく必要があります。
[mbregex] mbregex.encoding = EUC-JP
PDFLib 5.0.0 以降を使用する場合は、過去ログの PHP 4.3.2 で PDFLib を有効にしてコンパイルを参考にしてください。
PDFlib は、Adobe 社が開発した PDF (Portable Document Format)ファイルを作成するためのライブラリです。PDFlib を使用することで、PHP からでも、PDF ファイルを作成することができます。
非商用の場合は特に問題ありませんが、商用利用の場合は商用ライセンスが必要のようです。詳しくは、PDFlib に含まれているドキュメントを参照してください。
PDFlib の取得は http://www.pdflib.org/ から行ってください。また、それぞれのプラットホーム用にコンパイル済のバイナリが置かれていますが、ここでは、ソースからインストールします。
2002.08.17 時点での最新版は 4.0.3 です。
PDFlib のインストールは、以下のように行います。
$ tar zxvf pdflib-4.0.3.tar.gz $ cd pdflib-4.0.3 $ ./configure $ make $ make test $ cd test $ ./pdftest
pdftest.pdf が作成されます。Acrobat Reader
や xpdf
などで確認してください。問題なければインストールします。
$ sudo make install
インストール後に、以下のように、PHP を再度コンパイルする必要があります。--with-pdflib
以外のオプションについては、必要に応じて追加、削除してください。
$ tar jxvf php-4.3.0.tar.bz2 $ cd php-4.3.0 $ ./configure \ --with-apxs=/usr/local/apache/bin/apxs \ --with-pgsql=/usr/local/pgsql \ --without-mysql \ --enable-mbstring \ --enable-mbregex \ --with-pdflib $ make $ sudo make install $ sudo /usr/local/apache/bin/apachectl restart
インストールに成功し、Apache を再起動すると、PHP の pdf
関数が使用できるようになります。PHP マニュアル の pdf 関数のサンプルを参考にして、PDF ファイルが作成できるかテストしてください。
このページが長くなりすぎましたので、PHP 拡張モジュール(PECL)のメモの PHP のモジュールとして Namazu を組み込むに移動しました。
バージョンの修正と php.ini についての項を作成。古いバージョンについての記述の削除、その他、多くの追記、誤字・脱字の修正などを行いました。
「Cygwin で Apache と PHP をコンパイルする」をApache 1.3.33 と PHP 4.3.9 で確認を行いました。また、Apache のインストール方法について追記しました。その他、誤字、脱字の修正などを行いました。
「PHP のモジュールとして Namazu を組み込む」を「PHP 拡張モジュール(PECL)のメモ」に移動させました。Cygwin で PHP をコンパイルするメモに、情報とリンクを追記しました。その他、誤字、脱字の修正、説明の追加などを行いました。
Cygwin で PHP をコンパイルする際に libphp4.dll の作成に失敗するという報告を受けましたので、libphp4.dll の作成に失敗する場合についての対処方法を追加しました。
Cygwin で pear コマンドを使用するとエラーになる件について追加しました。その他、誤字、脱字の修正などを行っています。
Cygwin で、Apache 1.3.29 と PHP 4.3.4 の mod_php4 をコンパイルする方法を追加しました。
Apache や PHP4 のバージョンなどを 2003.12.28 時点の最新のものに更新し、説明の追加などを行いました。また、メールで質問を受けましたので、それに対する返信の代わりに Namazu モジュールがインストールできない場合についての説明を追加しました。
pear の Namazu モジュールの CVS の場所が変更されていたので修正しました。
Namazu モジュールをインストールする方法を別のメモから移動して統合し、古くなっていた記述を修正。その他、PHP 4.3.0 以降の分の記述を追加しました。
DocBook で書き直し。PHP 4.3.0 についての記述を追加しました。
初版作成。公開。