Bir php uzantısını komut satırından kolayca etkinleştirmek / devre dışı bırakmak için herhangi bir komut var mı? (Php.ini)
extension=x.so
devre dışı bırakmak için yorum yapıyorum .
Bir php uzantısını komut satırından kolayca etkinleştirmek / devre dışı bırakmak için herhangi bir komut var mı? (Php.ini)
extension=x.so
devre dışı bırakmak için yorum yapıyorum .
Yanıtlar:
Debian tabanlı dağıtımda PHP5.4 + kullanıyorsanız, PHP uzantılarını devre dışı bırakmak için php5enmod ve php5dismod komutlarını kullanabilirsiniz.
Aşağıdakileri kullanarak komut satırından bir uzantıyı etkinleştirebilirsiniz:
php -d extension=/path/to/extension.so
-d
ini değerlerini komut satırı üzerinden iletmek için kullanılır. Ne yazık ki, php.ini
dosyada yapılandırılmışsa, komut satırında bir uzantıyı devre dışı bırakmanın bir yolu yoktur . (Elbette diğer cevapları takip edebilirsiniz ancak komutun -d
herhangi bir seçeneğini veya ne kullanarak yapabileceğinizi hiçbir şey yapamazsınız php
.)
Lubuntu'da ihtiyacım vardı pdo_sqlite
.
Manuel olarak etkinleştir:
$ sudo php5enmod pdo_sqlite
Çalışmıyorsa kontrol edin:
$ ls /etc/php5/mods-available
Sonuç listesi eksikti pdo_sqlite.ini
. Yüklemeliyiz.
$ sudo apt-get install php5-sqlite
Veya php7 için:
$ sudo apt-get install php7-sqlite3
Uzantı sqlite3
, yükleme işlemi sırasında CLI'de ve Apache'de otomatik olarak etkindir ve şimdi elimizde mods-available
: pdo_sqlite.ini
, sqlite3.ini
.
Uzantıyı şu şekilde devre dışı bırak:
$ sudo php5dismod pdo_sqlite
-n
Eklentilerin yüklenmesini önlemek için belirtebilirsiniz php.ini
. Bu, bazılarını kullanırken bazı performansı artırabilir (örneğin, XDebug). Örneğin
php -n -r "phpinfo();"
Kullanmanız gereken -n
her uzantıyı eklemek için sonra kullanmanız gerekir.-dextension
Örnek:
php -n -dextension=json.so -dextension=phar.so composer.phar update
Sadece kullanabilirsiniz
sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload
-i.bkp php.php.bkp olarak yedeği alın ve orijinal dosyaya yazın
&& eğer ilk komut başarılıysa httpd servisini yeniden yükleyin.
ama fark ettim ki, arama pıtırmanı eşleşmediğinde sed'in 0 statüsünü verdiğini görebiliyorum.
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"
Veya etkinleştirmek ve devre dışı bırakmak için aşağıdaki betiği kullanabilirsiniz:
#!/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
dosyalara eklenebilir . Belki bazı değişiklik yapılması gerekiyor?
kullanım: phpenmod [-v ALL | php_version] [-s ALL | sapi_name] module_name [module_name_2]
Yani phpenmod -s cli yourextension kullanın.
Tüm kurulu PHP modülleri konfigürasyon dosyaları / etc / php / PHP_VERSION / mods-available dizininde bulunur.
awk
) 'I ayrıştırmak ve değiştirmek için kullanabileceğiniz araçlar var .