Gibt es einen Befehl zum einfachen Aktivieren / Deaktivieren einer PHP-Erweiterung über die Befehlszeile? (php.ini)
extension=x.so
, um x zu deaktivieren.
Gibt es einen Befehl zum einfachen Aktivieren / Deaktivieren einer PHP-Erweiterung über die Befehlszeile? (php.ini)
extension=x.so
, um x zu deaktivieren.
Antworten:
Wenn Sie PHP5.4 + in einer Debian-basierten Distribution verwenden, können Sie mit php5enmod PHP-Erweiterungen aktivieren und mit php5dismod PHP-Erweiterungen deaktivieren.
Sie können eine Erweiterung über die Befehlszeile aktivieren, indem Sie Folgendes verwenden:
php -d extension=/path/to/extension.so
-d
wird verwendet, um INI-Werte über die Befehlszeile zu übergeben. Leider gibt es keine Möglichkeit, eine Erweiterung in der Befehlszeile zu deaktivieren, wenn sie in der php.ini
Datei konfiguriert wurde . (Sie können natürlich den anderen Antworten folgen, aber es gibt nichts, was Sie mit -d
oder mit welcher Option des php
Befehls tun können .)
Auf Lubuntu brauchte ich pdo_sqlite
.
Manuell aktivieren:
$ sudo php5enmod pdo_sqlite
Wenn es nicht funktioniert, überprüfen Sie:
$ ls /etc/php5/mods-available
Die Ergebnisliste fehlte pdo_sqlite.ini
. Wir müssen es installieren.
$ sudo apt-get install php5-sqlite
Oder für PHP7:
$ sudo apt-get install php7-sqlite3
Erweiterung sqlite3
wird automatisch aktiviert in CLI und in Apache während der Installation, und wir haben jetzt mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Erweiterung deaktivieren mit:
$ sudo php5dismod pdo_sqlite
Sie können angeben -n
, dass keine Erweiterungen geladen werden sollen php.ini
. Dies kann die Leistung verbessern, wenn Sie einige verwenden (z. B. XDebug). Z.B
php -n -r "phpinfo();"
Sie müssen -n
jede benötigte Erweiterung mit und dann mit anhängen-dextension
Beispiel:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Sie können einfach verwenden
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp Backup als php.php.bkp erstellen und in die Originaldatei schreiben
&& Wenn der erste Befehl erfolgreich ist, laden Sie den httpd-Dienst neu.
aber ich stelle nur fest, dass sed den Exit-Status 0 gibt, wenn das Suchmuster nicht übereinstimmt, damit Sie es verwenden können
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"
Oder Sie können das folgende Skript zum Aktivieren und Deaktivieren verwenden:
#!/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
Dateien hinzugefügt werden. Möglicherweise müssen einige Änderungen vorgenommen werden?
Verwendung: phpenmod [-v ALL | PHP-Version] [-s ALL | SAPI-Name] Modulname [Modulname_2]
Verwenden Sie also phpenmod -s cli yourextension
Alle installierten Konfigurationsdateien für PHP-Module sind im Verzeichnis / etc / php / PHP_VERSION / mods-available verfügbar
awk
. B. ).