Как я могу использовать файл 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).
- Создайте каталог, например /home/username/.drushrc
В этом каталоге создайте файл с именем php.ini, содержащий настройки php, которые вы хотите переопределить. Например:
disable_functions= open_basedir=
В корневом каталоге Drupal создайте сценарий оболочки, например, с именем mydrush, содержащий:
#!/bin/sh PHP_INI_SCAN_DIR=:/home/username/.drushrc ./drush $*
Переменная среды PHP_INI_SCAN_DIR определяет дополнительные каталоги, в которых php будет искать файлы.ini при запуске. Двоеточие в начале назначения означает, что указанный вами каталог будет добавлен к существующему списку каталогов, который сканирует php.
Сделайте свой сценарий оболочки исполняемым:
$ chmod +x mydrush
Теперь вы можете вызвать drush из корневого каталога документов, используя команду./mydrush, например:
$ ./mydrush status
В качестве альтернативы вы можете установить переменную среды PHP_INI_SCAN_DIR в вашем файле ~/.bashrc. Это позволило бы избежать необходимости в файле mydrush, но изменило бы настройки инициализации php для каждого вызова php из командной строки, а не только при запуске Drush, и это может быть не тем, что вам нужно. Если вы все же измените ~/.bashrc, вам необходимо открыть новое окно, чтобы изменения вступили в силу.
Вы пытались добавить EXPORT PHP_INI="/home/username/.drush/drush.ini" в ваш файл.bashrc?