È questo il modo corretto per define
un percorso di inclusione per entrambi * nix e Windows?Modo corretto per impostare il percorso di inclusione di PHP per * Nix e Windows
define('INCPATH', realpath(dirname(__FILE__)) . '/');
Nota la barra di avanzamento finale inclusa in precedenza. La forward-slash include/richiede lo stesso per entrambi i SO?
EDIT (AGGIORNATO CON RISPOSTA):
Da quello che ho potuto capire, il mio codice qui sotto è il modo corretto per definire universalmente un percorso include/richiedono sia per * nix e Windows OS. Sentiti libero di correggere qualsiasi cosa nei commenti qui sotto.
La cosa che mi ha confuso sono i molti esempi che ho visto mostrando la sostituzione di back-slashes (\)
in forward-slashes(/)
. Basato su alcune delle risposte qui sotto, questo non è necessario.
Quindi il codice corretto finale (per i puristi) è:
define('INCPATH', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
Questo codice produce i seguenti risultati:
*nix: /path/to/the/file/
Windows: C:\Path To\the\file\
Una breve spiegazione, il nostro lavoro dall'interno (__FILE__
) fuori (realpath()
):
FILE Il percorso completo e il nome file del file. Contiene sempre un percorso assoluto con i collegamenti simbolici risolti.
dirname() La stringa restituita è percorso con qualsiasi trascinamento/componente rimosso. Responsabile della rimozione del nome file.
realpath() Restituisce il percorso assoluto canonizzato (normalizzato/standardizzato) in caso di esito positivo. Il percorso risultante non avrà alcun collegamento simbolico, '/./'
o '/../'
componenti. Presumo che questo è incluso per completezza perché __FILE__
già risolve i collegamenti simbolici. O forse è incluso per risolvere i percorsi relativi? Ad ogni modo, sembra solidificare il nostro obiettivo.
@Derek, buone informazioni - grazie. Supporrò che la mia definizione sopra funzioni su entrambi i sistemi operativi. – Jeff
Spesso mi chiedo perché i backslash siano ancora usati, dal momento che causano mal di testa di fuga e la barra diretta funzionerebbe altrettanto bene. – Ether