Recebi este erro no meu servidor NGINX quando estou executando um script no Prestashop. Acho que isso é algo que posso resolver na configuração do NGINX ou algo assim, mas preciso de ajuda para me dizer o que fazer.
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
- Como posso resolver isso?
Obrigado,
Petter
Responder1
O que é PHP open_basedir
Limita os arquivos que podem ser acessados pelo PHP à árvore de diretórios especificada, incluindo o próprio arquivo. Esta directivaNÃO é afetadodependendo se o modo de segurança está ativado ou desativado.
Quando um script tenta acessar o sistema de arquivos, por exemplo usando include ou fopen(), a localização do arquivo é verificada. Quando o arquivo estiver fora da árvore de diretórios especificada, o PHP se recusará a acessá-lo. Todos os links simbólicos são resolvidos, portanto não é possível evitar esta restrição com um link simbólico. Se o arquivo não existir, o link simbólico não poderá ser resolvido e o nome do arquivo será comparado a (um resolvido) open_basedir.
open_basedir pode afetar mais do que apenas funções do sistema de arquivos; por exemplo, se o MySQL estiver configurado para usar drivers mysqlnd, LOAD DATA INFILE será afetado por open_basedir. Grande parte da funcionalidade estendida do PHP usa open_basedir dessa forma.
O valor especial. indica que o diretório de trabalho do script será usado como diretório base. Isto é, no entanto, um pouco perigoso, pois o diretório de trabalho do script pode ser facilmente alterado com chdir().
No httpd.conf, open_basedir pode ser desligado (por exemplo, para alguns hosts virtuais) da mesma forma que qualquer outra diretiva de configuração com "php_admin_value open_basedir none".
No Windows, separe os diretórios com ponto e vírgula. Em todos os outros sistemas, separe os diretórios com dois pontos. Como um módulo do Apache, os caminhos open_basedir dos diretórios pais agora são herdados automaticamente.
A restrição especificada com open_basedir é um nome de diretório, não um prefixo.
O padrão é permitir que todos os arquivos sejam abertos.
Conclusão
Você usou open_basedir e não atualizou o caminho. Além disso, acredito que esta pergunta deve ser feita ao superusuário, pois as evidências me dizem que você não está usando um ambiente relacionado a negócios.
php.ini (no 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 =
Esse exemplo acima é a configuração DEFAULT no Debian 10, que geralmente também é o padrão no php.net. O que significa que você também mudoumanualmente. Ou o que eu acredito, já que os nomes dos caminhos incluídos "panel_ssl_site" é que acho que você está usando um Admin-Panel e isso leva a que esta questão vá para OFF-TOPIC. No entanto, todo painel de administração também deve ser capaz de alterar essa configuração. Consulte a referênciaStackOverflow para o mesmo problema