exportieren von shell-Umgebungsvariable vor dem ausführen von Befehl aus PHP-CLI-script
Ich habe ein Skript, dass verwendet passthru(), um einen Befehl auszuführen. Ich brauche, um einige shell-Umgebungsvariablen, bevor Sie diesen Befehl ausführen, ansonsten schlägt es fehl, es zu finden Bibliotheken.
Ich habe versucht, die folgenden:
putenv("LD_LIBRARY_PATH=/path/to/lib");
passthru($cmd);
Mit putenv() scheint sich nicht zu verbreiten, um den Befehl, den ich gelaufen bin. Es schlägt fehl, es zu sagen, kann es nicht finden Bibliotheken. Wenn ich export LD_LIBRARY_PATH=/path/to/lib
in der bash, funktioniert es einwandfrei.
Ich habe auch versucht Folgendes (vergeblich):
exec("export LD_LIBRARY_PATH=/path/to/lib");
passthru($cmd);
Wie kann ich eine shell-variable von PHP, der sich ausbreitet, um untergeordnete Prozesse, die von meinem PHP-script?
Bin ich beschränkt zu überprüfen, ob eine variable existiert nicht in der aktuellen Umgebung, die der Benutzer manuell einstellen?
Ich habe gelesen, dass die Frage, das sieht ähnlich aus, aber wenn Sie es Lesen, ich bin zu Fragen, wie Sie zu erreichen ist etwas anderes.
InformationsquelleAutor Greg K | 2012-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bin ich mir nicht 100% vertraut wie mit PHP exec funktioniert, aber Sie haben versucht:
exec("LD_LIBRARY_PATH=/path/to/lib $cmd")
Ich weiß, dass dies funktioniert in den meisten shells, aber ich bin mir nicht sicher, wie PHP, Dinge zu tun.
EDIT: Vorausgesetzt, das ist eine Arbeit, um sich mit mehreren Variablen einfach trennen Sie diese durch ein Leerzeichen:
exec("VAR1=val1 VAR2=val2 LD_LIBRARY_PATH=/path/to/lib $cmd")
MYVAR=value; LD_LIBRARY_PATH=/path/to/lib $cmd
?kein Semikolon, nur ein Raum
scheint, zumindest laut den ubuntu-link, den ich gepostet, allerdings habe ich nicht immer getan,
Vielen Dank, das funktioniert. Ich hatte, um Platz trennen Sie mehrere environment-Variablen.
InformationsquelleAutor gymbrall
Konnte man Schreibe einfach deine variable Zuordnungen zu $cmd.
InformationsquelleAutor ghoti
Ein paar Dinge in den Sinn kommen. Man ist für $cmd ein Skript enthält die Umgebungsvariable setup vor der Ausführung des eigentlichen Programms.
Andere überlegung ist diese: ich weiß, können Sie eine variable definieren und ausführen eines Programms auf der gleichen Linie, wie:
aber ich weiß nicht, ob diese arbeiten im Rahmen der
passthru
https://help.ubuntu.com/community/EnvironmentVariables#Bash.27s_quick_assignment_and_inheritance_trick
InformationsquelleAutor dldnh