Foros del Web » Administración de Sistemas » Apache »

[SOLUCIONADO] Problema permisos Apache + PHP + Jasper (linux)

Estas en el tema de Problema permisos Apache + PHP + Jasper (linux) en el foro de Apache en Foros del Web. Hola a todos. Tengo un desarrollo de una aplicación PHP que genera reportes compilado en JasperReports. La forma en que lo hace es generando una ...
  #1 (permalink)  
Antiguo 12/07/2013, 16:23
 
Fecha de Ingreso: julio-2008
Ubicación: Caldas, Antioquia, Colombia
Mensajes: 81
Antigüedad: 16 años, 4 meses
Puntos: 4
Problema permisos Apache + PHP + Jasper (linux)

Hola a todos.

Tengo un desarrollo de una aplicación PHP que genera reportes compilado en JasperReports. La forma en que lo hace es generando una instrucción que será ejecutada por medio de la función exec de PHP.

Código PHP:
$cmdline 'java -Djava.awt.headless=true -Djava.io.tmpdir=/opt/lampp/htdocs/crm2/cache/ -classpath "custom/ZuckerReports2/resources/:custom/ZuckerReports2/resources/areas_negocio.jasper_files/:modules/zr2_Report/jasper/zuckerreports-1.0.jar:modules/zr2_Report/jasper/commons-beanutils-1.8.0.jar:modules/zr2_Report/jasper/batik-anim.jar:modules/zr2_Report/jasper/bcel-5.2.jar:modules/zr2_Report/jasper/barcode4j-2.0.jar:modules/zr2_Report/jasper/ant-1.7.1.jar:modules/zr2_Report/jasper/jasperreports-5.1.0.jar:modules/zr2_Report/jasper/jasperreports-javaflow-4.0.0.jar:modules/zr2_Report/jasper/batik-css.jar:modules/zr2_Report/jasper/servlet.jar:modules/zr2_Report/jasper/commons-digester-1.7.jar:modules/zr2_Report/jasper/batik-awt-util.jar:modules/zr2_Report/jasper/antlr-2.7.5.jar:modules/zr2_Report/jasper/xml-apis-ext.jar:modules/zr2_Report/jasper/poi-3.6.jar:modules/zr2_Report/jasper/iText-2.1.7.jar:modules/zr2_Report/jasper/jxl-2.6.10.jar:modules/zr2_Report/jasper/commons-logging-1.0.4.jar:modules/zr2_Report/jasper/batik-gvt.jar:modules/zr2_Report/jasper/spring-beans-2.5.5.jar:modules/zr2_Report/jasper/mysql-connector-java-3.1.11-bin.jar:modules/zr2_Report/jasper/batik-parser.jar:modules/zr2_Report/jasper/batik-util.jar:modules/zr2_Report/jasper/hibernate3.jar:modules/zr2_Report/jasper/groovy-all-1.7.5.jar:modules/zr2_Report/jasper/barbecue-1.5-beta1.jar:modules/zr2_Report/jasper/jcommon-1.0.15.jar:modules/zr2_Report/jasper/log4j-1.2.15.jar:modules/zr2_Report/jasper/saaj-api-1.3.jar:modules/zr2_Report/jasper/jpa.jar:modules/zr2_Report/jasper/jfreechart-1.0.12.jar:modules/zr2_Report/jasper/spring-core-2.5.5.jar:modules/zr2_Report/jasper/mondrian-3.1.1.12687.jar:modules/zr2_Report/jasper/hsqldb-1.8.0-10.jar:modules/zr2_Report/jasper/jasperreports-applet-4.0.0.jar:modules/zr2_Report/jasper/batik-script.jar:modules/zr2_Report/jasper/serializer.jar:modules/zr2_Report/jasper/commons-collections-2.1.1.jar:modules/zr2_Report/jasper/batik-svggen.jar:modules/zr2_Report/jasper/batik-dom.jar:modules/zr2_Report/jasper/rhino-1.7R1.jar:modules/zr2_Report/jasper/batik-ext.jar:modules/zr2_Report/jasper/xml-apis.jar:modules/zr2_Report/jasper/batik-bridge.jar:modules/zr2_Report/jasper/xercesImpl-2.7.0.jar:modules/zr2_Report/jasper/batik-svg-dom.jar:modules/zr2_Report/jasper/jasperreports-fonts-4.0.0.jar:modules/zr2_Report/jasper/jdt-compiler-3.1.1.jar:modules/zr2_Report/jasper/xalan-2.7.1.jar:modules/zr2_Report/jasper/png-encoder-1.5.jar:modules/zr2_Report/jasper/bsh-2.0b4.jar:modules/zr2_Report/jasper/batik-xml.jar:modules/zr2_Report/jasper/jaxen-1.1.1.jar:modules/zr2_Report/jasper/commons-javaflow-20060411.jar" at.go_mobile.zuckerreports.JasperBatchMain custom/ZuckerReports2/temp/ef6b9f27-ebd6-39b0-f3cd-51e06c6247d5/cmd.properties 2>&1 ';

