Solution pour que PHP ne soit pas autorisé à exécuter la commande exec sous Linux
Références officielles connexes
PHP exec Linux sudoers file Sudo CommandsModifications lors de l'exécution en mode fastcgi
Lorsque PHP fonctionne en mode fastcgi, ses permissions sont héritées de son programme hôte. Nous prenons apache comme exemple pour expliquer. Tout d'abord, nous devons trouver le compte sous lequel Apache est en cours d'exécution, puis utiliser vi ou vim pour modifier le fichier / etc / sudoers, et ajouter l'exemple de référence suivant au fichier. Dans le contenu suivant, utilisez d'abord la commande ps pour trouver le processus apache httpd, regardez les informations de compte sur le côté gauche du résultat renvoyé, puis modifiez le fichier sudoers pour ajouter une autorisation au compte apache.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Méthode de modification lors de l'exécution en mode php-fpm
Lorsqu'il est exécuté en mode php-fpm, il s'exécute comme un processus distinct. Nous trouvons donc d'abord son compte courant, puis effectuons les opérations d'autorisation comme ci-dessus.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Vérifiez que les modifications prennent effet
Après les opérations ci-dessus, nous avons modifié l'autorisation, mais elle n'a pas encore pris effet. Nous devons redémarrer le service pour que notre modification prenne effet. Selon notre situation actuelle, redémarrez le service apache ou php-fpm. Exécutez ensuite la commande exec pour afficher le résultat renvoyé. Si le résultat renvoyé est obtenu normalement, il réussit.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);