上記のように、PHPはwww.sunfreeware.comから、php-4.4.5、php-5.2.1、php-5.2.13をダウンロードすることができるが、これまで使用してきた下記に示す環境では、要件にあわせることが難しい。
このため、PHP Version 5.3.2をソースコードからダウンロードして、コンパイルしたものをインストールする。また、OracleDBに接続する環境も構築する。OracleDBに接続するためにはOracleのライブラリを参照してコンパイルしなければならない、そのためのユーザーと、コマンドからもPHPが実行できるユーザーを作成して、それを「php」とする。
- PHPのインストール手順
- rootユーザーでログインして「php」グループ、ユーザーを作成する。その際、作成したユーザーがoracleのライブラリを参照できるように、セカンダリユーザーグループに「oinstall」を指定する。プロファイルはoracleのものを流用して、後でインストーラが作成する「/opt/php/bin」にパスを通しておく。
- 「php」ユーザーになって、PHP Version 5.3.2をダウンロードから、「configure」を実行して「Makefile」の作成、「configure」より作成された「Makefile」によってソースファイルのコンパイルまでを行う。
- rootユーザーの戻り、「make install」を実行して、makeが生成したバイナリのインストールを行う。
- viで「httpd.conf」を開き、インストーラがLoadModuleディレクティブにphp5_moduleを追加してあるか確認をして、AddTypeディレクティブにPHPスクリプトファイルの拡張子を追加して、同拡張子をもつファイルを呼び出したときに、PHP5のApache2拡張モジュールが処理するよう設定する。
- 前回と同じように「httpd.conf」の「DocumentRoot」の定義を調べ、PHPスクリプトを作成したディレクトリから、ドキュメントルート(DocumentRoot)にシンボリックリンクを張る。
- Apache/2.0.63を起動または、再起動する。このあたりのコマンドは「第7回 Webサーバーの起動」を参照されたい。
- URLにhttp:// server_addr :7777/php/phpinfo.phpを指定してPHPスクリプトの実行結果を確認する。
- OracleDBに接続する環境の構築
- Apacheの実行ユーザーがoracleのライブラリを使用できるように、/usr/apache2/bin/envvars に環境変数を追加する。
- OracleDBに接続するPHPスクリプトを作成する。
- URLにhttp:// server_addr :7777/php/db.phpを指定してPHPスクリプトの実行結果を確認する。
- 必要ないならスクラッチを消す。
$ exit
# PATH=/opt/php/bin:/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH
# cd /export/home/php/php-5.3.2
# make install
...
# vi /etc/apache2/httpd.conf
...
LoadModule php5_module libexec/libphp5.so
...
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
↓
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# cat /etc/apache2/httpd.conf|grep ^DocumentRoot
DocumentRoot "/var/apache2/htdocs"
...
# ln -s /export/home/oracle/php /var/apache2/htdocs/php
# /etc/init.d/apache stop
...
# /etc/init.d/apache start
# vi /usr/apache2/bin/envvars
...
#
LD_LIBRARY_PATH="/usr/apache2/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
#
#
ORACLE_BASE=/opt/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
NLS_LANG=Japanese_Japan.JA16EUCTILDE; export NLS_LANG
ORA_NLS10=$ORACLE_HOME/nls/data; export ORA_NLS10
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH
LD_LIBRARY_PATH="/usr/apache2/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
#
$ mkdir -p /export/home/oracle/php
$ vi /export/home/oracle/php/db.php
...
<html>
<head>
</head>
<body>
<?php
$connection = oci_connect('scott', 'tiger');
$sql = 'select table_name from user_tables';
$statement = oci_parse($connection, $sql);
oci_execute($statement);
while($record = oci_fetch_array($statement)) {
print $record['TABLE_NAME'] . "<br>
\n";
}
oci_free_statement($statement);
oci_close($connection);
?>
</body>
</html>
...
$ rm -r /export/home/php/php-5.3.2
...
$ rm /export/home/php/php-5.3.2.tar
...