Что такое PHP open_basedir

Что такое PHP open_basedir

Я получил эту ошибку от своего сервера NGINX, когда я запускаю скрипт в Prestashop. Я думаю, что это то, что я могу решить в конфигурации NGINX или что-то в этом роде, но мне нужна помощь, чтобы узнать, что делать.

Warning: file_exists(): open_basedir restriction in effect. 
File(/www/wwwroot/panel_ssl_site/../app/etc/env.php) is not within 
the allowed path(s): (/www/wwwroot/panel_ssl_site/) in
/www/wwwroot/panel_ssl_site/bridge_i15GpcsW.php on line 832
  • Как мне решить эту проблему?

Спасибо,

Петтер

решение1

Что такое PHP open_basedir

Она ограничивает файлы, к которым PHP может получить доступ, указанным деревом каталогов, включая сам файл. Эта директиваНЕ затронутоот того, включен или выключен безопасный режим.

Когда скрипт пытается получить доступ к файловой системе, например, используя include или fopen(), проверяется местоположение файла. Если файл находится за пределами указанного дерева каталогов, PHP откажется получить к нему доступ. Все символические ссылки разрешаются, поэтому невозможно обойти это ограничение с помощью символической ссылки. Если файл не существует, то символическая ссылка не может быть разрешена, и имя файла сравнивается с (разрешенным) open_basedir.

open_basedir может влиять не только на функции файловой системы; например, если MySQL настроен на использование драйверов mysqlnd, LOAD DATA INFILE будет затронут open_basedir. Большая часть расширенных функций PHP использует open_basedir таким образом.

Специальное значение . указывает, что рабочий каталог скрипта будет использоваться как базовый каталог. Однако это немного опасно, поскольку рабочий каталог скрипта можно легко изменить с помощью chdir().

В httpd.conf open_basedir можно отключить (например, для некоторых виртуальных хостов) так же, как и любую другую директиву конфигурации с помощью «php_admin_value open_basedir none».

В Windows разделяйте каталоги точкой с запятой. Во всех других системах разделяйте каталоги двоеточием. Как модуль Apache, пути open_basedir из родительских каталогов теперь автоматически наследуются.

Ограничение, указанное с помощью open_basedir, представляет собой имя каталога, а не префикс.

По умолчанию разрешено открывать все файлы.

Справочник PHP.NET, 1

Заключение

Вы использовали open_basedir и не обновили путь. Кроме того, я считаю, что этот вопрос следует задать в Superuser, поскольку доказательства говорят мне, что вы не используете среду Business Related.

php.ini (в Debian 10)

; open_basedir, if set, limits all file operations to the defined directory
; and below.  This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file.
; Note: disables the realpath cache
; http://php.net/open-basedir
;open_basedir =

Этот пример, приведенный выше, является настройкой DEFAULT в Debian 10, которая обычно также является настройкой по умолчанию в php.net. Это означает, что вы изменили ее либовручную. Или то, что я считаю, поскольку имена путей включают "panel_ssl_site", это то, что я думаю, что вы используете Admin-Panel, и это приводит к тому, что этот вопрос переходит в раздел OFF-TOPIC. Однако каждая Admin-панель должна иметь возможность изменять эту настройку, см. относительно ReferenceStackOverflow по той же проблеме

Связанный контент