首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >启动失败[“php”,"-v"]

启动失败[“php”,"-v"]
EN

Stack Overflow用户
提问于 2017-04-17 14:30:50
回答 1查看 2K关注 0票数 0

我试图构建php桥,但是我总是遇到"HTTP 500-php.java.bridge.http.FCGIConnectException:未能连接到服务器“的错误。

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

我已经读过这一本了,但是我不知道如何解决它

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

如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2017-04-18 13:57:44

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

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

提出来的解决方案允许在使用集成的独立服务器时指定php-cgi可执行文件的位置。但是如果您使用Tomcat,这是行不通的(不是100%正确,但让我们假设是这样的)

,那么该怎么办?

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

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

  1. 要么完全取消对Java->PHP.的支持

这可以通过删除PhpCGIServlet条目的注册来实现。检查以下xml行,并将注释放在()周围。

代码语言:javascript
运行
复制
<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可执行文件,并注意它的位置(在您的情况下可能是c:/xampp/php/php-cgi.exe,但我不使用windows)。那就去找

代码语言:javascript
运行
复制
<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服务器上重新部署。

还没有测试,但希望能有所帮助。

PS:

  • 如果可能,升级到Tomcat 7或8。
  • 注意可溶-日本重新工作的客户机(与java服务器一起工作)的存在,这会有很大帮助;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43453476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档