क्या कमांड लाइन से आसानी से php एक्सटेंशन को सक्षम / अक्षम करने के लिए कोई कमांड है? (Php.ini)
extension=x.so
x को अक्षम करने के लिए टिप्पणी करता हूं ।
क्या कमांड लाइन से आसानी से php एक्सटेंशन को सक्षम / अक्षम करने के लिए कोई कमांड है? (Php.ini)
extension=x.so
x को अक्षम करने के लिए टिप्पणी करता हूं ।
जवाबों:
यदि आप डेबियन आधारित डिस्ट्रो पर PHP5.4 + का उपयोग कर रहे हैं, तो आप PHP एक्सटेंशन को अक्षम करने के लिए php5enmod को सक्षम और php5dismod का उपयोग कर सकते हैं।
आप कमांड लाइन से एक्सटेंशन का उपयोग कर सकते हैं:
php -d extension=/path/to/extension.so
-d
कमांड लाइन के माध्यम से ini मानों को पास करने के लिए उपयोग किया जाता है। दुर्भाग्यवश कमांड लाइन पर एक एक्सटेंशन को अक्षम करने का कोई तरीका नहीं है अगर इसे php.ini
फ़ाइल में कॉन्फ़िगर किया गया है। (आप पाठ्यक्रम के अन्य उत्तरों का अनुसरण कर सकते हैं, लेकिन कुछ भी नहीं है जो आप कमांड -d
का उपयोग करके या जो कुछ भी कर सकते हैं php
।)
लुबंटू पर मुझे ज़रूरत थी 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
आप -n
किसी भी एक्सटेंशन से लोड करने से बचने के लिए निर्दिष्ट कर सकते हैं php.ini
। जब आप कुछ (जैसे XDebug) का उपयोग कर रहे हैं तो यह कुछ प्रदर्शन में सुधार कर सकता है। उदाहरण के लिए
php -n -r "phpinfo();"
आपको उपयोग करने के लिए -n
और फिर प्रत्येक आवश्यक एक्सटेंशन का उपयोग करना होगा-dextension
उदाहरण:
php -n -dextension=json.so -dextension=phar.so composer.phar update
आप बस उपयोग कर सकते हैं
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 $*
conf.d/*.ini
फाइलों में भी जोड़ा जा सकता है । शायद कुछ संशोधन करने की आवश्यकता है?
उपयोग: phpenmod [-v ALL | php_version] [-s ALL | sapi_name] मॉड्यूल_name [मॉड्यूल_name_2]
इसलिए phpenmod -s cli yourextension का उपयोग करें
सभी स्थापित PHP मॉड्यूल विन्यास फाइल / etc / php / PHP_VERSION / mods- उपलब्ध निर्देशिका के अंतर्गत उपलब्ध हैं
awk
)।