首頁  >  文章  >  後端開發  >  為什麼使用“shell_exec”從 PHP 調用時我的 Bash 腳本無法執行?

為什麼使用“shell_exec”從 PHP 調用時我的 Bash 腳本無法執行?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 03:17:30412瀏覽

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

從PHP 執行Bash 指令:對腳本執行失敗進行故障排除

在這個問題中,我們遇到一位PHP 開發人員嘗試使用shell_exec 從PHP 執行bash 腳本。使用的語法是:

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

但是,在呼叫此指令時腳本無法執行。

要除錯此問題,確定失敗的原因很重要。由於使用 ./script.sh var1 var2 透過命令列運行時腳本執行成功,問題可能出在 PHP 程式碼中。

導致腳本執行失敗的常見問題是目錄權限或路徑不正確。 PHP 腳本通常需要在執行外部命令之前設定正確的工作目錄。要解決此問題,程式碼可以在呼叫 shell_exec 之前使用 chdir 指定正確的目錄。

以下程式碼段解決了此問題:

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

在此範例中,我們:

  1. 將目前工作目錄儲存在 $old_path 中。
  2. 使用 chdir 將工作目錄改為 '/my/path/'。
  3. 使用 shell_exec 執行 bash 腳本。
  4. 使用 chdir($old_path) 變更回原始工作目錄。

透過確保正確的目錄就位,此修改後的程式碼應該會成功執行 PHP 中的 bash 腳本。

以上是為什麼使用“shell_exec”從 PHP 調用時我的 Bash 腳本無法執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn