Heim  >  Artikel  >  Backend-Entwicklung  >  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?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 03:17:30412Durchsuche

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:

<code class="php">$output = shell_exec("./script.sh var1 var2");</code>

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 zum Scheitern 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:

<code class="php">$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);</code>

In diesem Beispiel tun wir Folgendes:

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

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

Das obige ist der detaillierte Inhalt vonWarum kann mein Bash-Skript nicht ausgeführt werden, wenn es von PHP mit „shell_exec“ aufgerufen wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn