Решение за PHP што нема дозвола за извршување на командата за извршување на Linux

Поврзани официјални препораки

PHP exec Linux sudoers file Sudo Commands

Измени кога работите во режим на брз пристап

Кога PHP работи во режим fastcgi, неговите дозволи се наследуваат од нејзината програма домаќин. Земаме апачи како пример за објаснување. Прво, треба да ја пронајдеме сметката под која работи apache, а потоа да користиме vi или vim за да ја уредиме датотеката / etc / sudoers и да го додадеме следниов референтен пример во датотеката. Во следната содржина, прво користете ја командата ps за да го пронајдете процесот на apache httpd, погледнете ги информациите за сметката од левата страна на вратениот резултат и потоа изменете ја датотеката sudoers за да додадете овластување на сметката за apache.

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

Измени кога работите во режим php-fpm

Кога работи во режим php-fpm, тој работи како посебен процес. Значи, прво ја наоѓаме нејзината сметка што работи, а потоа извршуваме операции за овластување како погоре.

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

Потврдете дека промените стапуваат на сила

По горенаведените операции, го изменивме овластувањето, но сè уште не стапи на сила. Треба да ја рестартираме услугата за да извршиме измената да стапи на сила. Според нашата реална состојба, рестартирајте ја услугата apache или php-fpm. Потоа извршете ја наредбата за извршување за да го видите вратениот резултат.Ако вратениот резултат се добие нормално, тој е успешен.

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