l'exportation de l'environnement de shell variable avant de la commande en cours d'exécution à partir de PHP script CLI
J'ai un script qui utilise passthru() pour exécuter une commande. J'ai besoin de définir des variables d'environnement shell avant d'exécuter cette commande, sinon il ne sera pas trouver des bibliothèques.
J'ai essayé ce qui suit:
putenv("LD_LIBRARY_PATH=/path/to/lib");
passthru($cmd);
À l'aide de putenv() ne semble pas se propager à la commande, je suis en cours d'exécution. Il omet de dire qu'il ne peut pas le trouver dans les bibliothèques. Quand je lance export LD_LIBRARY_PATH=/path/to/lib
en bash, il fonctionne très bien.
J'ai aussi essayé la suivante (en vain):
exec("export LD_LIBRARY_PATH=/path/to/lib");
passthru($cmd);
Comment puis-je définir une variable d'environnement à partir de PHP, qui se propage à des processus enfants de mon script PHP?
Suis-je limité à vérifier si une variable n'existe pas dans le contexte actuel, et en demandant à l'utilisateur de définir manuellement?
- double possible de stackoverflow.com/questions/2002970/...
- J'ai lu, il y ressemble, mais si vous l'avez lu, je me demande comment faire pour atteindre quelque chose de différent.
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas à 100% familier avec la façon dont PHP exec fonctionne, mais avez-vous essayé:
exec("LD_LIBRARY_PATH=/path/to/lib $cmd")
Je sais que cela fonctionne dans la plupart des coques mais je ne suis pas sûr de savoir comment PHP faire les choses.
EDIT: en Supposant que c'est le travail, pour faire face à de multiples variables de les séparer par un espace:
exec("VAR1=val1 VAR2=val2 LD_LIBRARY_PATH=/path/to/lib $cmd")
MYVAR=value; LD_LIBRARY_PATH=/path/to/lib $cmd
?Vous pouvez simplement ajouter votre affectations de variables de $cmd.
Un couple de choses viennent à l'esprit. L'un est de $cmd pour être un script qui inclut la variable d'environnement de l'installation avant d'exécuter le programme.
Une autre pensée, c'est ceci: je sais que vous pouvez définir une variable et d'exécuter un programme sur la même ligne, comme:
mais je ne sais pas si ce travail dans le contexte de
passthru
https://help.ubuntu.com/community/EnvironmentVariables#Bash.27s_quick_assignment_and_inheritance_trick