2011-07-08 7 views
14

Ora creo una piccola applicazione PHP, qui ho problemi con l'utilizzo del percorso del file, perché in questo tipo di locazione utilizzare C:\Some\Location\index ma in Linux /www/app/index così quando definisco il percorso utilizzando questo / ma quando l'applicazione viene eseguita nella macchina della finestra dovrebbe essere problema per questo /.Come posso definire DIRECTORY_SEPARATOR per entrambe le piattaforme Windows e Linux?

Quindi, qui voglio definire il DIRECTORY_SEPARATOR sia la piattaforma Windows che Linux.

risposta

31

PHP accetta sia \ e / come separatori di percorso validi in tutti i sistemi operativi. Quindi usa semplicemente / nel tuo codice

+0

grazie mille, l'ultima volta sono sempre stato confuso per questo/e \. – useCase

+1

non tutti gli os sono windows e nix in base a http://stackoverflow.com/questions/625332/is-using-the-directory-separator-constant-neccessary che usa più cross platform ad es. Mac OS Classic utilizza: come separatore. vedere anche per es. http://edward.de.leau.net/is-the-php-directory_separator-constant-really-needed-20130121.html – edelwater

+1

@edelwater: non c'è motivo di scrivere il codice in base ai requisiti del sistema operativo 11yo non supportato. È il 2013 oggi. Quando hai qualcosa da oggi - per favore, benvenuto per discuterne. Ma riferirsi a MacOS Classic è solo un assurdo – zerkms

14

Per comodità è possibile scrivere definire una costante più breve:

DEFINE('DS', DIRECTORY_SEPARATOR); 

e quindi scrivi il tuo percorso come:

$path = 'www'.DS.'app'.DS.'index'; 

Oppure non capisco la tua domanda?

3

PHP capisce "\" e "/" come separatori di percorso, indipendentemente dal sistema in cui ti trovi. Preferisco usare '/' (il modo unix) in tutto il mio codice. Quando sei su una macchina Windows e v'è la necessità di fornire un pieno di finestre qualificato/DOS percorso avrò questa semplice funzione, non distruttivo

function dosPath($path){ 
    return str_replace('/', '\\', $path); 
} 

Esempio:

$drive = 'C:'; 
$path = '/tmp/uploads'; 

echo dosPath($drive.$path); 
echo dosPath($path); 
0

di Windows accetta le barre in avanti nella maggior parte dei casi, quindi puoi semplicemente usarle. Puoi anche usare una miscela e non si lamenterà.

Assicurati che la tua suite di test unitari passi anche su Linux!

+0

Protesta? Fa schifo. –

Problemi correlati