¿Cómo ejecutar un archivo jar usando php? No pasa nada

Tengo un archivo jar llamado MyJar.jar y acepta 4 parámetros. Necesito ejecutar este archivo jar usando un script php. El archivo php y el archivo jar se encuentran en el mismo directorio.
Cuando trato de usar el system simplemente no pasa nada, no hay salida, no hay nada. Este es también el caso de otras funciones como exec, passthru y etc.

Así es como trato de ejecutar el archivo.

system('java -jar ./MyJar.jar arg1 arg2 arg3 arg4');
// and also
system('./MyJar.jar arg1 arg2 arg3 arg4');
// and also
exec('./MyJar.jar arg1 arg2 arg3 arg4',$output);
print_r($output);
// nothing works

ACTUALIZACIÓN: Gracias por sus respuestas. Pero lo he probado todo. Intenté usar rutas absolutas a mi archivo jar. Probé todas las combinaciones posibles de funciones de relé de comando con rutas absolutas y relativas. Intenté cambiar el directorio usando chdir. pwd demuestra que estoy en el camino correcto. Ya no sé qué hacer.

ACTUALIZACIÓN 2: Me acabo de enterar de algo raro. cuando uso system llamar y especificar un valor de retorno, el número 6 es regreso Si entiendo correctamente 6 significa que el proceso ha sido abortado o algo así. Me pregunto qué significa eso.

ACTUALIZACIÓN 3: Después de verificar los registros de errores, se generó el siguiente error. ¿Puede alguien ayudarme con eso?

falla de dl en la línea 696Error: falló /usr/lib/jvm/java-6-openjdk-i386/jre/lib/i386/server/libjvm.so, porque /opt/lampp/lib/libgcc_s.so.1: versión ` GCC_4.2.0' no encontrado (requerido por /usr/lib/i386-linux-gnu/libstdc++.so.6)

preguntado el 24 de agosto de 12 a las 08:08

¿Es posible que el problema esté en el archivo jar? ¿Puede ejecutarlo manualmente y ver si funciona correctamente? -

No. El archivo jar está bien. Se ejecuta sin problemas desde la línea de comandos. -

Es posible que necesite especificar la ruta completa a Java, no estoy seguro de si system() or exec() comprueba la variable PATH -

4 Respuestas

Verifique su registro de errores de Apache, tal vez la ejecución esté bloqueada y tenga PHP configurado para ocultar errores.

Además, intente (solo como un experimento) usar rutas completas, tanto java lejano como el archivo .jar.

Respondido 24 ago 12, 08:08

Después de revisar su registro, puede encontrar que su PHP.ini está bloqueando comandos con algo como:

disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source 

Elimine 'system' y 'exec' para permitir estas funciones en PHP.

Respondido 24 ago 12, 08:08

Las funciones están todas activas. Otros comandos de shell como ls correr sin ningún problema. - 2 avergonzado

¿Llamas a tu script php desde otro script con include or require?

Realice una llamada al sistema a pwd para garantizar la ruta de trabajo correcta. Debe ser la misma que la ruta al archivo jar

system('pwd');

Otras formas en las que podría fallar: el usuario de apache/php no puede ejecutar el archivo jar. Intente establecer un permiso de archivo de 0777 (-rwxrwxrwx) o 0666 (-rw-rw-rw) para el archivo jar y vea si hay alguna diferencia.

¿El archivo realmente se llama MyJar.jar? ¿Es correcto el caso? Linux distingue entre mayúsculas y minúsculas. Si hay caracteres de espacio en el nombre del archivo, entonces debe citar/escape el nombre del archivo.

Es posible que no se encuentre la ruta al ejecutable de Java. Probar system('which java') y luego anteponga la llamada a en su llamada del sistema con la ruta. Pruebe también una ruta absoluta al archivo jar.


actualización Intente iniciar un programa Java Hello World desde PHP para probar si realmente se puede ejecutar. Entonces sabe que el problema no está en el programa Java en sí.

Respondido 24 ago 12, 08:08

Mire en la configuración de su dominio si el modo seguro está activado o no para su dominio. Eso bloqueará la función exec.

Respondido 24 ago 12, 09:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.