Esiste un comando per abilitare / disabilitare un'estensione php facilmente dalla riga di comando? (Php.ini)
extension=x.so
per disabilitare x.
Esiste un comando per abilitare / disabilitare un'estensione php facilmente dalla riga di comando? (Php.ini)
extension=x.so
per disabilitare x.
Risposte:
Se stai usando PHP5.4 + sulla distro basata su Debian puoi usare php5enmod per abilitare e php5dismod per disabilitare le estensioni PHP.
È possibile abilitare un'estensione dalla riga di comando utilizzando:
php -d extension=/path/to/extension.so
-d
viene utilizzato per passare valori ini tramite la riga di comando. Sfortunatamente non c'è modo di disabilitare un'estensione sulla riga di comando se è stata configurata nel php.ini
file. (Puoi ovviamente seguire le altre risposte ma non c'è niente che tu possa fare usando -d
o qualunque opzione del php
comando.)
Su Lubuntu ne avevo bisogno pdo_sqlite
.
Abilita manualmente:
$ sudo php5enmod pdo_sqlite
Se non funziona controlla:
$ ls /etc/php5/mods-available
L'elenco dei risultati mancava pdo_sqlite.ini
. Dobbiamo installarlo.
$ sudo apt-get install php5-sqlite
O per php7:
$ sudo apt-get install php7-sqlite3
L'estensione sqlite3
è abilitata automaticamente nella CLI e in Apache durante il processo di installazione e ora abbiamo mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Disabilita l'estensione con:
$ sudo php5dismod pdo_sqlite
È possibile specificare -n
per evitare il caricamento di eventuali estensioni da php.ini
. Questo può migliorare alcune prestazioni quando ne usi alcune (ad es. XDebug). Per esempio
php -n -r "phpinfo();"
Devi usare -n
e poi aggiungere ogni estensione necessaria usando-dextension
Esempio:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Puoi semplicemente usare
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp prende il backup come php.php.bkp e scrive nel file originale
&& se il primo comando ha esito positivo, ricaricare il servizio httpd.
ma noto solo che sed dà lo stato di uscita 0 quando lo schema di ricerca non corrisponde, quindi puoi usarlo
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"
Oppure puoi usare lo script seguente per abilitare e disabilitare:
#!/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
file. Forse è necessario apportare alcune modifiche?
utilizzo: phpenmod [-v ALL | php_version] [-s ALL | nome_sapi] nome_modulo [nome_modulo_2]
Quindi usa phpenmod -s cli yourextension
Tutti i file di configurazione dei moduli PHP installati sono disponibili nella directory / etc / php / PHP_VERSION / mods-available
awk
.).