कमांड लाइन से php एक्सटेंशन को एनेबल / डिसेबल करने के लिए कोई कमांड है?


46

क्या कमांड लाइन से आसानी से php एक्सटेंशन को सक्षम / अक्षम करने के लिए कोई कमांड है? (Php.ini)


नहीं, लेकिन ऐसे उपकरण हैं जिनका उपयोग आप पार्स और कॉन्फिगर को संशोधित करने के लिए कर सकते हैं (जैसे awk)।
जोर्डन

1
बस हमें बताएं कि आप php.ini में अक्षम एक्सटेंशन को क्या कॉन्फ़िगर करते हैं ताकि हम कमांड लाइन से आसान कर सकें
राहुल पाटिल

@RahulPatil मैं सिर्फ extension=x.sox को अक्षम करने के लिए टिप्पणी करता हूं ।
पीएचपी

जवाबों:


27

यदि आप डेबियन आधारित डिस्ट्रो पर PHP5.4 + का उपयोग कर रहे हैं, तो आप PHP एक्सटेंशन को अक्षम करने के लिए php5enmod को सक्षम और php5dismod का उपयोग कर सकते हैं।


7
नोट /etc/php5/{apache2,cli,...}/conf.d/ में जोड़ने / हटाने के लिंक से इस काम करता है
पियरे-ओलिवर Vares

1
@ पियरे-ओलिवियरवेयर यह टिप्पणी यहाँ वास्तव में प्रासंगिक जानकारी थी।
Xatenev

14

आप कमांड लाइन से एक्सटेंशन का उपयोग कर सकते हैं:

php -d extension=/path/to/extension.so

-dकमांड लाइन के माध्यम से ini मानों को पास करने के लिए उपयोग किया जाता है। दुर्भाग्यवश कमांड लाइन पर एक एक्सटेंशन को अक्षम करने का कोई तरीका नहीं है अगर इसे php.iniफ़ाइल में कॉन्फ़िगर किया गया है। (आप पाठ्यक्रम के अन्य उत्तरों का अनुसरण कर सकते हैं, लेकिन कुछ भी नहीं है जो आप कमांड -dका उपयोग करके या जो कुछ भी कर सकते हैं php।)


8

लुबंटू पर मुझे ज़रूरत थी pdo_sqlite

मैन्युअल रूप से सक्षम करें:

$ sudo php5enmod pdo_sqlite

अगर काम नहीं करता है:

$ ls /etc/php5/mods-available

रिजल्ट लिस्ट गायब थी pdo_sqlite.ini। हमें इसे स्थापित करना होगा।

$ sudo apt-get install php5-sqlite

या php7 के लिए:

$ sudo apt-get install php7-sqlite3

sqlite3इंस्टालेशन प्रक्रिया के दौरान CLI और Apache में एक्सटेंशन ऑटो-इनेबल्ड है, और अब हमारे पास है mods-available: pdo_sqlite.ini,, sqlite3.ini

इसके साथ एक्सटेंशन अक्षम करें:

$ sudo php5dismod pdo_sqlite

4

आप -nकिसी भी एक्सटेंशन से लोड करने से बचने के लिए निर्दिष्ट कर सकते हैं php.ini। जब आप कुछ (जैसे XDebug) का उपयोग कर रहे हैं तो यह कुछ प्रदर्शन में सुधार कर सकता है। उदाहरण के लिए

php -n -r "phpinfo();"

1
किसी एक्सटेंशन को लोड करने से रोकने के लिए कोई तरीका (जैसे मेमेकैच्ड) को होस्ट किए गए सर्वर पर लोड करने से रोका जा सकता है, हालांकि इसे शुरू में सेट किया गया है? मैं अपने होस्ट सेटअप को नियंत्रित नहीं करता, बस इस पर स्क्रिप्ट लिखता हूं। मुझे संदेह है कि यह किसी तरह मेरे सत्रों के साथ खिलवाड़ कर रहा है और यह सुनिश्चित करना चाहूंगा कि यह बंद है क्योंकि मैं वास्तव में इसका उपयोग नहीं करता हूं ..
userfuser

3

आपको उपयोग करने के लिए -nऔर फिर प्रत्येक आवश्यक एक्सटेंशन का उपयोग करना होगा-dextension

उदाहरण:

php -n -dextension=json.so -dextension=phar.so composer.phar update

2

आप बस उपयोग कर सकते हैं

sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload

-i.bkp php.php.bkp के रूप में बैकअप लें और मूल फ़ाइल में लिखें

&& यदि पहली कमांड सफलता है तो httpd सेवा पुनः लोड करें।

लेकिन मुझे सिर्फ इतना ध्यान है कि जब आप उपयोग कर सकते हैं तो खोज पट्टिका मैच से बाहर नहीं होने वाली sed स्टेटस 0 से मेल खाती है

php_ini=/path/of/php.ini
__module=x.so
grep -q "^extension=$__module" $php_ini && { 
        sed -i.bkp "s/^extension=$__module/# extension=$__module/" $php_ini && 
        echo /etc/init.d/httpd reload; } || echo "cannot make requested change"

या आप स्क्रिप्ट को सक्षम और अक्षम करने के लिए उपयोग कर सकते हैं:

#!/bin/bash

php_ini=/path/of/php.ini
__module="$2"


[[ ! -f $php_ini ]] && { echo "Error: Can not found $php_ini" >&2; 
                         echo "Please define php.ini path in $php_ini"; 
                         exit 1; }

[[  -z $__module ]] && { echo "Error: Please Type Module Name:" >&2; 
                          exit 1; }

show_help(){
cat <<_EOF
        Usage:    To enable :
                  $0 -ie  <modulename>

                  To disable :
                  $0 -id  <modulename>

        example:
                  $0 -i xyz.so
_EOF

}

do_enable() {
grep -Eq "# extension=$__module$" $php_ini && {
sed -i.bkp "s/^# extension\=$__module$/extension=$__module/" $php_ini &&
echo /etc/init.d/httpd reload; echo "Changes Successfully Done"; } || echo "cannot make requested change"
}

do_disable() {
grep -q "^extension=$__module" $php_ini && {
sed -i.bkp "s/^extension=$__module/# extension=$__module/" $php_ini &&
echo /etc/init.d/httpd reload; echo "Changes Successfully Done"; } || echo "cannot make requested change"
}

Main() {

case $1 in
        -ie) do_enable ;;
        -id) do_disable ;;
         *) show_help ;;
esac
}

Main $*

2
एक्सटेंशन को conf.d/*.iniफाइलों में भी जोड़ा जा सकता है । शायद कुछ संशोधन करने की आवश्यकता है?
घुगो

हां, हमें उसी के लिए बदलाव करने की जरूरत है, क्या आपने कुछ भी करने की कोशिश की है?
राहुल पाटिल

2

उपयोग: phpenmod [-v ALL | php_version] [-s ALL | sapi_name] मॉड्यूल_name [मॉड्यूल_name_2]

इसलिए phpenmod -s cli yourextension का उपयोग करें


इस कमांड का उपयोग स्ट्रेच जैसे नए डेबियन संस्करणों में किया जाता है, जहां PHP5 / PHP7 को एक साथ चलाया जा सकता है।
जैकब ह्यूम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.