Запустить приложение php, используя tomcat? - PullRequest
42 голосов
/ 23 апреля 2009

Можно ли запустить приложение PHP с помощью tomcat?

Прежде чем вы скажете мне просто использовать httpd, у меня уже есть приложение Java, запущенное на моем веб-сервере по адресу host/myapp. Теперь я хочу установить RoundCube на хост / roundcube.

Один - это PHP, а другой - Java. Я продолжаю видеть косвенные ссылки, говорящие, что это возможно, но никаких реальных инструкций. Я не хочу ставить их на отдельные порты, мне нужны стандартные порты HTTP и HTTPS.

Есть ли у кого-нибудь ресурсы для этого?

Ответы [ 8 ]

44 голосов
/ 07 августа 2012

Да, это возможно Уилл Ден . мы можем запустить код PHP на сервере Tomcat, используя собственный номер порта localhost: 8080

здесь я пишу какой-то шаг, который очень полезен для вас.

Как установить или запустить PHP на Tomcat 6 в Windows

  1. скачать и разархивировать PHP 5 в каталог, c:\php-5.2.6-Win32 - php-5.2.9-2-Win32.zip Скачать

  2. скачать PECL 5.2.5 Win32 бинарные файлы - PECL 5.2.5 Win32 Скачать

  3. переименовать php.ini-dist в php.ini в c:\php-5.2.6-Win32

  4. Раскомментируйте или добавьте строку (удалите точку с запятой в начале) в php.ini: ;extension=php_java.dll

  5. копия php5servlet.dll из PECL 5.2.5 до c:\php-5.2.6-Win32

  6. копия php_java.dll с PECL 5.2.5 до c:\php-5.2.6-Win32\ext

  7. копия php_java.jar с PECL 5.2.5 до tomcat\lib

  8. создайте каталог с именем "php" (или как вам больше нравится) в tomcat\webapps directory

  9. копия phpsrvlt.jar с PECL 5.2.5 до tomcat\webapps\php\WEB-INF\lib

  10. Разархивировать или распаковать phpsrvlt.jar для распаковки использовать winrar или winzip для распаковки: jar xfv phpsrvlt.jar

  11. изменить net\php\reflect.properties и net\php\servlet.properties на library=php5servlet

  12. Создайте файл фляги -> jar cvf php5srvlt.jar net / php / . PS: если файл jar не запускается, вы должны добавить для меня путь к системным переменным, я добавил C:\Program Files\Java\jdk1.6.0\bin; to System variables/Path

  13. создать web.xml в tomcat\webapps\php\WEB-INF с этим содержимым:

    <web-app version="2.4" 
      xmlns="http://java.sun.com/xml/ns/j2ee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd ">
      <servlet>
        <servlet-name>php</servlet-name>
        <servlet-class>net.php.servlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>php-formatter</servlet-name>
        <servlet-class>net.php.formatter</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>php</servlet-name>
        <url-pattern>*.php</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>php-formatter</servlet-name>
        <url-pattern>*.phps</url-pattern>
      </servlet-mapping>
    </web-app>
    
  14. Добавьте путь PHP (c:\php-5.2.6-Win32) к вашей Системе или Путь пользователя в среде Windows (Подсказка: щелкните правой кнопкой мыши и выберите Свойства из Мой компьютер

  15. создать test.php для тестирования под tomcat\webapps\php как

  16. Перезагрузить кота

  17. просмотр localhost:8080/php/test.php

31 голосов
/ 23 апреля 2009

Довольно часто запускать Tomcat за Apache. В Apache вы можете затем направить определенные URL-адреса в Tomcat, а Apache / PHP обрабатывать другие (включая статические изображения).

(В Unix сам Tomcat не может безопасно работать на порте 80, в то время как Apache может. Tomcat, будучи Java-процессом, должен будет запускаться от имени пользователя root, в то время как Apache переключится на привилегии без полномочий root, как только порт Заявлено 80. Таким образом, запуск Apache через порт 80 и переадресация некоторых или всех запросов на Tomcat довольно распространен в Unix.)

7 голосов
/ 23 апреля 2009

Caucho Quercus может запускать код PHP на jvm.

6 голосов
/ 27 февраля 2010

Немного поздно, но здесь идет.

Как насчет http://wiki.apache.org/tomcat/UsingPhp, если вы просто хотите запустить настоящий php на tomcat.

Что касается запуска tomcat на порту 80, всегда есть jsvc, просто google jsvc + tomcat.

5 голосов
/ 23 апреля 2009

Вот этот PHP / Java мост. Это в основном работает PHP через FastCGI. Я сам этим не пользовался.

3 голосов
/ 03 июля 2014

Если кто-то все еще смотрит - Quercus имеет войну, которая позволяет запускать PHP-скрипты в Apache Tomcat или Glassfish. Для пошагового руководства посмотрите эту статью

3 голосов
/ 05 октября 2010

Tomcat разработан как контейнер сервлетов JSP. Apache разработан PHP веб-сервер. Используйте apache в качестве веб-сервера, отвечая на запрос PHP, и направляйте запрос сервлета JSP в контейнер tomcat. должна быть лучшая реализация.

1 голос
/ 03 августа 2018
  1. Убедитесь, что на вашем сервере установлен php
  2. Найти последнюю версию php-java-bridge из sourceforge
  3. Из развернутого каталога на Sourceforge загрузите php-servlet.jar и JavaBridge.jar
  4. Поместите эти файлы jar в папку webapp/WEB-INF/lib вашего проекта
  5. Отредактируйте webapp / WEB-INF / web.xml так, чтобы он выглядел следующим образом:

ОК

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
   <filter>
      <filter-name>PhpCGIFilter</filter-name>
      <filter-class>php.java.servlet.PhpCGIFilter</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>PhpCGIFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
   <!-- the following adds the JSR223 listener. Remove it if you don't want to use the JSR223 API -->
   <listener>
      <listener-class>php.java.servlet.ContextLoaderListener</listener-class>
   </listener>
   <!-- the back end for external (console, Apache/IIS-) PHP scripts; remove it if you don't need this -->
   <servlet>
      <servlet-name>PhpJavaServlet</servlet-name>
      <servlet-class>php.java.servlet.PhpJavaServlet</servlet-class>
   </servlet>
   <!-- runs PHP scripts in this web app; remove it if you don't need this -->
   <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>PhpJavaServlet</servlet-name>
      <url-pattern>*.phpjavabridge</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
      <servlet-name>PhpCGIServlet</servlet-name>
      <url-pattern>*.php</url-pattern>
   </servlet-mapping>
</web-app>

Возможно, у вас есть другой контент внутри этого файла, просто убедитесь, что вы добавили все между тегом веб-приложения.

  1. Добавьте ваши php файлы в каталог webapp

Вы можете делать с этим и другие особые вещи. Вы можете узнать больше об этом здесь: http://php -java-bridge.sourceforge.net / pjb / how_it_works.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...