Там какая-либо команда должна позволить/запретить php расширение из командной строки?

Если бы Вы просто ищете Выбор - я предложил бы, добираются на использование SmartOS (Ветвление OpenSolaris группой Joyent и спортивной активной разработкой, сообществом и поддержкой), Имеет все необходимые инструменты, которые должна иметь современная Операционная система.

Ссылка: http://smartos.org

47
26.02.2013, 06:30
7 ответов

Можно просто использовать

sed -i.bkp 's/^extension=x.so/# extension=x.so/' /path/of/php.ini && /etc/init.d/httpd reload

- i.bkp берут резервное копирование в качестве php.php.bkp и пишут в в исходный файл

&&, если первая команда является успехом затем, перезагружают httpd сервис.

но я просто замечаю, что sed предоставление статуса выхода 0, когда поисковая скороговорка не соответствуют так Вам, может использовать

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"

Или можно использовать ниже сценария для разрешения и отключить:

#!/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 $*
2
27.01.2020, 19:34
  • 1
    Расширение могло также быть включено conf.d/*.ini файлы. Возможно, некоторая модификация должна быть сделана? –  GHugo 28.03.2013, 13:21
  • 2
    Да, мы должны сделать изменения для того же, Вы попробовали что-нибудь? дата –  Rahul Patil 28.03.2013, 21:11

Если вы используете PHP5.4+ на дистрибутиве Debian, вы можете использовать php5enmod для включения и php5dismod для отключения расширений PHP.

27
27.01.2020, 19:34

Вы можете включить расширение из командной строки, используя:

php -d extension=/path/to/extension.so

-D используется для передачи значений INI через командную строку. К сожалению, нет способа отключить расширение в командной строке, если она была настроена в файле php.ini . (Вы можете следить за другими ответами, конечно, но нет ничего, что вы можете сделать, используя -D или любой вариант команды .)

15
27.01.2020, 19:34

Вы можете указать -n , чтобы избежать загрузки любых расширений из php.ini . Это может улучшить производительность при использовании некоторых из них (например, XDebug). Например.

php -n -r "phpinfo();"
4
27.01.2020, 19:34

Вы должны использовать -n , а затем добавлять каждое необходимое расширение с помощью -dextension

Пример:

php -n -dextension=json.so -dextension=phar.so composer.phar update
3
27.01.2020, 19:34

В Lubuntu мне нужен был pdo_sqlite .

Включить вручную:

$ sudo php5enmod pdo_sqlite

Если не работает проверка:

$ ls /etc/php5/mods-available

Список результатов отсутствует pdo_sqlite.ini . Мы должны его установить.

$ sudo apt-get install php5-sqlite

Или для php7:

$ sudo apt-get install php7-sqlite3

Расширение sqlite3 автоматически включается в CLI и в Apache во время процесса установки, и теперь у нас есть доступные моды : pdo_sqlite. ini , sqlite3.ini .

Отключить добавочный номер с помощью:

$ sudo php5dismod pdo_sqlite
8
27.01.2020, 19:34

Пожалуйста, проверьте это

Все файлы конфигурации установленных модулей PHP доступны в /etc/php/PHP _VERSION/mods -доступный каталог

0
27.01.2020, 19:34

Теги

Похожие вопросы