首先,php-cgi 二进制文件技术上不是运行 常规 PHP->Java 交互的桥接器...(对于 Java->PHP它是)。
很遗憾,如果您使用的是通用 JavaBridgeTemplate.war,默认情况下会启用 (Java->PHP) 模式,并会查找无法确定的 php-cgi 可执行文件自动 在您的系统上。
您mentionned 的解决方案允许在使用集成 独立服务器时指定php-cgi 可执行文件的位置。但是如果你使用 Tomcat,这将不起作用(不是 100% 正确,但我们假设是这样)
那该怎么办?
在 Tomcat 下,网桥参数存储在 war 文件内的 /WEB-INF/web.xml 文件中。我假设您已经下载并使用了sourceforge repo 中的一个。
只需使用存档管理器打开 JavaBridgeTemplate<version>.war 文件(战争几乎就是一个 zip) 并使用以下解决方案之一编辑 /WEB-INF/web.xml:
- 要么完全删除对 Java->PHP 的支持。
这可以通过删除PhpCGIServlet 条目的注册来实现。检查以下 xml 行并在 () 周围放置 cmets。
<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:我不完全确定此解决方案适用于所有版本的网桥)
- 或者指定
php-cgi二进制文件的位置。
首先确保您有一个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 服务器上。
尚未测试,但希望对您有所帮助。
PS: