Solaris10 + Apache1.3 + PHP5.2 + Oracle10g
- 2009.06.18
- Solaris
既にApache1.3 + Oracle10gが稼働しているSolaris10上で、PHP5.2.9をインストールして、OracleデータベースをPHPから利用できるようにする。
■PHP5のインストール
Oracleのバイナリへアクセスする必要があるので、Oracle実行ユーザかrootで行う。
configure前に、環境変数をエクスポートしておく。
# ORACLE_HOME=/u01/app/orcl/product/10.2.0; export ORACLE_HOME # ORACLE_SID=orcl; export ORACLE_SID # NLS_LANG=Japanese_Japan.JA16EUC; export NLS_LANG # LD_LIBRARY_PATH=/usr/openwin/lib:$ORACLE_HOME/lib; export LD_LIBRARY_PATH # PATH=$ORACLE_HOME/bin:$PATH; export PATH # PATH=/usr/sfw/bin:$PATH; export PATH # TZ=Japan
念のため、ライブラリもエクスポートしておいた。
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:/usr/local/lib:/usr/sfw/lib # LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/dt/lib:/usr/openwin/lib # LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/xpg4/lib:/lib:/usr/ccs/lib # export LD_LIBRARY_PATH
configureを実行する。
./configure --with-mysql=/usr/sfw \ --with-apxs=/usr/local/apache/bin/apxs \ --with-gd --with-zlib \ --enable-mbstring \ --enable-mbregex \ --enable-zend-multibyte \ --enable-sqlite-utf8 \ --with-oci8=shared,/u01/app/orcl/product/10.2.0 --enable-sigchild \ --with-pdo-oci=/u01/app/orcl/product/10.2.0
エラー発生
make: *** [main/reentrancy.lo] Error 1 make: *** [libphp5.la] Error
解決
/usr/local/lib/libz.a まわりでエラーが発生するので、リネームして使わないようにしておく。
/usr/local/lib/libz.aのかわりにSolaris付属の/usr/lib/libz.soを使うようにする。
# cd /usr/local/lib # mv libz.a _libz.a
ちなみにzlibのインストール時に–sharedオプションを追加して./configureしてあげると、libz.aは生成されないで、libz.soが生成される。
エラー発生-2
collect2: ld returned 1 exit status make: *** [sapi/cli/php] Error 1
解決-2
ソースを削除して、再度tar zxvf php-*.tgzで解凍して、configureをやり直す。
■php.iniを用意する
インストールが終わったら引き続き、php.iniを設置する。
php.iniの設置場所を確認する。
# /usr/local/bin/php -i | grep php.ini Configuration File (php.ini) Path => /usr/local/lib
php.ini-dist または php.ini-recommendedを/usr/local/libにphp.iniとファイル名を変更してコピーする。(2つのファイルの違いはdiffコマンドで確認)
# cp php.ini-dist /usr/local/lib/php.ini
Apacheを再起動ではなく、停止、起動してPHPを有効にする。
■Apache1.3の起動スクリプトへの追加
/etc/init.d/apache起動スクリプトの最初に環境変数の設定を加える。
#!/bin/sh ORACLE_HOME=/u01/app/orcl/product/10.2.0 export ORACLE_HOME ORACLE_SID=orcl export ORACLE_SID #NLS_LANG=Japanese_Japan.JA16EUC #NLS_LANG=Japanese_Japan.JA16SJIS NLS_LANG=Japanese_Japan.UTF8 export NLS_LANG TNS_ADMIN=$ORACLE_HOME/network/admin export TNS_ADMIN LD_LIBRARY_PATH=/usr/openwin/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH PATH=$ORACLE_HOME/bin:$PATH export PATH ...Apacheの起動スクリプトが続く。
OracleデータベースがEUCでも、WebサイトでUTF-8を使うので、NLS_LANGはUTF-8を指定する。php.iniのmbstring.internal_encodingも同じUTF-8を指定して合わせる。
設定変更後は、Apacheを再起動ではなく、必ず停止してから起動する。
■Apache1.3実行ユーザにOracle実行権を与える
念のため、Apache1.3実行ユーザにOracle実行権を与えておいた。
Apache1.3の実行ユーザー apache の情報を調べる。
# id -a apache uid=555810(apache) gid=3002(apache) groups=3002(apache)
Apache1.3の実行ユーザー apache にOracle実行グループ dba を追加した。
# usermod -G apache,dba apache
■php.iniに設定を追加、修正する
/usr/local/lib/php.ini
;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; extension=oci8.so extension=pdo_oci.so ;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/" ;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;; [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = pass ;mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none ;mbstring.func_overload = 0
■その他
OracleのバイナリへApache実行ユーザである apache がアクセスできるようにディレクトリが755になっているかを確認する。
■PHPでテストする
test.php
<html> <head> <title></title> </head> <body> <pre> <?php putenv("TZ=Japan"); echo date("Y/m/d H:i:s (D)", time()); $db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST = 192.168.2.3)(PORT=1521))) (CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=orcl)))"; $con = oci_connect( 'username', 'password', $db ); if (! $con) { echo 'ERROR!!'; $exp = oci_error(); echo htmlentities( $exp['message'] ); } $sql = 'select last_name from EMP'; $state = oci_parse( $con, $sql ); oci_execute( $state ); while ( oci_fetch( $state ) ) { echo oci_result( $state, 'LAST_NAME' ), "\n"; } oci_free_statement( $state ); oci_close( $con ); ?> </pre> </body> </html>
-
前の記事
SolarisにXpdfをインストール 2009.03.23
-
次の記事
Cinematize 2 Pro DVDビデオをQuickTimeに変換してFinal Cut Proで編集できる 2009.10.22