কমান্ড লাইন থেকে পিএইচপি এক্সটেনশন সক্ষম / অক্ষম করার জন্য কোনও আদেশ আছে?


46

কমান্ড লাইন থেকে সহজেই কোনও পিএইচপি এক্সটেনশন সক্ষম / অক্ষম করার জন্য কোনও আদেশ রয়েছে? (Php.ini)


না, তবে কনফিগার (যেমন awk) পার্স এবং সংশোধন করতে আপনি এমন সরঞ্জামগুলি ব্যবহার করতে পারেন ।
জর্দানম

1
কেবল আমাদের php.ini এ এক্সটেনশানটি অক্ষম করার জন্য আপনি কী কনফিগার করেছেন তা আমাদের জানান যাতে আমরা কমান্ড লাইন থেকে সহজ করতে পারি
রাহুল পাতিল

@ রাহুলপাতিল আমি কেবল extension=x.soএক্স অক্ষম করার জন্য মন্তব্য করেছি ।
পিএইচপিস্ট

উত্তর:


27

আপনি যদি ডেবিয়ান ভিত্তিক ডিস্ট্রোতে পিএইচপি 5.4 + ব্যবহার করেন তবে আপনি পিএইচপি এক্সটেনশনগুলি অক্ষম করতে সক্ষম করতে php5enmod এবং php5dismod ব্যবহার করতে পারেন।


7
উল্লেখ্য /etc/php5/{apache2,cli,...}/conf.d/ মধ্যে যোগ / অপসারণ লিঙ্ক এই কাজ
পিয়ের-অলিভিয়ের Vares

1
@ পিয়েরে-অলিভিয়ারভেয়ারস এই মন্তব্যটি এখানে সত্যই প্রাসঙ্গিক তথ্য ছিল।
জাতেনেভ

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

অথবা পিএইচপি 7 এর জন্য:

$ sudo apt-get install php7-sqlite3

sqlite3ইনস্টলেশন প্রক্রিয়া চলাকালীন এক্সটেনশনটি সিএলআই এবং অ্যাপাচে স্বয়ংক্রিয়ভাবে সক্ষম হয়েছে এবং এখন আমাদের রয়েছে mods-available: pdo_sqlite.ini, sqlite3.ini

এর সাথে এক্সটেনশনটি অক্ষম করুন:

$ sudo php5dismod pdo_sqlite

4

-nযে কোনও এক্সটেনশন লোড হওয়া এড়াতে আপনি নির্দিষ্ট করতে পারেন php.ini। আপনি কিছু ব্যবহার করার সময় এটি (যেমন এক্সডিবুগ) কিছু পারফরম্যান্স উন্নত করতে পারে। যেমন

php -n -r "phpinfo();"

1
হোস্ট করা সার্ভারে কোনও এক্সটেনশন লোড করা থেকে রক্ষা করার কোনও উপায় (যেমন মেমক্যাচ করা হয়েছে), যদিও এটি প্রাথমিকভাবে সেট আপ করা আছে? আমি আমার হোস্ট সেটআপটি নিয়ন্ত্রণ করি না, এটিতে কেবল স্ক্রিপ্ট আছে। আমার সন্দেহ হচ্ছে এটি কোনওভাবে আমার সেশনগুলির সাথে জড়িয়ে যাচ্ছে এবং আমি সত্যিই এটি ব্যবহার না
করায়

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 পরিষেবাটি পুনরায় লোড করুন।

তবে আমি কেবল লক্ষ্য করেছি যে স্যাড প্যাটারের সাথে মেলে না এমন প্রস্থান স্থিতি 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ফাইলগুলিতে এক্সটেনশনও যুক্ত করা যেতে পারে । হয়তো কিছু সংশোধন করা দরকার?
GHugo

হ্যাঁ, এর জন্য আমাদেরও পরিবর্তন করা দরকার, আপনি কি কিছু চেষ্টা করেছেন?
রাহুল পাতিল

2

ব্যবহার: phpenmod [-v ALL | php_version] [-স সমস্ত | সাপি_নাম] মডিউল_নাম [মডিউল_নাম_2]

সুতরাং phpenmod -s ক্লাইপ আপনার এক্সটেনশন ব্যবহার করুন


এই কমান্ডটি স্ট্রেচের মতো নতুন দেবিয়ান সংস্করণে ব্যবহৃত হয়, যেখানে পিএইচপি 5 / পিএইচপি 7 পাশাপাশি পাশাপাশি চালানো যায়।
জ্যাকব হিউম

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.