มีคำสั่งให้เปิดใช้งาน / ปิดใช้งานส่วนขยาย php ได้อย่างง่ายดายจากบรรทัดคำสั่งหรือไม่ (php.ini)
extension=x.so
เพื่อปิดการใช้งาน x
มีคำสั่งให้เปิดใช้งาน / ปิดใช้งานส่วนขยาย php ได้อย่างง่ายดายจากบรรทัดคำสั่งหรือไม่ (php.ini)
extension=x.so
เพื่อปิดการใช้งาน x
คำตอบ:
หากคุณใช้ PHP5.4 + ใน Distro based Debian คุณสามารถใช้ php5enmod เพื่อเปิดใช้งานและ php5dismod เพื่อปิดใช้งานส่วนขยาย PHP
คุณสามารถเปิดใช้งานส่วนขยายจากบรรทัดคำสั่งโดยใช้:
php -d extension=/path/to/extension.so
-d
ใช้ในการส่งค่า ini ผ่านทางบรรทัดคำสั่ง น่าเสียดายที่ไม่มีวิธีการปิดใช้งานส่วนขยายในบรรทัดคำสั่งหากมีการกำหนดค่าไว้ในphp.ini
ไฟล์ (คุณสามารถปฏิบัติตามคำตอบอื่น ๆ ของหลักสูตร แต่ไม่มีอะไรที่คุณสามารถทำได้โดยใช้-d
หรือตัวเลือกใด ๆ ของphp
คำสั่ง)
เมื่อวันที่ Lubuntu 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] module_name [module_name_2]
ดังนั้นใช้ phpenmod -s cli yourextension
ไฟล์การกำหนดค่าโมดูล PHP ที่ติดตั้งทั้งหมดนั้นมีอยู่ใน / etc / php / PHP_VERSION / mods-available directory
awk
)