Не удалось запустить ["php-cgi","-v"]

Я пытаюсь построить мост php-java, но я всегда получаю сообщение об ошибке "HTTP Status 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 была: [php-cgi, -v]

Я уже читал этот, но не понял, как его решить.

Я использую xampp - tomcat на localhost:8080/JavaBridge

как решить эту проблему?

1 ответ

Прежде всего, php-cgi двоичный файл технически не требуется для запуска моста для обычных взаимодействий PHP->Java... (для Java->PHP это так).

К сожалению, если вы используете общий JavaBridgeTemplate.war режим (Java->PHP) включен по умолчанию и будет искать php-cgi исполняемый файл, который не может быть определен автоматически в вашей системе.

Упомянутое вами решение позволяет указать местоположение php-cgi исполняемый при использовании встроенного автономного сервера. Но если вы используете Tomcat, это не сработает (не на 100% правильно, но давайте предположим, что так)

Так что делать?

Под Tomcat параметры моста хранятся в /WEB-INF/web.xml файл внутри файла войны. Я предполагаю, что вы скачали и используете один из репозитория sourceforge.

Просто откройте 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: я не совсем уверен, что это решение работает для всех версий моста)

  1. Или укажите местоположение 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.

  • Обратите внимание на существование переработанного клиента растворимого японского языка (работает с сервером Java-моста), это очень поможет;)

Другие вопросы по тегам