Lausn við PHP hefur ekki leyfi til að framkvæma exec stjórn á Linux

Tengdar opinberar tilvísanir

PHP exec Linux sudoers file Sudo Commands

Breytingar þegar keyrt er í fastcgi ham

Þegar PHP er í gangi í fastcgi-stillingu erfjast heimildir þess frá hýsingarforritinu. Við tökum apache sem dæmi til að útskýra. Í fyrsta lagi verðum við að finna reikninginn sem apache er í gangi undir og nota síðan vi eða vim til að breyta / etc / sudoers skránni og bæta eftirfarandi tilvísunardæmi við skrána. Í eftirfarandi efni skaltu fyrst nota ps skipunina til að finna apache ferlið httpd, skoða reikningsupplýsingarnar vinstra megin við skilaða niðurstöðu og breyta síðan sudoers skránni til að bæta heimild við apache reikninginn.

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

Breytingar þegar keyrt er í php-fpm ham

Þegar það er keyrt í php-fpm ham keyrir það sem sérstakt ferli. Svo við finnum fyrst hlaupareikninginn og framkvæmum síðan heimildaraðgerðir eins og að ofan.

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

Staðfestu að breytingarnar taki gildi

Eftir ofangreindar aðgerðir höfum við breytt heimildinni en hún hefur ekki enn tekið gildi. Við þurfum að endurræsa þjónustuna til að breytingar okkar taki gildi. Samkvæmt raunverulegri stöðu okkar skaltu endurræsa apache eða php-fpm þjónustuna. Framkvæmdu þá exec skipunina til að skoða skilaða niðurstöðu. Ef skilað niðurstaða fæst eðlilega er hún árangursrík.

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