Страница 1 из 1

Используем встроенный Composer с включённой защитой от внешнего доступа

Добавлено: 21 авг 2018, 16:13
Vovencia
Входные данные:
  • Open Server чисто развёрнутый
  • Использовалась консоль встроенная в OpenServer (Контекстное меню => Дополнительно => Консоль) с выбранной cmd.exe в роли консоли (git bash не хочешь запускать bat файлы без расширения [например composer] + Environment Variable не совсем корректно подменялись)
  • Включённая защита от внешнего доступа
Столкнулся я с такой ошибкой (когда включена защита от внешнего доступа):
[ErrorException] file_exists(): open_basedir restriction in effect. File(C:/Users/<USER_NAME>/AppData/Roaming/Composer/.htaccess) is not within the allowed path(s): (<Корневая папка доменов>;<путь до OSPanel>/userdata/temp;<путь до OSPanel>/modules/system/html/openserver;<путь до OSPanel>/modules/php/PHP-7.1-x64)
Пробовал править php.ini, но это не помогло..
Отключать защиту не хотелось.. мало ли что может сделать код с системой..
Использовать внешний php казалось нецелесообразным..

Решение нашлось при просмотре кода composer.phar .. оказалось то, что код берёт переменную "COMPOSER_HOME"
getenv('COMPOSER_HOME')
и если её нет то обращается к
rtrim(strtr(getenv('APPDATA'), '\\', '/'), '/') . '/Composer';
что и вызывает ошибку..
Чтобы это исправить нужно отредактировать <путь до OSPanel>/modules/php/<версия php>/composer.bat следующим образом:
SET COMPOSER_HOME=%PHP_DIR%composer
@"%PHP_BIN%" -d output_buffering=0 "%PHP_DIR%composer.phar" %* 
Спасибо за внимание :roll: