无法启动[" php-cgi"," -v"]

时间:2017-04-17 14:30:50

标签: tomcat xampp php-java-bridge

我试图建立php-java桥,但我总是得到错误 " HTTP状态500 - php.java.bridge.http.FCGIConnectException:无法连接到服务器"。

致命错误:无法启动PHP [" php-cgi"," -v"],原因:java.io.IOException:无法运行程序"&# 34; PHP-CGI"" (在目录" C:\ Users \ Rob"):CreateProcess error = 2,系统找不到指定的文件 无法启动FCGI服务器:java.io.IOException:找不到PHP。请安装php-cgi。 PHP测试命令是:[php-cgi,-v]

我已经读过这个this,但没有得到解决方法

我在localhost上使用xampp - tomcat:8080 / JavaBridge

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

首先,运行常规 PHP-> Java交互的桥梁所需的php-cgi二进制文件不是技术上 ...(对于Java) - > PHP就是这样)。

不幸的是,如果您使用通用JavaBridgeTemplate.war,默认情况下会启用(Java-> PHP)模式,并会查找php-cgi可执行文件,但无法确定自动在您的系统上。

您使用集成独立服务器时,您mentionned允许指定php-cgi可执行文件的位置。但是如果你使用Tomcat,这不会起作用(不是100%正确,但让我们这样假设)

那该怎么办?

在Tomcat下,桥接参数存储在war文件中的/WEB-INF/web.xml文件中。我假设您已下载并使用sourceforge repo中的一个。

只需使用存档管理器打开JavaBridgeTemplate<version>.war文件(战争就是拉链),然后使用以下解决方案之一编辑/WEB-INF/web.xml

  1. 要么完全删除对Java-&gt; PHP的支持。
  2. 这可以通过删除PhpCGIServlet条目的注册来实现。检查以下xml行并放置注释(&lt;! - 和 - &gt;)。

    <servlet>
      <servlet-name>PhpCGIServlet</servlet-name>
      <servlet-class>php.java.servlet.fastcgi.FastCGIServlet</servlet-class>
      <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>PhpCGIServlet</servlet-name>
      <url-pattern>*.php</url-pattern>
    </servlet-mapping>
    

    (PS:我并不完全确定此解决方案适用于所有版本的网桥)

    1. 或指定php-cgi二进制文件的位置。
    2. 首先确保您拥有php-cgi可执行文件,并记下其位置(在您的情况下可能是c:/xampp/php/php-cgi.exe,但我没有使用Windows)。然后寻找

      <context-param>
          <param-name>prefer_system_php_exec</param-name>
          <param-value>On</param-value>
      </context-param>
      
      <!-- Location of your system PHP executable. Default is /usr/bin/php-cgi or c:/Program Files/PHP/php-cgi.exe
           If exported (Linux) or on the path (Windows) you can use 'php-cgi' as a platform
           independent pointer to the executable
      -->
      <context-param>
          <param-name>php_exec</param-name>
          <param-value>php-cgi</param-value>
          <!-- As an example, the param value
               of the php-cgi executable could be:
                  <param-value>/usr/bin/php-cgi5.6</param-value>
                  <param-value>/usr/bin/php-cgi7.0</param-value>
                  <param-value>c:/Program Files/PHP/php-cgi.exe</param-value>
          -->
      </context-param>
      

      确保<param-value>c:/Program Files/PHP/php-cgi.exe</param-value>包含php-cgi的位置。

      然后保存更改(确保web.xml保存在.war文件中)并在Tomcat服务器上重新部署。

      Haven未经过测试,但希望有所帮助。

      PS:

      • 如果可能,请升级到Tomcat 7或8。

      • 请注意soluble-japha重新设计的客户端(与java桥服务器一起使用)的存在,这对我们有很大的帮助;)