Lahendus, et PHP-l puudub luba käsu käivitamiseks Linuxis

Seotud ametlikud viited

PHP exec Linux sudoers file Sudo Commands

Fastcgi režiimis töötamise muudatused

Kui PHP töötab fastcgi-režiimis, päritakse selle õigused hostiprogrammist. Selgitamiseks võtame näiteks apache. Kõigepealt peame leidma konto, mille all apache töötab, ja seejärel kasutage vi või vim faili / etc / sudoers muutmiseks ja lisage failile järgmine viide. Järgmises sisus leidke kõigepealt apache-protsessi httpd leidmiseks käsk ps, vaadake tagastatud tulemuse vasakus servas olevat kontoteavet ja muutke seejärel sudoersi faili apache-kontole volituse lisamiseks.

            ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
        

Muudatused, kui töötate režiimis php-fpm

Kui töötate režiimis php-fpm, töötab see eraldi protsessina. Nii leiame kõigepealt selle jooksva konto ja seejärel teostame autoriseerimistoimingud, nagu eespool kirjeldatud.

            ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
        

Veenduge, et muudatused jõustuvad

Pärast ülaltoodud toiminguid oleme volitust muutnud, kuid see pole veel jõustunud. Muudatuse jõustumiseks peame teenuse taaskäivitama. Meie tegeliku olukorra kohaselt taaskäivitage apache või php-fpm teenus. Seejärel täitke tagastatud tulemuse kuvamiseks käsk exec. Kui tagastatud tulemus saadakse tavaliselt, on see edukas.

            exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);