„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum kann mein Bash-Skript nicht ausgeführt werden, wenn es von PHP mit „shell_exec“ aufgerufen wird?

Warum kann mein Bash-Skript nicht ausgeführt werden, wenn es von PHP mit „shell_exec“ aufgerufen wird?

Veröffentlicht am 09.11.2024
Durchsuche:305

Why is my Bash script failing to execute when called from PHP using `shell_exec`?

Ausführen von Bash-Befehlen aus PHP: Fehlerbehebung bei fehlgeschlagener Skriptausführung

In dieser Frage treffen wir auf einen PHP-Entwickler, der versucht, ein Bash-Skript aus PHP mit „shell_exec“ auszuführen. Die verwendete Syntax lautet:

$output = shell_exec("./script.sh var1 var2");

Das Skript kann jedoch nicht ausgeführt werden, wenn dieser Befehl aufgerufen wird.

Um dieses Problem zu beheben, ist es wichtig, die Fehlerursache zu ermitteln. Da das Skript erfolgreich ausgeführt wird, wenn es über die Befehlszeile mit ./script.sh var1 var2 ausgeführt wird, liegt das Problem wahrscheinlich im PHP-Code.

Ein häufiges Problem, das zu einem Fehler bei der Skriptausführung führen kann, sind falsche Verzeichnisberechtigungen oder Pfade . PHP-Skripte erfordern oft die Einstellung des richtigen Arbeitsverzeichnisses, bevor externe Befehle ausgeführt werden. Um dieses Problem zu beheben, kann der Code mithilfe von chdir das richtige Verzeichnis angeben, bevor Shell_exec aufgerufen wird.

Das folgende Snippet behebt dieses Problem:

$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);

In diesem Beispiel:

  1. Speichern Sie das aktuelle Arbeitsverzeichnis in $old_path.
  2. Ändern Sie das Arbeitsverzeichnis in „/my /path/' mit chdir.
  3. Führen Sie das Bash-Skript mit Shell_exec aus.
  4. Wechseln Sie zurück zum ursprünglichen Arbeitsverzeichnis mit chdir($old_path).

Indem sichergestellt wird, dass das richtige Verzeichnis vorhanden ist, sollte dieser geänderte Code das Bash-Skript von PHP erfolgreich ausführen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3