Visualizzazione risultati 1 fino 11 di 11

Discussione: Problema SetEnv con .htaccess

  1. #1
    filippodemosite non è connesso Neofita
    Data registrazione
    13-06-2019
    Messaggi
    6

    Predefinito Problema SetEnv con .htaccess

    Salve,

    Ho un problema relativo al file .htaccess. Devo fare una cosa semplicissima: voglio settare una variabile che contenga la root del mio sito per poi recuperarla all'interno di php con $_SERVER['ROOT_SITO']. Ho inserito il file .htaccess nella root ("/") con all'interno un'unica riga:

    SetEnv ROOT_SITO /membri/{username}/

    Quando faccio il dump di $_SERVER['ROOT_SITO'], mi viene restituito NULL (ho provato vari escape, ma non funziona).

    Dove sto sbagliando?

    Grazie

  2. #2
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,047

    Predefinito

    Salve,
    per recuperare la root del sito in php basta:
    Codice PHP:
    $_SERVER['SERVER_NAME']
    SetEnv ROOT_SITO /membri/{username}/
    Il percorso che indica, è interno al server e generalmente non è visibile agli utenti. Ia root del sito parte da NomeSito.altervista.org/

    Se permette, come mai sta cercando di recuperare quel percorso?

    Cordiali sauti.

  3. #3
    filippodemosite non è connesso Neofita
    Data registrazione
    13-06-2019
    Messaggi
    6

    Predefinito

    Salve,

    intanto grazie per la risposta. Le spiego il mio problema. Devo trasferire un sito da XAMPP su Altervista. Vorrei fare in modo che ciò che realizzo in locale fosse già funzionante una volta caricato. Dal momento che

    Codice PHP:
    require_once($_SERVER["DOCUMENT_ROOT"].'{directory_tree}');
    su Altervista non funziona ( torna /var/www/html), mentre la root è /membri/{username}/ ), cercavo un'alternativa che non fosse utilizzare path relativi.
    In pratica la sua soluzione è valida, ma non mi permette:

    1) Di operare con l'istruzione require_once (accetta il path della risorsa, ma non funziona con le URL);
    2) Di ragionare a livello di subdomain (ad ogni subdomain ho associato un diverso sito).
    Ultima modifica di filippodemosite : 05-07-2021 alle ore 14.44.24

  4. #4
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,047

    Predefinito

    Il sito è fatto con CMS?
    Se sì, quale?

    Cordiali saluti.

  5. #5
    filippodemosite non è connesso Neofita
    Data registrazione
    13-06-2019
    Messaggi
    6

    Predefinito

    No, è un mio sito 'custom' che utilizza i soliti php, angular, js e bootstrap.

  6. #6
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Nel contesto di siti condivisi il percorso $_SERVER['DOCUMENT_ROOT'] si riferisce con ciò che fu creato.
    SetEnv è inibito per questioni di sicurezza però potresti comunque creare un file con estensione .env oppure calcola la root dinamicamente dirname(__FILE__); Ritorna il percorso senza il nome del file.
    In altervista va usata la direttiva RewriteBase /percorso/ dove percorso indica dove risiede il file .htaccess. (in questo caso la cartella percorso risiede nella cartella percorso).
    Ultima modifica di darbula : 05-07-2021 alle ore 16.25.44

  7. #7
    filippodemosite non è connesso Neofita
    Data registrazione
    13-06-2019
    Messaggi
    6

    Predefinito

    Grazie. In realtà se ci pensi con dirname(__FILE__) o __DIR__ sono sempre obbligato ad utilizzare path relativi. Con il file .env credo di essere invece vincolato all'inclusione di tale file in ogni php. Adesso mi guardo bene RewriteBase, in quanto non so come si utilizzi. Grazie per i consigli!

  8. #8
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Non proprio, su altervista esiste soltanto una root che a seconda della creazione del sito potrebbe essere /membri/username/ o /membri2/username/ quindi sempre fissa. (Non esiste più root in altervista).
    Poi giustamente conosci la struttura del tuo progetto, se è una cartella dopo la root o risiede dentro la root o il file php chiamato risiede due cartelle dopo la root ma devi chiamare un file che risiede dopo una cartella della root. (Capito questo concetto, non vedo nulla di strano)
    Ultima modifica di darbula : 05-07-2021 alle ore 16.19.35

  9. #9
    filippodemosite non è connesso Neofita
    Data registrazione
    13-06-2019
    Messaggi
    6

    Predefinito

    Sì, certo. Il punto è proprio questo: con SetEnv avrei potuto definirmi una variabile NOME_SITO = /membri/{username}/{nome_sito}/ e utilizzarla ovunque (una sorta di alias per DOCUMENT_ROOT). Con le soluzioni che mi indichi tu sono obbligato a usare path relativi, meno reliable (ad esempio nel caso di un php che viene importato in molti altri php).

  10. #10
    filippodemosite non è connesso Neofita
    Data registrazione
    13-06-2019
    Messaggi
    6

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Nel contesto di siti condivisi il percorso $_SERVER['DOCUMENT_ROOT'] si riferisce con ciò che fu creato.
    SetEnv è inibito per questioni di sicurezza però potresti comunque creare un file con estensione .env oppure calcola la root dinamicamente dirname(__FILE__); Ritorna il percorso senza il nome del file.
    In altervista va usata la direttiva RewriteBase /percorso/ dove percorso indica dove risiede il file .htaccess. (in questo caso la cartella percorso risiede nella cartella percorso).
    Ho riletto bene quello che mi hai postato e ho scoperto che in realtà dirname(__FILE__) sfrutta il path assoluto del file e non il path relativo allo script in cui viene incluso. A conferma, ho trovato questo molto utile:

    https://yagudaev.com/posts/resolving...-path-problem/

    L'ho risolta utilizzando insieme un file .env e la funzione dirname(__FILE__); per includerlo.

    Grazie ancora per la soluzione!

  11. #11
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Sono lieto che funziona.
    Per cominciare, devi assicurarti che la directory in cui inserisci quel .htaccessfile sia configurata in modo che AllowOverridefunzioni, altrimenti fallirà silenziosamente.

    In secondo luogo, poiché stai eseguendo PHP come CGI, se dovessi eliminare una pagina phpinfo e controllare le variabili impostate, vedresti il ​​tuo problema. Supponendo che la tua variabile sia stata impostata correttamente dal tuo .htaccessfile, verrà passata in modo modificato:

    $_SERVER["REDIRECT_ROOT_SITO"]
    con dirname(__FILE_) restituirà il percorso dello script attualmente in esecuzione. Che poi comunque potrebbe ritornare un percorso diverso https://www.php.net/manual/en/langua...ned.php#125170
    Ultima modifica di darbula : 06-07-2021 alle ore 22.01.22

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •