Как я могу использовать файл drush.ini вместо глобального файла php.ini - Drush

Я устанавливаю и запускаю drush, как описано в этой статье: Мой сервер - cloudlinux и cagefs.drupal7

Drush Используйте глобальный файл php.ini вместо файла drish.ini, и эта проблема делает некоторые ошибки для функций open_basedir и disable_finctions.

когда я запускаю команду drush status. дайте мне следующее:

> The following restricted PHP modes have non-empty values:           
> [error] open_basedir and disable_functions. This configuration is
> incompatible with drush.  Please check your configuration settings in
> /opt/cpanel/ea-php56/root/etc/php.ini or in your drush.ini file; see
> examples/example.drush.ini for details. is_dir(): open_basedir
> restriction in effect.                        [warning]
> File(/usr/share/drush/commands) is not within the allowed path(s):
> (/home/:/usr/lib/php:/usr/local/lib/php:/usr/local/bin:/usr/share/drush:/usr/share/drush/commands:/etc:/tmp)
> preflight.inc:518  PHP configuration      : 
> /opt/cpanel/ea-php56/root/etc/php.ini
>                            /home/username/.drush/drush.ini  PHP OS                 :  Linux  Drush script           :  /usr/local/bin/drush  Drush
> version          :  8.1.9  Drush temp directory   :  /tmp  Drush
> configuration    :  Drush alias files      :

Так что для меня в drush используется /opt/cpanel/ea-php56/root/etc/php.ini вместо /home/username/.drush/drush.ini

Как я могу использовать файл drush.ini вместо файла php.ini сервера?

Я не хочу редактировать глобальный файл php.ini в целях безопасности.

1 ответ

Это довольно старый вопрос, но я подозреваю, что многие люди до сих пор ломают голову над ним. Вот решение, которое мне подходит (я использую Ubuntu linux 18.04, но это должно работать для любой системы unix).

  1. Создайте каталог, например /home/username/.drushrc
  2. В этом каталоге создайте файл с именем php.ini, содержащий настройки php, которые вы хотите переопределить. Например:

    disable_functions=
    open_basedir=
    
  3. В корневом каталоге Drupal создайте сценарий оболочки, например, с именем mydrush, содержащий:

    #!/bin/sh
    PHP_INI_SCAN_DIR=:/home/username/.drushrc ./drush $*
    

    Переменная среды PHP_INI_SCAN_DIR определяет дополнительные каталоги, в которых php будет искать файлы.ini при запуске. Двоеточие в начале назначения означает, что указанный вами каталог будет добавлен к существующему списку каталогов, который сканирует php.

  4. Сделайте свой сценарий оболочки исполняемым:

    $ chmod +x mydrush
    
  5. Теперь вы можете вызвать drush из корневого каталога документов, используя команду./mydrush, например:

    $ ./mydrush status
    

В качестве альтернативы вы можете установить переменную среды PHP_INI_SCAN_DIR в вашем файле ~/.bashrc. Это позволило бы избежать необходимости в файле mydrush, но изменило бы настройки инициализации php для каждого вызова php из командной строки, а не только при запуске Drush, и это может быть не тем, что вам нужно. Если вы все же измените ~/.bashrc, вам необходимо открыть новое окно, чтобы изменения вступили в силу.

Вы пытались добавить EXPORT PHP_INI="/home/username/.drush/drush.ini" в ваш файл.bashrc?

Другие вопросы по тегам