Page 1 of 1

Como rodar PHP no TomCat Junto com JSP

Posted: 25 Sep 2023, 03:09
by javanunes
Esse artigo parte do suposto que o seu Tomcat já está configurado com os seus usuários corretamente em um servidor Linux e com o java 1.8.0 rodando e funcionando corretamente no path. Vamos partir do suposto que o seu tomcat esteja instalando em /opt/tomcat na versão 8 e que o seu PHP e Mysql já estejam devidamente instalados conforme qualquer instalacao padrão. O foco aqui é apenas o Tomcat com o PHP.

No seu Linux Ubunto instale antes o pacote php-cgi

Code: Select all

apt install php-cgi 
Entre no site https://sourceforge.net/projects/php-java-bridge/files/

Nesse site você baixará dois "plugins" .jar , não podemos garantir se eles contem ou não código malicioso como um cavalo de troia ou vírus, é por conta e risco apenas seu baixá-los.

Nesse site acima entre no link/pasta "Binary package" ou https://sourceforge.net/projects/php-ja ... 20package/

Entre no link "php-java-bridge_7.2.1" ou https://sourceforge.net/projects/php-ja ... dge_7.2.1/

Baixe e guarde em downloads do seu computador o deploy JavaBridgeTemplate721.war

Depois no mesmo site entre no link ou pasta "exploded" ou https://sourceforge.net/projects/php-ja ... /exploded/

Faça download dos plugins jars php-servlet.jar e JavaBridge.jar para a sua pasta Downloads do computador

Entre na sua pasta de libs do tomcat, no meu computador costuma estar em /opt/tomcat/lib/ , no seu servidor pode ser que esteja em outro local, descubra!

Jogue os plugins php-servlet.jar e JavaBridge.jar dentro da pasta /opt/tomcat/lib/

De permissoes para esses plugins

Code: Select all

chmod 670  JavaBridge.jar 
chmod 670  php-servlet.jar
Dê um stop e depois um start no seu servidor tomcat

Faça deploy do arquivo JavaBridgeTemplate721.war

Depois entre na pasta WEB-INF da sua web aplicação e crie o arquivo web.xml , se a sua aplicação se chamar HelloWorld provavelmente o caminho será esse /opt/tomcat8/webapps/HelloWorld/WEB-INF/web.xml, se o arquivo já estiver criado, coloque o texto abaixo dentro dele, se não estiver criado, crie com esse texto abaixo

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <!-- the following 8 lines extend the servlet spec 2.2 "url-pattern" to handle PHP PATH_INFO: *.php/something?what=that. Remove them, if you don't need this feature. -->
    <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>

    <welcome-file-list>
        <welcome-file>index.php</welcome-file>
    </welcome-file-list>
    
  <display-name>PHP no JNS Tomcat</display-name>
  <description>
     Um misto de PHP e Java
  </description>


</web-app>



Dentro da pasta do sua pasta HelloWorld crie o arquivo teste.php e coloque o codigo abaixo:

Code: Select all

<?php

    phpinfo();

?>

Depois de tudo acesse http://seuIP:8080/HelloWorld/teste.php para ver se está funcionando , se estiver ele dará várias informações sobre o seu PHP.