Existe algum comando para ativar / desativar uma extensão php facilmente na linha de comando? (php.ini)
extension=x.so
para desativar o x.
Existe algum comando para ativar / desativar uma extensão php facilmente na linha de comando? (php.ini)
extension=x.so
para desativar o x.
Respostas:
Se você estiver usando o PHP5.4 + na distribuição baseada no Debian, poderá usar o php5enmod para ativar e o php5dismod para desativar as extensões PHP.
Você pode habilitar uma extensão na linha de comando usando:
php -d extension=/path/to/extension.so
-d
é usado para transmitir valores ini através da linha de comando. Infelizmente, não há como desativar uma extensão na linha de comando se ela tiver sido configurada no php.ini
arquivo. (Você pode seguir as outras respostas, é claro, mas não há nada que possa fazer usando -d
ou qualquer outra opção do php
comando.)
No Lubuntu eu precisava pdo_sqlite
.
Ativar manualmente:
$ sudo php5enmod pdo_sqlite
Se não funcionar, verifique:
$ ls /etc/php5/mods-available
A lista de resultados estava ausente pdo_sqlite.ini
. Temos que instalá-lo.
$ sudo apt-get install php5-sqlite
Ou para php7:
$ sudo apt-get install php7-sqlite3
A extensão sqlite3
é ativada automaticamente na CLI e no Apache durante o processo de instalação e agora temos mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Desativar extensão com:
$ sudo php5dismod pdo_sqlite
Você pode especificar -n
para evitar o carregamento de qualquer extensão php.ini
. Isso pode melhorar um pouco o desempenho quando você estiver usando alguns (por exemplo, XDebug). Por exemplo
php -n -r "phpinfo();"
Você precisa usar -n
e depois anexar cada extensão necessária usando-dextension
Exemplo:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Você pode simplesmente usar
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp faça backup como php.php.bkp e grave no arquivo original
&& se o primeiro comando for bem-sucedido, recarregue o serviço httpd.
mas noto que o sed está dando o status de saída 0 quando o padrão de pesquisa não corresponde para que você possa usar
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"
Ou você pode usar o script abaixo para ativar e desativar:
#!/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
arquivos. Talvez algumas modificações precisem ser feitas?
uso: phpenmod [-v ALL | php_version] [-s ALL | sapi_name] module_name [module_name_2]
Então use phpenmod -s cli yourextension
Todos os arquivos de configuração dos módulos PHP instalados estão disponíveis no diretório / etc / php / PHP_VERSION / mods-available
awk
).