PHP- ի լուծում Linux- ում exec հրամանը կատարելու թույլտվություն չունենալու համար
Առնչվող պաշտոնական հղումներ
PHP exec Linux sudoers file Sudo CommandsՓոփոխություններ fastcgi ռեժիմով աշխատելու ժամանակ
Երբ PHP- ն աշխատում է fastcgi ռեժիմում, դրա թույլտվությունները փոխանցվում են իր ընդունող ծրագրից: Բացատրելու համար որպես օրինակ վերցնենք apache- ն: Նախ, մենք պետք է գտնենք այն հաշիվը, որի տակ աշխատում է 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 հրամանը ՝ վերադարձված արդյունքը դիտելու համար: Եթե վերադարձված արդյունքը ստացվում է սովորաբար, այն հաջող է:
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);