Ho alcune chiamate a is_dir
su una pagina. Hanno sempre lavorato senza problemi.PHP: percorso autorizzato open_basedir
Pochi giorni fa, la società di hosting ha aggiornato PHP da 5.2 a 5.3. Da allora, tutte le mie chiamate a is_dir
hanno provocato il seguente errore (messaggio):
Warning: is_dir(): open_basedir restriction in effect.
File(/home/virtual/domain.com/public_html/galleries/img/002.JPG/)
is not within the allowed path(s):
(/home/virtual/domain.com:/home/virtual/_tmp)
in /home/virtual/domain.com/public_html/index.php on line 201
Questo mi lascia perplesso.
Chiaramente, secondo il messaggio di errore (e php_info
pure), la directory /home/virtual/domain.com
(senza barra finale, quindi incluse le sottodirectory) è incluso/abilitato in open_basedir
, ei file che is_dir
sta cercando di scorrere sono tutti situato in sottocartelle sotto quella cartella. Quindi, perché non sono all'interno dei percorsi consentiti, quindi? Chiaramente lo sono!
Stranamente, questo errore sembra per mostrare solo quando is_dir
restituisce false, vale a dire, quando il file è non una cartella, ma un normale file. Sembra scorrere tutte le directory senza errori.
Domanda simile pubblicata in precedenza qui: Open_basedir restriction oddness (nessuna soluzione trovata).
Qualcuno ha qualche idea?
(Nota: Modificare le impostazioni di PHP non è un'opzione, in quanto questo è un host condiviso e non ho alcun accesso admin)
fa questo è il messaggio di errore effettivo? O alcuni caratteri speciali sono in qualche modo? – SteAp
Alcuni percorsi hanno alcuni caratteri speciali: '&' (e commerciale) e '_' (sottolineatura). Ma l'errore appare anche per quei percorsi che non contengono alcun carattere speciale (a meno che le lettere maiuscole contino come caratteri speciali). E i caratteri speciali sono tutti nei nomi delle directory (e sono correttamente analizzati e ripetuti nei casi in cui 'is_dir' restituisce 'TRUE'), mai nei nomi dei file (che è dove si verifica l'errore). –