Rumah >pembangunan bahagian belakang >tutorial php >Mengapa skrip Bash saya gagal dilaksanakan apabila dipanggil daripada PHP menggunakan `shell_exec`?

Mengapa skrip Bash saya gagal dilaksanakan apabila dipanggil daripada PHP menggunakan `shell_exec`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 03:17:30479semak imbas

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

Melaksanakan Perintah Bash daripada PHP: Menyelesaikan Masalah Perlaksanaan Skrip Gagal

Dalam soalan ini, kami menghadapi pembangun PHP yang cuba melaksanakan skrip bash daripada PHP menggunakan shell_exec. Sintaks yang digunakan ialah:

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

Walau bagaimanapun, skrip gagal dilaksanakan apabila arahan ini dipanggil.

Untuk menyahpepijat isu ini, adalah penting untuk mengenal pasti punca kegagalan. Memandangkan skrip berjaya dilaksanakan apabila berjalan melalui baris arahan menggunakan ./script.sh var1 var2, masalahnya mungkin terletak dalam kod PHP.

Satu isu biasa yang boleh menyebabkan kegagalan pelaksanaan skrip ialah kebenaran atau laluan direktori yang salah . Skrip PHP selalunya memerlukan direktori kerja yang betul untuk ditetapkan sebelum melaksanakan arahan luaran. Untuk menyelesaikan masalah ini, kod boleh menentukan direktori yang betul menggunakan chdir sebelum memanggil shell_exec.

Coretan berikut menangani isu ini:

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

Dalam contoh ini, kami:

  1. Simpan direktori kerja semasa dalam $old_path.
  2. Tukar direktori kerja kepada '/my/path/' menggunakan chdir.
  3. Laksanakan skrip bash menggunakan shell_exec.
  4. Tukar kembali ke direktori kerja asal menggunakan chdir($old_path).

Dengan memastikan direktori yang betul disediakan, kod yang diubah suai ini seharusnya berjaya melaksanakan skrip bash daripada PHP.

Atas ialah kandungan terperinci Mengapa skrip Bash saya gagal dilaksanakan apabila dipanggil daripada PHP menggunakan `shell_exec`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn