• User Attivo

    open_basedir restriction in effect.

    Ciao a tutti,

    sto testando il mio solito SW su un hosting diverso da quello locale e da Altervista. Al momento è su Helloweb e qui potendo cambiare al volo da PHP 4.4.4-8 a 5.2.0-8 ho scoperto che solo con quest'ultimo mi compare questo messaggio:

    Warning:  is_dir() [[function.is-dir](http://picoflat.helloweb.eu/function.is-dir)]: open_basedir restriction in effect. 
    File(..) is not within the allowed path(s):
    (/usr/share/php:/usr/share/pear:/tmp/:/users/p/i/c/picoflat/public_html/) in
    /users/p/i/c/picoflat/public_html/func_menu.php on line 150
    ```La riga 
    di codice 150 del loop qui sotto è la seconda, quella con la funzione
    is_dir.```
    $nomedir = "";
      if  ( is_dir($nome) ) {
        if ($nome == "." || $nome == "..") {
          }else{
             $nomedir = $nome;
             //echo "$nome<br />";
        }
      }
    ```Secondo voi, quale potrebbe essere il problema ?
    E' il caso di dire "Hosting che vai, problema che trovi" :D
    
    Grazie in anticipo,
    greybear
    
    P.S. In locale ho la visualizzazione degli errori abilitata e PHP 5.1.6

  • User Attivo

    Ho fatto delle prove in locale, non mi segnala nessun tipo di errore.
    Il problema può essere nel server web, dovuto alla gestione fisica dei domini all'interno della macchina, oppure è dovuto ad alcune restrizioni nella lettura delle cartelle, sopratutto per evitare attacchi indesiderati.

    Ciao :ciauz:


  • Moderatore

    di solito open_basedir si utilizza per la protezione del server magari anche per matchare delle parole che possono essere "nocive" per il server....

    essendo helloweb molto disponibile potresti chiedere un log degli errori per verificare cosa sia di preciso


  • User Attivo

    Ho chiesto e mi hanno dato la soluzione che è questa:
    Il software va modificato in questo modo:

    $nomedir = "";
        if ($nome != "." && $nome != "..") 
       {
           if  ( is_dir($nome) ) 
             $nomedir = $nome;
        }
    ```per cui credo sia lecito supporre che il problema possa essere nel test di ".." che è la directory superiore. Forse questo implica una risalita nell'albero delle directory magari indirizzando con il path assoluto che non è permesso. Questo è verificabile usando la funzione CHDIR.
    Beh, del resto sono un autodidatta di soli 3 mesi :D ed è ancora tempo di :x
    
    Grazie anche a voi :)
    
    greybear

  • Moderatore

    le restrizioni servono 😉