首页 > 解决方案 > 无法使用 java 桥运行 php 应用程序

问题描述

我有一个用于管理端的 jsp 应用程序和用于用户/客户端的 php Web 应用程序。我需要在tomcat 8上同时运行php和jsp应用程序。我尝试了java桥它在tomcat 8上不起作用。给出以下错误。可能是什么问题?我该如何解决这个问题?

我上传 JavaBridge.jar,php_java.jar,php-script.jar,php-servlet.jar 到 tomcatfolder/lib 目录

添加以下行到 tomcatfolder/conf/web.xml

<listener>
    <listener-class>php.java.servlet.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>PhpJavaServlet</servlet-name>
    <servlet-class>php.java.servlet.PhpJavaServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>PhpCGIServlet</servlet-name>
    <servlet-class>php.java.servlet.fastcgi.FastCGIServlet</servlet-class>
    <init-param>
      <param-name>prefer_system_php_exec</param-name>
      <param-value>On</param-value>
    </init-param>
    <init-param>
      <param-name>php_include_java</param-name>
      <param-value>Off</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>PhpJavaServlet</servlet-name>
    <url-pattern>*.phpjavabridge</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PhpCGIServlet</servlet-name>
    <url-pattern>*.php</url-pattern>
  </servlet-mapping>


    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
<welcome-file>index.php</welcome-file>
    </welcome-file-list>

例外

javax.servlet.ServletException: php.java.bridge.http.FCGIConnectException: Could not connect to server
    php.java.servlet.fastcgi.FastCGIServlet.init(FastCGIServlet.java:133)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)
Root Cause

php.java.bridge.http.FCGIConnectException: Could not connect to server
    php.java.bridge.http.SocketChannelFactory.test(SocketChannelFactory.java:58)
    php.java.servlet.fastcgi.FastCGIServlet.init(FastCGIServlet.java:131)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)
Root Cause

java.io.IOException: java.net.ConnectException: Connection refused (Connection refused)
    php.java.bridge.http.FCGIConnectException.<init>(FCGIConnectException.java:37)
    php.java.bridge.http.SocketChannelFactory.test(SocketChannelFactory.java:58)
    php.java.servlet.fastcgi.FastCGIServlet.init(FastCGIServlet.java:131)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)
Root Cause

java.io.IOException: PHP not found. Please install php-cgi. PHP test command was: [php-cgi, -v] 
    php.java.bridge.Util$Process.start(Util.java:1145)
    php.java.servlet.fastcgi.FCGIProcess.start(FCGIProcess.java:68)
    php.java.bridge.http.SocketChannelFactory.doBind(SocketChannelFactory.java:125)
    php.java.bridge.http.FCGIConnectionFactory.runFcgi(FCGIConnectionFactory.java:88)
    php.java.bridge.http.FCGIConnectionFactory$1.run(FCGIConnectionFactory.java:109)

标签: javaphpjsptomcat8

解决方案


推荐阅读