既存の大規模な(っぽい)PHP Webアプリ(ApacheとMySQLを使用)があり、Javaベースのレポートエンジンを呼び出すことができる必要があります。したがって、私が達成しようとしているのは、既存のPHPアプリ内からJavaクラスにアクセスする機能です。
これまでのところ、新しい開発サーバーに、オープンソースのPHP-Javabridgeプロジェクト(http://php-java-bridge.sourceforge.net/pjb/index.php)を正常にインストールし、Tomcat(7.0。 22)ポート8080を使用するFedora 15ボックス。ライブシステムのホスティング制限のため、Zend Javabridgeを使用できません。残念ながら、現時点ではプロバイダーを変更することはできません。
また、ポート80を使用して開発ボックスでApacheとPHPを実行しています。
TomcatでJavaBridgeWebアプリケーションにアクセスでき、すべてのPHPの例が正常に機能します。ただし、既存のアプリケーション内からJavaBridgeにアクセスしようとすると、問題が発生します。
ApacheのWebルート(/ var / www / html)にあるスクリプト内からphpの「java」関数を呼び出すことができるはずだと思います。
JavaBridgeアプリケーションで提供されているスクリプトを次のように使用しました。
<?php
require("http://127.0.0.1:8080/JavaBridge/java/Java.inc");
echo java("java.lang.System")->getProperties();
?>
これにより、/ etc / httpd / logs/error_logに次のエラーが発生します
[2011年11月22日火曜日15:01:08][エラー][クライアント::1]PHP警告:require_once(http:// localhost:8080 / JavaBridge / java / Java.inc):ストリームを開くことができませんでした:アクセスが拒否されました2行目の/var/www/html/javatest.php
[2011年11月22日火曜日15:01:08][エラー][クライアント::1]PHP致命的なエラー:require_once():必要な'http:// localhost:8080 / JavaBridge / java / Java.inc'(include_path ='.:/php/includes:/usr/share/apache-tomcat-7.0.22/webapps/JavaBridge')2行目の/var/www/html/javatest.php
他の提案されたスクリプトは次のとおりです:(注:私は/ var / www / htmlにJava.incのコピーを持っています)
<?php
define("JAVA_HOSTS", "127.0.0.1:8080");
define("JAVA_SERVLET", "/JavaBridge/servlet.phpjavabridge");
require_once("./Java.inc");
echo java("java.lang.System")->getProperties();
?>
これにより、次のエラーが発生します。
[2011年11月22日火曜日12:57:51][エラー][クライアント::1]PHP警告:fsockopen():/ usr / share / apache-tomcat-の127.0.0.1:8080(アクセスが拒否されました)に接続できません7.0.22 / webapps / JavaBridge / java / Java.inc(994行目)
[2011年11月22日火曜日12:57:51][エラー][クライアント::1]PHP致命的なエラー:UncaughtJEEサーバー127.0.0.1:8080に接続できませんでした。始めてください。エラーメッセージ:アクセスが拒否されました(13)\ n\n行989の/usr/share/apache-tomcat-7.0.22/webapps/JavaBridge/java/Java.incにスローされました
問題を除外するために私が取った手順は次のとおりです。
- サーバーのファイアウォールをオフにしました
- Chmodはすべてを777にしました
- PHPスクリプトを実行する前後にTomcatが実行されていることを確認しました(おそらく間違って、Tomcatが2番目のエラーメッセージで参照されているJEEサーバーであると思いますか?)4)。PHPのiniファイルにはopen_basedirの制限がなく、セーフモードがオンになっておらず、allow_furl_openおよびallow_url_includeオプションがあります。
私は本当にこれに固執しています。グーグルの量は、同様の特定の問題を発見しません。
私はJavaに非常に精通しておらず、その/var/www/html
場所からjava関数を実行することが単に不可能であり、PHPスクリプトをから実行する必要がある限り、JavaBridgeのスティックの端が間違っている可能性があると言わなければなりません。 TomcatJavaBridgeアプリ内。
すべてのサーブレットが機能していると思いますが、知識が不足しているため、それを確認する必要がありません。
これはFedoraにあるので、SELinuxパーミッションの問題に関連している可能性がありますか?