Java 1.6 Roto cuando se llama por la tarea Symfony fondo
Tengo una tarea Symfony que genera algunos archivos llama a exec a un jar y luego analiza la salida. El jar se ejecuta bien desde la línea de comandos, la tarea se ejecuta bien desde la línea de comandos.
El problema:
Llamo a la tarea en una acción basada en un envío de formulario. Tengo la acción iniciar un nuevo proceso de php en segundo plano para ejecutar la tarea independientemente de lo que la página generada hace ahora.
Cuando llega a la llamada java, diga exec(java-version); esto:
Error occurred during initialization of VM
Unable to load native library: libjava.jnilib
Siento que tiene que ver con la forma en que llamo a php cuando inicio la tarea, pero estoy perdido en cuanto a por qué no tendría las mismas bibliotecas que cuando uso la línea de comandos.
¿Cómo puedo hacer que java se ejecute desde la tarea 'background' Symfony?
Notas:
Solía funcionar sin problemas hasta que subí mamp de 1.9.6 a 2.0.3.
He mirado: Java Mac roto 10.6 pero como puedo ejecutarlo bien desde la línea de comandos, parece ser un un tema diferente.
También he mirado Ejecutar el comando de tarea symfony desde el permiso denegado de shell_exec () pero no creo que los permisos sean el problema aquí.
Actualización:
He reducido el problema a MAMP y llegar a php desde el navegador.
<?php
echo exec("java -version")
...
Funcionará cuando se llame desde la línea de comandos, pero no cuando el archivo php se abra a través del navegador. Así que la forma en que MAMP está configurado está causando el problema.
Aquí está el información sobre el medio ambiente:
- Valor variable
- SHELL /bin/bash
- TMPDIR / var / folders/YH / YH+uW3hDHZyxQ5AiUtr0T + + + + TI / - Tmp - /
- Apple_PubSub_Socket_Render/tmp / launch-3rr9ZI / Render
- USUARIO myuser
- COMMAND_MODE unix2003
- SSH_AUTH_SOCK/tmp/launch-zinaMI / Listeners
- _ _ CF _ USUARIO _ TEXTO _ CODIFICACIÓN 0x1F5: 0: 0
- PATH/usr/bin:/bin:/usr/sbin: / sbin
- PWD /
- INICIO /Users / myuser
- SHLVL 2
- DYLD_LIBRARY_PATH / Applications / MAMP/Library / lib:
- LOGNAME myuser
- DISPLAY /tmp/launch-FYrw70/org.x: 0
- _ /Applications/MAMP/Library/bin / httpd
Dyld parece estar presente aquí. Necesito encontrar una manera de desconectarlo del entorno de Mamp.
Resuelto
He encontrado una solución. Parece un truco, pero funcionó. Lo publicaré aquí en caso de que alguien más se encuentre con el el mismo problema.
Como Java Mac roto 10.6 menciona que el DYLD_LIBRARY_PATH debe estar desactivado. No estoy seguro de por qué, parece ser necesario en sistemas Unix pero no MacOSX.
Si MAMP establece /Applications / MAMP / Library / lib aquí está cómo desactivarlo: Edite / Applications/MAMP/Library/bin / envvars y comente las siguientes líneas
DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH
Para que se vea así:
#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH
Esto debería solucionar el problema y java 1.6 puede funcionar bien.
¿Es esto un hackeo? o ¿esto es un error en MAMP? Por favor, responda si conoce una mejor manera de resolver este problema.
3 answers
Esta es la solución de @paaat añadida. Solo estoy publicando para sacar esta pregunta de la lista sin respuesta.
He encontrado una solución. Parece un truco, pero funcionó. Lo haré publícalo aquí en caso de que alguien más se encuentre con el mismo problema.
Como Java Mac roto 10.6 menciona el DYLD_LIBRARY_PATH debe estar desactivado. No estoy seguro de por qué, parece ser necesario en sistemas Unix pero no MacOSX.
Si MAMP establece /Applications / MAMP / Library / lib aquí está cómo desactivar es: Editar / Aplicaciones / MAMP / Biblioteca / bin / envvars y comentar el siguientes líneas
DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH
Para que se vea así:
#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH
Esto debería solucionar el problema y java 1.6 puede funcionar bien.
Asegúrese de reiniciar la instalación de MAMP para que los cambios surtan efecto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-18 20:42:26
Esto funcionó! La versión de MAMP que estoy ejecutando, 2.1.3, sin embargo tiene un contenido diferente en el archivo:
#if test "x$DYLD_LIBRARY_PATH" != "x" ; then
# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#else
# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib"
#fi
#export DYLD_LIBRARY_PATH
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-27 15:07:07
Esto funcionó para mí:
<?php
exec('export DYLD_LIBRARY_PATH=""; java -version');
?>
Referencias:
- https://drupal.org/node/1257654
- Llamando a java desde PHP exec
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:20:55