Czy jest jakieś polecenie, aby łatwo włączyć / wyłączyć rozszerzenie php z wiersza poleceń? (php.ini)
extension=x.so
aby wyłączyć x.
Czy jest jakieś polecenie, aby łatwo włączyć / wyłączyć rozszerzenie php z wiersza poleceń? (php.ini)
extension=x.so
aby wyłączyć x.
Odpowiedzi:
Jeśli używasz PHP5.4 + na dystrybucji opartej na Debianie, możesz użyć php5enmod, aby włączyć i php5dismod, aby wyłączyć rozszerzenia PHP.
Możesz włączyć rozszerzenie z wiersza poleceń, używając:
php -d extension=/path/to/extension.so
-d
służy do przekazywania wartości ini przez wiersz poleceń. Niestety nie ma możliwości wyłączenia rozszerzenia w wierszu poleceń, jeśli zostało skonfigurowane w php.ini
pliku. (Oczywiście możesz postępować zgodnie z innymi odpowiedziami, ale nie możesz nic zrobić, używając żadnej -d
opcji php
polecenia).
Na Lubuntu potrzebowałem pdo_sqlite
.
Włącz ręcznie:
$ sudo php5enmod pdo_sqlite
Jeśli nie działa, sprawdź:
$ ls /etc/php5/mods-available
Brak listy wyników pdo_sqlite.ini
. Musimy to zainstalować.
$ sudo apt-get install php5-sqlite
Lub dla php7:
$ sudo apt-get install php7-sqlite3
Rozszerzenie sqlite3
jest automatycznie włączane w CLI i Apache podczas procesu instalacji, a teraz mamy mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Wyłącz rozszerzenie za pomocą:
$ sudo php5dismod pdo_sqlite
Możesz określić, -n
aby uniknąć ładowania z rozszerzeń php.ini
. Może to poprawić wydajność podczas korzystania z niej (np. XDebug). Na przykład
php -n -r "phpinfo();"
Musisz użyć, -n
a następnie dołączyć każde potrzebne rozszerzenie za pomocą-dextension
Przykład:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Możesz po prostu użyć
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp weź kopię zapasową jako php.php.bkp i zapisz w oryginalnym pliku
&& jeśli pierwsze polecenie zakończy się powodzeniem, przeładuj usługę httpd.
ale zauważam, że sed daje status wyjścia 0, gdy tupot wyszukiwania nie pasuje, więc możesz użyć
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"
Lub możesz użyć poniższego skryptu do włączania i wyłączania:
#!/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
plikach. Może trzeba zmodyfikować?
użycie: phpenmod [-v ALL | php_version] [-s ALL | sapi_name] nazwa_modułu [nazwa_modułu_2]
Więc użyj phpenmod -s cli yourextension
Wszystkie zainstalowane pliki konfiguracyjne modułów PHP są dostępne w katalogu / etc / php / PHP_VERSION / mods-available
awk
.).