web-dev-qa-db-fra.com

Exécuter une application PHP avec Tomcat?

Est-il possible d'exécuter une application PHP en utilisant tomcat?

Avant de me dire d'utiliser simplement httpd, j'ai déjà une application Java exécutée sur mon serveur Web à Host/myapp. Maintenant, je veux installer RoundCube sur Host/roundcube.

L'un est PHP et l'autre est Java. Je continue de voir des références désinvoltes disant que c'est possible mais pas de vraies instructions. Je ne veux pas les mettre sur des ports séparés, j'ai besoin des ports HTTP et HTTPS standard .

Quelqu'un at-il des ressources pour cela?

42
GBa

Oui, c'est possible Will Den . nous pouvons exécuter PHP code dans le serveur Tomcat en utilisant son propre numéro de port localhost: 8080

ici j'écris une étape qui vous est tellement utile.

Comment installer ou exécuter PHP sur Tomcat 6 dans Windows

  1. télécharger et décompresser PHP 5 dans un répertoire, c:\php-5.2.6-Win32 - php-5.2.9-2-Win32.Zip Télécharger

  2. télécharger PECL 5.2.5 Win32 binaires - Télécharger PECL 5.2.5 Win32

  3. renommer php.ini-dist en php.ini dans c:\php-5.2.6-Win32

  4. Décommentez ou ajoutez la ligne (supprimez le point-virgule au début) dans php.ini: ;extension=php_Java.dll

  5. copier php5servlet.dll de PECL 5.2.5 vers c:\php-5.2.6-Win32

  6. copiez php_Java.dll de PECL 5.2.5 vers c:\php-5.2.6-Win32\ext

  7. copiez php_Java.jar de PECL 5.2.5 vers Tomcat\lib

  8. créez un répertoire nommé "php" (ou ce que vous voulez) dans le répertoire Tomcat\webapps

  9. copiez phpsrvlt.jar de PECL 5.2.5 vers Tomcat\webapps\php\WEB-INF\lib

  10. Décompressez ou décompressez phpsrvlt.jar Pour décompresser utilisez winrar ou winzip pour décompressez: jar xfv phpsrvlt.jar

  11. remplacez net\php\reflect.properties et net\php\servlet.properties par library=php5servlet

  12. Recréez le fichier jar -> jar cvf php5srvlt.jar net/php /. PS: si le fichier jar ne fonctionne pas, vous devez ajouter le chemin d'accès aux variables système pour moi, j'ai ajouté C:\Program Files\Java\jdk1.6.0\bin; to System variables/Path

  13. créez web.xml dans Tomcat\webapps\php\WEB-INF avec ce contenu:

    <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. Ajoutez PHP path (c:\php-5.2.6-Win32) À votre système ou chemin utilisateur dans l'environnement Windows (indice: cliquez avec le bouton droit et sélectionnez Propriétés dans Poste de travail

  15. créer test.php pour tester sous Tomcat\webapps\php comme

  16. Redémarrez Tomcat

  17. parcourir localhost:8080/php/test.php

44
Saunik Singh

Il est assez courant d'exécuter Tomcat derrière Apache. Dans Apache, vous pouvez ensuite diriger certaines URL vers Tomcat et demander à Apache/PHP de gérer les autres (y compris les images statiques).

(Sous Unix, Tomcat lui-même ne peut pas être exécuté en toute sécurité sur le port 80, contrairement à Apache. Tomcat, étant un processus Java, devrait être exécuté en tant que root, tandis qu'Apache passera en mode non privilèges root dès que le port 80 a été revendiqué. Donc, exécuter Apache sur le port 80 et le faire rediriger certaines ou toutes les requêtes vers Tomcat, est assez courant sous Unix.)

31
Arjan

Caucho Quercus peut exécuter PHP sur le jvm.

7
Equistatic

Un peu tard, mais voilà.

Que diriez-vous http://wiki.Apache.org/Tomcat/UsingPhp si vous voulez simplement exécuter le vrai php sur Tomcat.

Concernant l'exécution de Tomcat sur le port 80, il y a toujours jsvc, juste google jsvc + Tomcat.

6
phil

Là, ce PHP/Java pont. Cela fonctionne essentiellement PHP via FastCGI. Je ne l'ai pas utilisé moi-même.

5
Will Hartung

Tomcat est conçu comme conteneur de servlet JSP. Apache est conçu PHP serveur Web. Utilisez Apache comme serveur Web, répondant pour PHP demande, et demande directe de servlet JSP au conteneur Tomcat. Devrait être une meilleure implémentation).

3
lwpro2

Si quelqu'un cherche toujours - Quercus a une guerre qui permet d'exécuter des scripts PHP dans Apache Tomcat ou glassfish. Pour un guide étape par étape, regardez ce article

3
mithil-studytrails
  1. Assurez-vous que php est installé sur votre serveur
  2. Trouvez la dernière version de php-Java-bridge hors de sourceforge
  3. Depuis le répertoire éclaté de Sourceforge, téléchargez php-servlet.jar et JavaBridge.jar
  4. Placez ces fichiers jar dans webapp/WEB-INF/lib dossier de votre projet
  5. Editez webapp/WEB-INF/web.xml pour ressembler à:

d'accord

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

Vous pouvez avoir d'autres contenus dans ce fichier, assurez-vous simplement d'avoir tout ajouté entre la balise de l'application Web.

  1. Ajoutez vos fichiers php au répertoire webapp

Vous pouvez également faire d'autres choses spéciales avec cela. Vous pouvez en savoir plus à ce sujet ici: http://php-Java-bridge.sourceforge.net/pjb/how_it_works.php

1
Michael Kern