44 votes

Exécuter une application php à l'aide de tomcat ?

Est-il possible d'exécuter une application php en utilisant tomcat ? Avant que vous ne me disiez d'utiliser httpd, j'ai déjà une application java qui tourne sur mon serveur web à host/myapp. Maintenant je veux installer RoundCube sur host/roundcube. Cependant, l'un est en php et l'autre en java. Je continue à voir des références qui disent que c'est possible mais pas d'instructions réelles. Non, je ne veux pas les mettre sur des ports séparés, j'ai besoin des ports standards http et https. Quelqu'un a-t-il des ressources à ce sujet ?

45voto

Saunik Singh Points 537

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

Ici, j'écris une étape qui est tellement utile pour vous.

Comment installer et exécuter PHP sur Tomcat 6 sous Windows ?

  1. Téléchargez et décompressez 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 - PECL 5.2.5 Win32 Télécharger

  3. renommer php.ini-dist à php.ini sur c:\php-5.2.6-Win32

  4. Décommenter ou ajouter la ligne (enlever le point-virgule au début) dans php.ini : ;extension=php_java.dll

  5. copie php5servlet.dll de PECL 5.2.5 à c:\php-5.2.6-Win32

  6. copie php_java.dll de PECL 5.2.5 à c:\php-5.2.6-Win32\ext

  7. copie php_java.jar de PECL 5.2.5 à tomcat\lib

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

  9. copie phpsrvlt.jar de PECL 5.2.5 à tomcat\webapps\php\WEB-INF\lib

  10. Unjar ou unzip phpsrvlt.jar pour unzip, utilisez winrar ou winzip pour unjar, utilisez : jar xfv phpsrvlt.jar

  11. changer les deux net\php\reflect.properties et net\php\servlet.properties à library=php5servlet

  12. Recréez le fichier jar -> jar cvf php5srvlt.jar net/php/ . PS : si le fichier jar ne s'exécute 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éer web.xml sur 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. Ajouter le chemin PHP( c:\php-5.2.6-Win32 ) à votre chemin d'accès au système ou à l'utilisateur dans l'environnement Windows (Conseil : cliquez avec le bouton droit de la souris et sélectionnez Propriétés dans le menu déroulant). Mon ordinateur

  15. créer test.php pour les essais sous tomcat\webapps\php comme

  16. Redémarrer tomcat

  17. consultez le site localhost:8080/php/test.php

3 votes

+1 pour ce beau tutoriel. Il fonctionne, après que j'ai ajouté une étape manquante. L'étape manquante est : copier php_java.jar de PECL 5.2.5 a tomcat \lib dir.

0 votes

J'espère que vous pourrez également écrire pour 64 bits :)

0 votes

Quelqu'un a-t-il une idée des performances (par rapport à l'exécution de php script dans un serveur http apache) ?

32voto

Arjan Points 7154

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

(Sous Unix, Tomcat lui-même ne peut pas être sécurisé pour fonctionner sur le port 80, alors qu'Apache le peut. Tomcat, étant un processus Java, doit être exécuté en tant que Root, alors qu'Apache passera aux privilèges non-Root dès que le port 80 aura été revendiqué. Ainsi, faire tourner Apache sur le port 80 et faire en sorte qu'il redirige certaines ou toutes les requêtes vers Tomcat, est assez courant sous Unix).

3 votes

C'est certainement l'option la plus simple. Pour appeler Tomcat à partir d'Apache, vous pouvez consulter le module Apache mod_jk.

8 votes

Bien sûr, vous pouvez exécuter tomcat sur le port 80 sous Unix sans être Root. Utilisez simplement iptables pour rediriger le port 80 vers le port 8080.

1 votes

@Kim, je ne classerais pas l'utilisation d'iptables comme l'exécution de Tomcat sur le port 80, mais vous avez raison : utiliser Apache n'est pas la seule option. (L'utilisation d'Apache présente toutefois d'autres avantages, comme le fait de servir du contenu statique. Ma déclaration "est à préférer" était certainement un peu trop simplifiée).

7voto

Equistatic Points 318

Caucho Quercus peut exécuter du code PHP sur la jvm.

0 votes

C'est vrai, mais ne devez-vous pas utiliser la résine Caucho ?

0 votes

Ça a très bien marché. J'ai essayé la solution fournie sous le titre "Comment installer ou exécuter PHP sur Tomcat 6 sous Windows", mais j'ai échoué lamentablement.

6voto

Will Hartung Points 57465

Là-bas, cette PHP/Java pont. Il s'agit en fait d'exécuter PHP via FastCGI. Je ne l'ai pas utilisé moi-même.

0 votes

Il ne fonctionnait pas, celui-ci fonctionne : caucho.com/resin-3.0/quercus . J'ai téléchargé le fichier de guerre. Je l'ai placé dans le répertoire webapps qui a bien explosé le fichier war. J'ai lancé le démarrage depuis le bin de tomcat, bingo.

0 votes

Pour les futurs chercheurs, fonctionne très bien avec jdk1.8 tomcat 9 et (php la dernière version)

6voto

phil Points 41

Un peu tard, mais voilà.

Et si http://wiki.apache.org/tomcat/UsingPhp si vous voulez juste exécuter le vrai php sur tomcat.

Concernant l'exécution de tomcat sur le port 80, il y a toujours jsvc, il suffit de googler jsvc + tomcat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X