PHP के समाधान के लिए Linux पर कमांड निष्पादित करने की अनुमति नहीं है

संबंधित आधिकारिक संदर्भ

PHP exec Linux sudoers file Sudo Commands

फास्टैगी मोड में चलने पर संशोधन

जब PHP Fastcgi मोड में चल रहा होता है, तो इसकी अनुमति इसके होस्ट प्रोग्राम से विरासत में मिलती है। हम उदाहरण के रूप में समझाने के लिए अपाचे लेते हैं। पहले, हमें उस खाते को खोजने की आवश्यकता है जिसके तहत अपाचे चल रहा है, और फिर / etc / sudoers फ़ाइल को संपादित करने के लिए vi या vim का उपयोग करें, और फ़ाइल में निम्न संदर्भ उदाहरण जोड़ें। निम्नलिखित सामग्री में, पहले Apache प्रक्रिया को खोजने के लिए ps कमांड का उपयोग करें httpd, लौटे परिणाम के बाईं ओर खाता जानकारी देखें, और फिर Apache खाते में प्राधिकरण जोड़ने के लिए sudoers फ़ाइल को संपादित करें।

            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
        

सत्यापित करें कि परिवर्तन प्रभावी हैं

उपरोक्त संचालन के बाद, हमने प्राधिकरण को संशोधित किया है, लेकिन यह अभी तक प्रभावी नहीं हुआ है। हमें अपने संशोधन को प्रभावी बनाने के लिए सेवा को पुनः आरंभ करने की आवश्यकता है। हमारी वास्तविक स्थिति के अनुसार, अपाचे या php-fpm सेवा को पुनः आरंभ करें। फिर दिए गए परिणाम को देखने के लिए निष्पादन कमांड को निष्पादित करें। यदि लौटा हुआ परिणाम सामान्य रूप से प्राप्त होता है, तो यह सफल होता है।

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