Solaris10 + Apache2 + PHP5.2 + Oracle10g

sasaki 月曜, 2007-01-22 17:52

 Solari10とApache2とPHP5.2とOracle10gの組み合わせをしたいので、PHP5.2をインストールすることにした。Oracle10gがインストールされているSolaris10上での作業の記録。

■PHP5.2.0のインストール 

$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--enable-zend-multibyte
--enable-mbstring=shared
--with-oci8=shared
--enable-sigchild

$ make
$ su -
# make install

php.iniを用意する。

# cp php.ini-dist /usr/local/lib/php.ini

 php.iniを編集する。mbstring.soとoci8.soが入っているディレクトリを指定する。Windows用に書かれたphp_*.dllを*.soの形に直してコメントアウトする。

(変更前)
extension_dir = "./"
(変更後)
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"

(変更前)
;extension=php_mbstring.dll
;extension=php_oci8.dll (変更後)
extension=mbstring.so
extension=oci8.so

 

■Apache2のhttpd.confの確認と再起動

/etc/apache2/httpd.confの中を確認。下の2行が追加されているか確認して修正する。

LoadModule php5_module        libexec/libphp5.so
AddType application/x-httpd-php .php

Apacheを再起動する。必ず、終了させてから、起動する。

# svcadm disable apache2
# svcadm enable apache2

以下のtest.phpを作って確認する。

<?php
phpinfo()
?>

 

■Apache2の環境変数を設定する。

/usr/local/apache2/bin/envvars に環境変数を追加する。 

Oracle Database Clientの場合

ORACLE_BASE=/export/home/oracle
export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/10.1.0
export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
NLS_LANG=Japanese_Japan.JA16EUC
export NLS_LANG

設定とexport文 を2行に分けて書いている。(念のため)

Apache2を再起動する。

 

■テスト

動作テスト用にtest.phpを作成する。

<?php
phpinfo()
?>

 

Oracleへの接続テスト

<html>
<head>
</head>

<body>
Oracle10g接続テスト

<?php
$connection = oci_connect('HR', 'PASS', 'ORCL');
$sql = 'select * from bdb_reagent';
$statement = oci_parse($connection, $sql);
oci_execute($statement);

while($record = oci_fetch_array($statement)) {
print $record['FIRST_NAME'] . "<br>¥n";
}

oci_free_statement($statement);
oci_close($connection);
?>

</body>
</html>

フィールドの指定は、first_nameではなく、FIRST_NAMEのように大文字で指定する。

たぶんフィールドを作ったときの指定なのかな...。

 

■PHPのバージョンを隠す

wgetされたときにPHPのバージョン情報を与えないようにする。

httpd.confのお尻に一行追加する。

ServerTokens ProductOnly