Linux-da exec komutunu icra etmək icazəsi olmayan PHP-nin həlli
Əlaqədar rəsmi istinadlar
PHP exec Linux sudoers file Sudo CommandsFastcgi rejimində işləyərkən dəyişikliklər
PHP fastcgi rejimində işləyərkən, icazə proqramları ana proqramdan miras qalır. Apache'yi izah etmək üçün bir nümunə götürürük. Əvvəlcə apache-nin işlədiyi hesabı tapmalı və sonra / etc / sudoers faylını düzəltmək üçün vi və ya vim istifadə etməli və aşağıdakı istinad nümunəsini fayla əlavə etməliyik. Aşağıdakı məzmunda əvvəlcə apa prosesi httpd-i tapmaq üçün ps əmrini istifadə edin, qaytarılmış nəticənin sol tərəfindəki hesab məlumatlarına baxın və sonra apa hesabına icazə əlavə etmək üçün sudoers faylını düzəldin.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Php-fpm rejimində işləyərkən dəyişikliklər
Php-fpm rejimində işləyərkən ayrı bir proses kimi işləyir. Beləliklə, əvvəlcə onun işləyən hesabını tapırıq və sonra yuxarıdakı kimi avtorizasiya əməliyyatları aparırıq.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Dəyişikliklərin qüvvəyə mindiyini yoxlayın
Yuxarıda göstərilən əməliyyatlardan sonra biz icazəni dəyişdirdik, lakin hələ qüvvəyə minməyib. Dəyişikliyin qüvvəyə minməsi üçün xidməti yenidən başlatmalıyıq. Həqiqi vəziyyətimizə görə apache və ya php-fpm xidmətini yenidən başladın. Sonra qaytarılmış nəticəni görmək üçün exec əmrini yerinə yetirin, əgər qaytarılmış nəticə normal alınırsa, uğurlu olur.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);