28 de diciembre de 2010

Soporte PHP 5 en Jboss 5.1bajo Windows

1 Descargar JBoss Application Server y descomprimir en C:\ (evitar rutas con espacios ejemplo "C:\Program Files")

2 Descargar y descomprimir php5servlet-windows-i586-SP1.zip (modulo PHP) en C:\

3 Descargar Jboss native y descomprimir en %JBOSS_HOME%\bin
siendo JBOSS_HOME una variable de entorno que apunta al directorio de JBoss AS

esto genera la carpeta native
A la cual debemos agregar el archivo php5servlet.dll
puede ser descargado desde
http://community.jboss.org/servlet/JiveServlet/download/517347-7145/php5servlet.zip
si no funciona descargar desde
http://members.cox.net/ocjohnsons/php5servlet.zip

4 Crear carpeta php5 en C:\
5 copiar C:\php5servlet-windows-i586-SP1\PHP\* en C:\php5
(ahora la carpeta php5 tiene otra carpeta bin dentro)

6 Hacer una copia de C:\php5\bin\php.ini-recommended a %WINDIR%\php.ini
(%WINDIR% es C:\WINDOWS)

7 Editar %WINDIR%\php.ini cambiando el valor de extension_dir por c:/php5/bin/ext/

8 Editar jboss-5.0.1.GA\server\default\deploy\jbossweb.sar\server.xml
(Agregar las siguientes lineas a server.xml)
<Listener className="org.jboss.web.php.LifecycleListener"/>

Versiones anteriores en vez de jboss web usan apache. En esos casos el className es catalina.apache

9 Editar jboss-5.0.1.GA\server\default\deployers\jbossweb.deployer\web.xml
Registramos el servlet que procesa las peticiones PHP
(Agregar las siguientes líneas al archivo web.xml)

 <servlet>
    <servlet-name>php</servlet-name>
<servlet-class>org.jboss.web.php.Handler</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>6</load-on-startup>
</servlet>

<servlet>
<servlet-name>phps</servlet-name>
<servlet-class>org.jboss.web.php.Highlight</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>phps</servlet-name>
<url-pattern>*.phps</url-pattern>
</servlet-mapping>


10 Agregar una línea en el  <welcome-file-list>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.php</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


11 modificar C:\jboss-5.1.0.GA-PHP\bin\run.conf.bat de jboss agregando lo siguiente

set PATH=%PATH%;%PHP_HOME%\bin;%PHP_HOME%\bin\ext
set LD_LIBRARY_PATH="c:/php5/bin/ext"
set "JAVA_OPTS=%JAVA_OPTS% -Djava.library.path=c:\php5\bin\ext;c:\php5\bin;C:\jboss-5.1.0.GA-PHP\bin\native"


12 Chequear las siguientes variables de entorno
JAVA_HOME=<PATH AL DIRECTORIO JDK >
PHP_HOME=c:\php5 PATH=%PATH%;%JAVA_HOME%\bin;%PHP_HOME%\bin;%PHP_HOME%\bin\ext;

jboss-5.0.1.GA\server\default\deployers\jbossweb.deployer, debe tener el archivo jbossweb-extras.jar  El cual puede obtenerse aquí http://www.java2s.com/Code/JarDownload/jbossweb-extras.jar.zip

13 Crear un archivo index.php con el siguiente contenido <?php phpinfo(); ?>
Copiarlo dentro de
jboss-5.0.1.GA\server\default\deploy\ROOT.war

14 Chequear que cuando descargamos php5servlet-windows-i586-SP1 este contiene phpservlet.dll en php/bin adecuado para trabajar con jboss web, o catalina apache
Cuando agregamos o cambiamos lines tales como org.jboss.web.php necesitamos cambiar al phpservlet.dll adecuado

--------------------------------------------------------------------------------------------------------
Los archivos compilados php5servlet.dll que se encuentran en la web son del 2006
y usan los paquetes catalina.apache. ... en vez de los nuevos org.jboss.web.php

por lo tanto debemos o bien bajar la version que presta
Peter en el post 21 de la siguiente discusión
http://community.jboss.org/thread/80067?start=15&tstart=0
o bien bajar los fuentes y compilarlos nosotros mismos
http://www.jboss.org/jbossweb/modules/php.html



Referencias:
http://ram-jboss.blogspot.com/2008/05/executing-php-scripts-in-jbossjboss-web.html