Чи є якась команда для того, щоб увімкнути / вимкнути розширення php легко з командного рядка? (php.ini)
extension=x.so
щоб відключити х.
Чи є якась команда для того, щоб увімкнути / вимкнути розширення php легко з командного рядка? (php.ini)
extension=x.so
щоб відключити х.
Відповіді:
Якщо ви використовуєте PHP5.4 + в дистрибутиві на базі 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
файли. Може бути, якусь модифікацію потрібно зробити?
Усі встановлені файли конфігурації модулів PHP доступні в каталозі / etc / php / PHP_VERSION / mods
awk
).