В некоторых панелях управления сервером, например VestaCP по-умолчанию директива open_basedir настроена только на запуск php-скриптов внутри директории public_html у домена. Но т.к. ради безопасности нам необходимо разместить файлы проекта выше www, то open_basedir необходимо перенастроить. В противном случае, мы постоянно будем получать ошибку вида File ... is not within the allowed path(s).
Можно поменять настройку в основном php.ini распрстранив, таким образом, изменения на весь сервер. Если вы забыли где лежит файл конфигурации то воспользуйтесь командой
$ php -i | grep php.ini
Допустим, нас интересует решение для конкретного домена, а не сервера целиком. На форуме весты есть такое решение: создайте в дополнительный конфигурационный файл /home/%user%/conf/web/httpd.%domain%.conf в котором будет прописано:
<Directory /home/%user%/web/%domain%/public_html>
php_admin_value open_basedir none
</Directory>
Но полностью отключать настройку не всегда безопасно, к тому же, если присмотреться, то в директории /home/%user%/conf/web/ можно найти файл apache2.conf
Открываем его, например, с помощью nano (не забывайте добавлять папаметр -w при открытии конфигурационных файлов)
nano -w home/user/conf/web/apache2.conf
В нём в разделе Directory есть строчка вида
php_admin_value open_basedir /home/user/web/domain/public_html:/home/user/tmp
Здесь указано 2 разрешённых пути, двоеточие - это разделитель между ними. Например, мы хотим разрешить выполнение php в папке project на один уровень выше веб-директории public_html, тогда добавляем в конце строки:
:/home/user/web/domain/project
Сохраняем изменения Ctrl+O, выходим Ctrl+X. Теперь перезапустим апач что бы новые настройки вступили в силу:
etc/init.d/apache2 restart
Всё готово, если что-то не работает ищите опечатку.