2017-04-17 68 views
0

我試圖建立php-java橋接,但我總是得到錯誤 「HTTP Status 500 - php.java.bridge.http.FCGIConnectException:Could not連接到服務器「。我的電腦上出現「php-cgi」,「-v」]原因:java.io.IOException:無法運行程序「」php-cgi「」(在目錄「C:\ Users」 \ Rob「):CreateProcess error = 2,系統找不到指定的文件 無法啓動FCGI服務器:java.io.IOException:未找到PHP。請安裝php-cgi。 PHP測試命令是:[PHP-CGI,-v]無法啓動[「php-cgi」,「 - v」]

我已經看過這個this但沒有得到如何解決它

我使用的XAMPP - 本地主機上的tomcat:8080/JavaBridge的

如何解決這個問題?

回答

0

首先,在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

  1. 要麼完全地消除對Java的支持> PHP。

這可以通過取消登記PhpCGIServlet條目來實現。檢查以下xml行並將註釋置於(<! - 和 - >)。

<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:

    • 如果有可能升級到Tomcat 7或8

    • 注意soluble-japha返工客戶端的存在(與Java Bridge服務器的工作),那將有很大的幫助;)