Puncte:0

Eroare NGINX: open_basedir

drapel cn

Am primit această eroare de la serverul meu NGINX când rulez un script în Prestashop. Cred că este ceva ce pot rezolva în configurația NGINX sau ceva, dar am nevoie de ajutor pentru a-mi spune ce să fac.

Avertisment: file_exists(): restricție open_basedir în vigoare. 
Fișierul (/www/wwwroot/panel_ssl_site/../app/etc/env.php) nu se află în 
căile permise: (/www/www/wwwroot/panel_ssl_site/) în
/www/www/wwwroot/panel_ssl_site/bridge_i15GpcsW.php pe linia 832
  • Cum pot rezolva asta?

Mulțumiri,

Petter

Puncte:0
drapel za

Ce este PHP open_basedir

Limitează fișierele care pot fi accesate de PHP la cele specificate directory-tree, inclusiv fișierul în sine. Această directivă nu este afectat dacă modul sigur este activat sau dezactivat.

Când un script încearcă să acceseze sistemul de fișiere, de exemplu folosind include, sau fopen(), locația fișierului este verificată. Cand fișierul se află în afara arborelui de directoare specificat, PHP va refuza accesează-l. Toate legăturile simbolice sunt rezolvate, așa că nu este posibil evitați această restricție cu un link simbolic. Dacă fișierul nu există atunci linkul simbolic nu a putut fi rezolvat și numele fișierului este comparat cu (a rezolvat) open_basedir.

open_basedir poate afecta mai mult decât funcțiile sistemului de fișiere; pentru exemplu, dacă MySQL este configurat să utilizeze drivere mysqlnd, ÎNCĂRCĂ DATE INFILE va fi afectat de open_basedir. O mare parte din extins funcționalitatea PHP folosește open_basedir în acest fel.

Valoarea specială. indică faptul că directorul de lucru al scriptului va fi folosit ca director de bază. Acesta este, totuși, puțin periculos deoarece directorul de lucru al scriptului poate fi schimbat cu ușurință cu chdir().

În httpd.conf, open_basedir poate fi dezactivat (de exemplu, pentru unele virtuale hosts) la fel ca orice altă directivă de configurare cu „php_admin_value open_basedir niciunul”.

În Windows, separați directoarele cu punct și virgulă. Pe toate celelalte sisteme, separați directoarele cu două puncte. Ca modul Apache, căile open_basedir din directoarele părinte sunt acum automat mostenit.

Restricția specificată cu open_basedir este un nume de director, nu un prefix.

Valoarea implicită este să permită deschiderea tuturor fișierelor.

Referință PHP.NET, 1

Concluzie

Ați folosit open_basedir și nu ați actualizat calea. În plus, cred că această întrebare ar trebui pusă la Superutilizator, deoarece dovezile îmi spun că nu utilizați un mediu de afaceri.

php.ini (pe Debian 10)

; open_basedir, dacă este setat, limitează toate operațiunile cu fișierele la directorul definit
; si sub. Această directivă are cel mai mult sens dacă este folosită într-un director
; sau fișier de configurare a serverului web per gazdă virtuală.
; Notă: dezactivează cache-ul realpath
; http://php.net/open-basedir
;open_basedir =

Acest exemplu, de mai sus, este setarea DEFAULT pe Debian 10, care este de obicei și cea implicită pe php.net. Ceea ce înseamnă că și tu l-ai schimbat manual. Sau ceea ce cred, deoarece numele căilor au inclus „panel_ssl_site” este că cred că utilizați un panou de administrare și acest lucru duce la faptul că această întrebare intră în OFF-TOPIC. Cu toate acestea, fiecare panou de administrare ar trebui să poată schimba și această setare. Consultați referință StackOverflow la aceeași problemă

Michael Hampton avatar
drapel cz
Nu văd nimic aici care să indice că acesta nu este un mediu de afaceri și ar trebui să meargă la [su].
djdomi avatar
drapel za
@MichaelHampton /www/www/wwwroot/panel_ssl_site este valoarea implicită pentru [AAPanel](https://www.aapanel.com/index.html), de aceea cred că nu este folosit pentru o găzduire profesională
Michael Hampton avatar
drapel cz
Oh, una nouă de care n-am auzit niciodată! Avem un motiv apropiat, în special pentru panourile de control de găzduire web în masă, cum ar fi cPanel, Plesk etc., așa că pare mai potrivit.
djdomi avatar
drapel za
@MichaelHampton Nimeni nu se oprește să învețe lucruri noi, nu-i așa? ;) dar Peng58 pare să dispară, deoarece nu există niciun răspuns

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.