Apakah ada perintah untuk mengaktifkan / menonaktifkan ekstensi php dengan mudah dari baris perintah? (php.ini)
extension=x.so
untuk menonaktifkan x.
Apakah ada perintah untuk mengaktifkan / menonaktifkan ekstensi php dengan mudah dari baris perintah? (php.ini)
extension=x.so
untuk menonaktifkan x.
Jawaban:
Jika Anda menggunakan PHP5.4 + pada distro berbasis Debian Anda dapat menggunakan php5enmod untuk mengaktifkan dan php5dismod untuk menonaktifkan ekstensi PHP.
Anda dapat mengaktifkan ekstensi dari baris perintah menggunakan:
php -d extension=/path/to/extension.so
-d
digunakan untuk meneruskan nilai-nilai ini melalui baris perintah. Sayangnya tidak ada cara untuk menonaktifkan ekstensi pada baris perintah jika sudah dikonfigurasi dalam php.ini
file. (Anda dapat mengikuti jawaban lain tentu saja tetapi tidak ada yang dapat Anda lakukan dengan menggunakan -d
atau opsi apa pun dari php
perintah.)
Di Lubuntu saya butuhkan pdo_sqlite
.
Aktifkan secara manual:
$ sudo php5enmod pdo_sqlite
Jika tidak berhasil periksa:
$ ls /etc/php5/mods-available
Daftar hasil tidak ada pdo_sqlite.ini
. Kami harus menginstalnya.
$ sudo apt-get install php5-sqlite
Atau untuk php7:
$ sudo apt-get install php7-sqlite3
Ekstensi sqlite3
diaktifkan secara otomatis di CLI dan di Apache selama proses instalasi, dan sekarang kami memiliki mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Nonaktifkan ekstensi dengan:
$ sudo php5dismod pdo_sqlite
Anda dapat menentukan -n
agar tidak ada ekstensi yang dibuka php.ini
. Ini dapat meningkatkan beberapa kinerja ketika Anda menggunakan beberapa (misalnya XDebug). Misalnya
php -n -r "phpinfo();"
Anda harus menggunakan -n
dan kemudian menambahkan setiap ekstensi yang dibutuhkan menggunakan-dextension
Contoh:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Anda cukup menggunakan
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp ambil cadangan sebagai php.php.bkp dan tulis ke file asli
&& jika perintah pertama berhasil maka muat ulang layanan httpd.
tapi saya hanya perhatikan bahwa sed memberikan status keluar 0 ketika pencarian derai tidak cocok sehingga Anda dapat menggunakan
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"
Atau Anda dapat menggunakan skrip di bawah ini untuk mengaktifkan dan menonaktifkan:
#!/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
file. Mungkin beberapa modifikasi perlu dilakukan?
penggunaan: phpenmod [-v ALL | php_version] [-s ALL | sapi_name] module_name [module_name_2]
Jadi gunakan phpenmod -s cli yourextension
Semua file konfigurasi modul PHP yang diinstal tersedia di direktori / etc / php / PHP_VERSION / mods-available
awk
.)