[How to] При выполнении PHP-сценария возникает ошибка "open_basedir". Как это исправить?

Создана:

2016-11-16 13:22:41 UTC

Изменена:

2017-08-16 17:11:36 UTC

7

Помогла ли вам статья?


Есть вопросы?

Отправить запрос

[How to] При выполнении PHP-сценария возникает ошибка "open_basedir". Как это исправить?

Applicable to:

  • Plesk for Linux/Unix
  • Plesk 11.5 for Windows

Причина

Возникновение ошибки свидетельствует о том, что PHP-сценарий пытается обратиться к папке, доступ к которой не разрешен. В целях безопасности настройки PHP для доменов, размещенных в Parallels Plesk Panel, по умолчанию разрешают доступ только к папкам /tmp и http(s)docs . Ограничения определяются PHP-переменной open_basedir отдельно для каждого виртуального хоста.

Если необходимо разрешить PHP-сценариям определенного виртуального хоста доступ к дополнительным папкам, установите для параметра виртуального хоста 'open_basedir' новый путь (имена папок должны быть разделены двоеточием). Эту операцию может выполнить только пользователь, обладающий полномочиями пользователя "root" для файлов домена vhost.conf и vhost_ssl.conf (для виртуального хоста SSL). Дополнительную информацию можно найти в разделе 'Включение директив в файл конфигурации веб-сервера' руководства администратора Parallels Plesk Panel.

После внесения этих изменений заново создайте файлы конфигурации Apach и перезапустите службу Apach, выполнив следующую команду. Если будет найден файл vhost(_ssl).conf, он будет автоматически добавлен в файл httpd.include домена:

~# /usr/local/psa/admin/sbin/websrvmng -a -v

ПРИМЕЧАНИЕ. Если данная команда не будет выполнена, файлы vhost.conf или vhost_ssl.conf не будут включены в конфигурацию Apache, и изменения не вступят в силу.

Примеры.

ПРИМЕЧАНИЕ. Вместо HTTPD_VHOSTS_D необходимо подставить реальный путь к месту расположения домена, который может отличаться в зависимости от версии ОС и Parallels Plesk Panel. Текущее значение можно посмотреть в файле /etc/psa/psa.conf. Вместо ADD_PATH необходимо подставить реальный путь к папке, к которой требуется разрешить доступ.

Создайте файл HTTPD_VHOSTS_D/domain.com/conf/vhost.conf:

---8<---
<Directory HTTPD_VHOSTS_D/domain.com/httpdocs>

php_admin_value open_basedir HTTPD_VHOSTS_D/domain.com/httpdocs:/tmp:/ADD_PATH

</Directory>
--->8---

Создайте файл HTTPD_VHOSTS_D/domain.com/conf/vhost_ssl.conf:

---8<---
<Directory HTTPD_VHOSTS_D/domain.com/httpsdocs>

php_admin_value open_basedir HTTPD_VHOSTS_D/domain.com/httpsdocs:/tmp:/ADD_PATH

</Directory>
--->8---

Для субдоменов создайте соответствующий файл HTTPD_VHOSTS_D/domain.tld/subdomains/subdomain/conf/vhost.conf file :

---8<---
<Directory HTTPD_VHOSTS_D/domain.com/subdomains/subdomain/httpdocs>

php_admin_value open_basedir "HTTPD_VHOSTS_D/domain.com/subdomains/subdomain/httpdocs:/tmp:/ADD_PATH"

</Directory>
--->8---

Кроме того, в файле /etc/php.ini можно настроить глобальную переменную 'open_basedir' для определенного местоположения, например:

---8<---
open_basedir = "/tmp"
--->8---

После изменения файла php.ini перезапустите Apache.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 7 из 15
Еще есть вопросы? Отправить запрос
Войдите в службу, чтобы оставить комментарий.