Я получил эту ошибку от своего сервера 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, представляет собой имя каталога, а не префикс.
По умолчанию разрешено открывать все файлы.
Заключение
Вы использовали 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 по той же проблеме