Не удалось запустить ["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
с одним из решений ниже:
- Либо полностью удалите поддержку 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.
Обратите внимание на существование переработанного клиента растворимого японского языка (работает с сервером Java-моста), это очень поможет;)