[Решено] VestaCP (Vesta) open_basedir restriction in effect или правка любых опций в конфигах

У панели управления Vesta запрещен инклуд в папки отличные от %docroot% и %home%/%user%/tmp, поэтому если вам необходимо заинклудить любой файл выше чем public_html, то получится облом в виде

Warning: include(): open_basedir restriction in effect. File(/home/admin/web/includetest.php) is not within the allowed path(s): (/home/admin/web/*******/public_html:/home/admin/tmp) in /home/admin/web/*******/public_html/include.php on line 7

Решений в данном случае несколько.

Вариант №1 — поправить конфиг апача, он же «костыль» (ну куда же без него 🙂 )

Идем в

/home/admin/config/web

, ищем файл *.conf с именем домена, открываем, ищем строку php_admin_value open_basedir и дописываем в конец через двоеточие нужный путь, перегружаем апач (или сервер) и все работает … но ровно до того момента, пока Vesta не сделает ребилд конфигов, например при изменении шаблона, поэтому более правильным является вариант №2

Вариант №2 — изменить шаблон генерации конфига домена

Сначала посмотрите на каком шаблоне  работают ваши сайты, для этого необходимо перейти в раздел Web и посмотреть «Шаблон Web» для любого домена.

У меня он называется default, у вас он конечно может называться по другому.

Далее переходим в

/usr/local/vesta/data/templates/web/apache2/

открываем файлы файл default.tpl (или default.stpl для https)  и добавляем нужные пути после php_admin_value open_basedir, при этот можно использовать переменные, в принципе по конфигу их назначение понятно , например если я хочу добавить каталог где лежат все домены я напишу %home%/%user%.

Далее ребилдим конфиги доменов, открываем список пользователей, выделяем пользователя, и в меню выбираем пересоздать Web

И все работает!

P.S. Если же нужно выполнить правку конфига только для одного домена, то можно пойти чуть другим путем (но это неточно)

идем в

/usr/local/vesta/data/templates/web/apache2/

Делаем копию файлов default.tpl и default.stpl (или как он у вас называется) с другим именем, правим новый файл как нужно, на вкладке конфига домена в браузере (как на верхней картинке) жмем «Редактировать» и выбираем «Шаблон WebAPACHE2» с новым именем, всё. Ребилдить конфиг не нужно т.к. он создается по новому шаблону.

8 thoughts on “[Решено] VestaCP (Vesta) open_basedir restriction in effect или правка любых опций в конфигах”

  1. Спасибо, очень помог. Настраивал многосайтовость на битриксе: создал симлинки для дополнительных сайтов, но они не работали из-за open_basedir restriction. Ты всё очень четко расписал, красавчик.

  2. Спасибо Вам! Весь буржунет облазил, ставил много раз этот конфиг — не работало, хоть убей. А оказывается нужно ребилдить еще конфиг доменов. Спасибо еще раз!

  3. Не раз натыкался на эту ошибку (после обновления сертификатов lets encrypt’ом), подозревал, что существуют шаблоны. Но всё как-то руки не доходили. Спасибо автору за статью!

Добавить комментарий для Александр Отменить ответ

Ваш e-mail не будет опубликован.