PHP-Java連携

以前から、PHP5とJavaの連携について色々と調べていたのだが、なかなか情報が見つからず苦労していた。PHP4であれば、以下の様にして連携できる事は確認済み。

LXVI. PHP / Java の連携
extentionディレクトリにある、php_java.dllとphp_java.jarがあれば連携は可能。

しかし、PHP5となると拡張ディレクトリが「extention」から「ext」に変更になっていたり、その配下にphp_java.dllやphp_java.jarがなかったりで、そもそも試す事すらできなかった。

色々とググってみて分かった事だが、PHP Java 連携」で検索するのではなくPHP Java bridge」で検索したほうが、欲しい情報にヒットするようだ。で、以下のページにたどり着く事ができた。

PHP/Java Bridgeバージョン3.1.7リリース

公式サイト:Integrate PHP & Java - PHP / Java Bridgeには繋がらなかったものの、モジュールをダウンロードできるページには繋ぐ事ができたので、そこからphp-java-bridge_3.1.8_j2ee.zipをダウンロード。以下の手順で連携を行った。
※ちなみにPHPはバージョン5.1.6でWindows版。

1. php-java-bridge_3.1.8_j2ee.zipを解凍
2. ディレクトリの中にある、test.batを実行。
3. 実行後作成される、testphp.batを実行。
4. extディレクトリの中にある、JavaBrige.jarとphp_java.dllをPHPをインストールしたディレクトリの中のextディレクトリにコピー。
5. php.iniファイルをエディタで開き、以下の部分をクリップボードにコピー。

extension=php_java.dll

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
java.java_home=C:\Program Files\Java\jre1.5.0_06
java.java=C:\Program Files\Java\jre1.5.0_06\bin\javaw.exe
java.log_level=2

6. コピーした情報を実際のPHP環境のphp.iniへ貼り付けて編集。
7. Apacheの再起動。

上記手順を行った事で、phpinfo()の内容にJavaの項目が追加され、以下のようなJavaコードを実行する事ができるようになりました。

<?php
// Java クラス java.lang.System のインスタンスをPHPに作成する
$system = new Java('java.lang.System');
// プロパティへのアクセスのデモ
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
             $system->getProperty('os.version') . ' on ' .
             $system->getProperty('os.arch') . ' <br />';

// java.util.Dateの例
$formatter = new Java('java.text.SimpleDateFormat',
                      "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter->format(new Java('java.util.Date'));
?>