Solusi untuk PHP tidak memiliki izin untuk menjalankan perintah exec di Linux
Referensi resmi terkait
PHP exec Linux sudoers file Sudo CommandsModifikasi saat berjalan dalam mode fastcgi
Saat PHP berjalan dalam mode fastcgi, izinnya diwarisi dari program host-nya. Kami mengambil apache sebagai contoh untuk menjelaskan. Pertama, kita perlu menemukan akun yang menjalankan apache, lalu menggunakan vi atau vim untuk mengedit file / etc / sudoers, dan menambahkan contoh referensi berikut ke file tersebut. Di konten berikut, pertama-tama gunakan perintah ps untuk menemukan proses apache httpd, lihat informasi akun di sisi paling kiri dari hasil yang dikembalikan, lalu edit file sudoers untuk menambahkan otorisasi ke akun apache.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Modifikasi saat berjalan dalam mode php-fpm
Saat berjalan dalam mode php-fpm, ini berjalan sebagai proses terpisah. Jadi pertama-tama kami menemukan akun yang sedang berjalan, dan kemudian melakukan operasi otorisasi seperti di atas.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Verifikasi bahwa perubahan tersebut berlaku
Setelah operasi di atas, kami telah mengubah otorisasi, tetapi belum berpengaruh. Kami perlu memulai ulang layanan agar modifikasi kami diterapkan. Sesuai dengan situasi aktual kami, mulai ulang layanan apache atau php-fpm. Kemudian jalankan perintah exec untuk melihat hasil yang dikembalikan.Jika hasil yang dikembalikan diperoleh secara normal, itu berhasil.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);