7
votes

Exporter une variable d'environnement Shell avant exécution de la commande de PHP CLI Script

J'ai un script qui utilise PassThru () pour exécuter un commander. J'ai besoin de définir des variables d'environnement shell avant d'exécuter cette commande, sinon elle ne trouvera pas ses bibliothèques.

J'ai essayé ce qui suit: p> xxx pré>

Utilisation putenv () ne semble pas propager à la commande que je cours. Il échoue à dire qu'il ne peut pas trouver les bibliothèques. Quand j'exécute exporter ld_library_path = / chemin / vers / lib code> en bash, cela fonctionne bien. P>

J'ai également essayé ce qui suit (en vain): P>

exec("export LD_LIBRARY_PATH=/path/to/lib");
passthru($cmd);


2 commentaires

Dupliqué possible de Stackoverflow.com/ Questions / 2002970 / ...


J'ai lu cette question, cela ressemble à la même chose, mais si vous le lisez, je demande comment réaliser quelque chose de différent.


3 Réponses :


6
votes

Je ne suis pas à 100% familier avec la façon dont l'EXED fonctionne de PHP, mais avez-vous essayé: EXEC ("LD_LIBRARY_PATH = / PATH / TO / LIB $ cmd")

Je sais que cela fonctionne dans la plupart des coquillages, mais je ne sais pas comment PHP fait des choses.

Edit: En supposant que cela fonctionne, pour faire face à plusieurs variables, les séparez simplement par un espace:

exécu ("var1 = val1 var2 = val2 ld_library_path = / chemin / à / lib $ cmd")


3 commentaires

Et si j'ai plus d'une variable? myvar = valeur; Ld_library_path = / chemin / to / lib $ cmd ?


semble, au moins selon le lien Ubuntu, j'ai posté, bien que je n'ai jamais fait ça


Merci, cela fonctionne. J'ai dû spacer plusieurs variables d'environnement multiples.



1
votes

Quelques choses viennent à l'esprit. L'un est pour $ cmd comme étant un script qui inclut la configuration de la variable d'environnement avant d'exécuter le programme actuel.

Une autre pensée est la suivante: je sais que vous pouvez définir une variable et exécuter un programme sur la même ligne, tels que: xxx

mais je ne sais pas si ça Travailler dans le contexte de PassThru

https : //help.ubuntu.com/community/environmentvariables#bash.27S_Quick_Assignment_and_inheritance_trick


1 commentaires

$ cmd est en fait une commande pour exécuter un fichier de construction de fourmis, ce script enveloppe la construction de cette commande.



2
votes

Vous pouvez simplement préparer vos tâches variables à $ cmd. XXX


0 commentaires