Hinzufügen, um die $PATH-environment-variable in einem PHP-Skript
Ich habe ein PHP-Skript, das mit wget
zum download einige Bilder. Allerdings wget
installiert wurde mit Homebrew so ist es nicht der Benutzer, der das PHP-Skript. Wenn ich exec('echo $PATH')
ich nicht bekommen, die /usr/local/bin
Verzeichnis enthält wget
. Wie füge ich /usr/local/bin
an die Umgebung Weg, damit das PHP-script finden wget
?
Update: ich vergaß zu erwähnen, den Grund kann ich nicht angeben, die genaue Lage ist, weil der Ort kann unterschiedlich sein, je nachdem, welche Maschine das Skript ausgeführt wird.
Lösung:
Dies ist, was ich am Ende mit:
//help PHP find wget since it may be in /usr/local/bin
putenv('PATH=' . getenv('PATH') . PATH_SEPARATOR . '/usr/local/bin');
if (exec('which wget') == null) {
throw new Exception('Could not find wget, so image could not be downloaded.');
}
//now we know wget is available, so download the image
exec('wget ...');
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Reihenfolge der Präferenz:
/usr/local/bin/wget
wenn Sie den Aufruf des Unterprozess. Dies ist wahrscheinlich der einfachste und beste Ansatz.proc_open
stattexec
, die ermöglicht das übergeben von environment-Variablen als argument.putenv
zum ändern der aktuellen Umwelt (geerbt von Teilprozessen).putenv
gilt nur für die aktuelle Anfrage? Neue Anforderung nicht haben, die neuen zusätzlichen Weg, richtig?PHP hat einen Zauber der globalen variable namens
$_ENV
was ist ein array mit allen Umgebungsvariablen (im Kontext des Prozesses der PHP-Skript ausgeführt wird, z.B. Webserver).sehen http://php.net/manual/en/reserved.variables.environment.php