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:
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!