exec($cmdline$output$return_var);
var_dump($output$return_var); 
Ejecutando este comando me genera el siguiente error:

Código:
Exception in thread "main" java.lang.ExceptionInInitializerError
	at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:121)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:88)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:103)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:61)
	at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)
	at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:55)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:170)
	at at.go_mobile.zuckerreports.JasperBatchMain.main(JasperBatchMain.java:126)
Caused by: net.sf.jasperreports.engine.JRRuntimeException: java.io.IOException: Problem reading font data.
	at net.sf.jasperreports.engine.fonts.SimpleFontFace.(SimpleFontFace.java:108)
	at net.sf.jasperreports.engine.fonts.SimpleFontFace.(SimpleFontFace.java:128)
	at net.sf.jasperreports.engine.fonts.SimpleFontFace.getInstance(SimpleFontFace.java:67)
	at net.sf.jasperreports.engine.fonts.SimpleFontFamily.setNormal(SimpleFontFamily.java:99)
	at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamily(SimpleFontExtensionHelper.java:261)
	at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamilies(SimpleFontExtensionHelper.java:232)
	at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:193)
	at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:162)
	at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:56)
	at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:110)
	at net.sf.jasperreports.engine.util.JRStyledTextParser.(JRStyledTextParser.java:83)
	... 8 more
Caused by: java.io.IOException: Problem reading font data.
	at java.awt.Font.createFont0(Font.java:999)
	at java.awt.Font.createFont(Font.java:876)
	at net.sf.jasperreports.engine.fonts.SimpleFontFace.(SimpleFontFace.java:100)
	... 18 more
Sin embargo, cuando ejecuto la línea "java -Djava.awt.headless=true -Djava.io.tmpdir=/opt/lampp/htdocs/crm2/cache/ -classpath "custom/Zucker...." en la terminal de linux el reporte se genera PERFECTO.

Haciendo investigaciones parece ser un problema de permisos sobre la carpeta temporal que usa java. Sin embargo con el comando -Djava.io.tmpdir=/opt/lampp/htdocs/crm2/cache/ aseguro que la carpeta es escribible.
Lo que sí pude notar es que cuando ejecuto el código PHP antes mencionado se genera un archivo temporal en esta carpeta. Pero la genera con permisos 600 y como propietario el usuario configurado para el Apache.
Cuando lo ejecuto por terminal los archivos generados allí (que por cierto son mucho más) están asignados al usuario root (porque es el usuario con el que estoy logueado supongo) y con los mismos permisos.

Estoy asumiendo que es un problema de permisos, sin embargo no estoy 100%, agradecería cualquier ayuda para desentrañar este inconveniente.

Gracias de antemano.

Saludos.
  #2 (permalink)  
Antiguo 19/07/2013, 14:26
 
Fecha de Ingreso: julio-2008
Ubicación: Caldas, Antioquia, Colombia
Mensajes: 81
Antigüedad: 16 años, 4 meses
Puntos: 4
Respuesta: Problema permisos Apache + PHP + Jasper (linux)

Bueno al final encontré la solución en el siguiente post. Tuve que reemplazar la librería /opt/lampp/lib/libgcc_s.so.1 con la del servidor /lib/libgcc_s.so.1. Reiniciar apache y ahora funciona todo correctamente.

Etiquetas: jasperreports, linux, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:26.