Есть ли какая-либо команда для легкого включения / отключения расширения 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
команды.)
На Лубунту мне нужно было 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] имя_модуля [имя_модуля_2]
Так что используйте phpenmod -s cli yourextension
Все установленные файлы конфигурации модулей PHP доступны в каталоге / etc / php / PHP_VERSION / mods-available.
awk
).