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.

Author: Community, 2011-10-04

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.

 12
Author: barsju,
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
 3
Author: Ben Sullins,
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

 0
Author: Meetai.com,
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