У панели управления 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» с новым именем, всё. Ребилдить конфиг не нужно т.к. он создается по новому шаблону.
Спасибо, очень помог. Настраивал многосайтовость на битриксе: создал симлинки для дополнительных сайтов, но они не работали из-за open_basedir restriction. Ты всё очень четко расписал, красавчик.
Спасибо, не зря значит старался :).
А можно конфиг этого шаблона отправить, а то такого и близка нет((
Привет, ставил сайт на новый домен и была та же ошибка, спасибо помогло!
не работает, open_basedir как заговорённая, хоть ты убей её.
Огромная благодарность! Все просто и эффективно! 🙂
Спасибо Вам! Весь буржунет облазил, ставил много раз этот конфиг — не работало, хоть убей. А оказывается нужно ребилдить еще конфиг доменов. Спасибо еще раз!
Не раз натыкался на эту ошибку (после обновления сертификатов lets encrypt’ом), подозревал, что существуют шаблоны. Но всё как-то руки не доходили. Спасибо автору за статью!