Y at-il une commande pour activer / désactiver une extension php facilement en ligne de commande? (php.ini)
extension=x.so
pour désactiver x.
Y at-il une commande pour activer / désactiver une extension php facilement en ligne de commande? (php.ini)
extension=x.so
pour désactiver x.
Réponses:
Si vous utilisez PHP 5.4 + sur une distribution basée sur Debian, vous pouvez utiliser php5enmod pour activer et php5dismod pour désactiver les extensions PHP.
Vous pouvez activer une extension à partir de la ligne de commande en utilisant:
php -d extension=/path/to/extension.so
-d
est utilisé pour transmettre les valeurs ini via la ligne de commande. Malheureusement, il n’ya aucun moyen de désactiver une extension sur la ligne de commande si elle a été configurée dans le php.ini
fichier. (Vous pouvez bien sûr suivre les autres réponses, mais vous ne pouvez rien utiliser à l’aide de l’ -d
option ou de n’importe quelle option de la php
commande.)
Sur Lubuntu j'avais besoin pdo_sqlite
.
Activer manuellement:
$ sudo php5enmod pdo_sqlite
Si ne fonctionne pas, vérifiez:
$ ls /etc/php5/mods-available
La liste de résultats était manquante pdo_sqlite.ini
. Nous devons l'installer.
$ sudo apt-get install php5-sqlite
Ou pour php7:
$ sudo apt-get install php7-sqlite3
L'extension sqlite3
est activée automatiquement dans la CLI et dans Apache lors du processus d'installation. Nous avons maintenant mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Désactiver l'extension avec:
$ sudo php5dismod pdo_sqlite
Vous pouvez spécifier -n
pour éviter le chargement des extensions php.ini
. Cela peut améliorer certaines performances lorsque vous en utilisez (par exemple, XDebug). Par exemple
php -n -r "phpinfo();"
Vous devez utiliser -n
puis ajouter chaque extension nécessaire en utilisant-dextension
Exemple:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Vous pouvez simplement utiliser
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp prend la sauvegarde en tant que php.php.bkp et écrit dans le fichier original
&& Si la première commande aboutit, rechargez le service httpd.
mais je viens de noter que sed donnant le statut de sortie 0 lorsque la recherche ne correspond pas, vous pouvez donc utiliser
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 vous pouvez utiliser le script ci-dessous pour activer et désactiver:
#!/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
fichiers. Peut-être que quelques modifications doivent être faites?
utilisation: phpenmod [-v ALL | version_php] [-s ALL | nom_ sapi] nom_module [nom_module_2]
Alors utilisez phpenmod -s cli yourextension
Tous les fichiers de configuration des modules PHP installés sont disponibles dans le répertoire / etc / php / PHP_VERSION / mods-available
awk
).