¿Hay algún comando para habilitar / deshabilitar una extensión php fácilmente desde la línea de comandos? (php.ini)
extension=x.so
para deshabilitar x.
¿Hay algún comando para habilitar / deshabilitar una extensión php fácilmente desde la línea de comandos? (php.ini)
extension=x.so
para deshabilitar x.
Respuestas:
Si está usando PHP5.4 + en la distribución basada en Debian, puede usar php5enmod para habilitar y php5dismod para deshabilitar las extensiones de PHP.
Puede habilitar una extensión desde la línea de comando usando:
php -d extension=/path/to/extension.so
-d
se utiliza para pasar valores ini a través de la línea de comando. Desafortunadamente, no hay forma de deshabilitar una extensión en la línea de comando si se ha configurado en el php.ini
archivo. (Puede seguir las otras respuestas, por supuesto, pero no hay nada que pueda hacer usando -d
o cualquier opción del php
comando).
En Lubuntu que necesitaba pdo_sqlite
.
Habilitar manualmente:
$ sudo php5enmod pdo_sqlite
Si no funciona, verifique:
$ ls /etc/php5/mods-available
Faltaba la lista de resultados pdo_sqlite.ini
. Tenemos que instalarlo.
$ sudo apt-get install php5-sqlite
O para php7:
$ sudo apt-get install php7-sqlite3
La extensión sqlite3
se habilita automáticamente en CLI y en Apache durante el proceso de instalación, y ahora tenemos mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Deshabilitar extensión con:
$ sudo php5dismod pdo_sqlite
Puede especificar -n
para evitar que se carguen extensiones php.ini
. Esto puede mejorar el rendimiento cuando está usando algo (por ejemplo, XDebug). P.ej
php -n -r "phpinfo();"
Tiene que usar -n
y luego agregar cada extensión necesaria usando-dextension
Ejemplo:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Simplemente puedes usar
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp realiza una copia de seguridad como php.php.bkp y escribe en el archivo original
&& si el primer comando es exitoso, vuelva a cargar el servicio httpd.
pero acabo de notar que se está dando el estado de salida 0 cuando el patrón de búsqueda no coincide para que pueda 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"
O puede usar el siguiente script para habilitar y deshabilitar:
#!/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
archivos. Tal vez alguna modificación debe hacerse?
uso: phpenmod [-v ALL | php_version] [-s ALL | sapi_name] nombre_módulo [nombre_módulo_2]
Entonces use phpenmod -s cli yourextension
Todos los archivos de configuración de los módulos PHP instalados están disponibles en el directorio / etc / php / PHP_VERSION / mods-available
awk
).