2011-07-08 18 views
14

Ahora creo una pequeña aplicación PHP, aquí tengo un problema para usar la ruta del archivo, porque en Windows use esta ubicación C:\Some\Location\index pero en Linux /www/app/index entonces cuando defino la ruta usando / pero cuando la aplicación se ejecuta en la máquina ventana debe ser problema para este /.¿Cómo puedo definir DIRECTORY_SEPARATOR para plataformas Windows y Linux?

Así que aquí quiero definir DIRECTORY_SEPARATOR tanto en la plataforma de Windows como en la de Linux.

Respuesta

31

PHP acepta \ y / como separadores de ruta válidos en todos los sistemas operativos. Así que solo use / en su código

+0

muchas gracias, la última vez siempre confundí este/y \. – useCase

+1

no todos los campos son Windows y nix de acuerdo con http://stackoverflow.com/questions/625332/is-using-the-directory-separator-constant-neccessary, ya que es más multiplataforma, p. mac os classic usa: como separador. ver también p. http://edward.de.leau.net/is-the-php-directory_separator-constant-really-needed-20130121.html – edelwater

+1

@edelwater: no hay ninguna razón para escribir su código de acuerdo con los requisitos del sistema operativo 11yo no compatible. Es 2013 hoy. Cuando tenga algo de hoy en día, le invitamos a que lo analice. Pero referirse a macos classic es simplemente una tontería – zerkms

14

Para mayor comodidad se puede escribir definir una constante más corto:

DEFINE('DS', DIRECTORY_SEPARATOR); 

y luego escriba su ruta como:

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

¿O no entiendo tu pregunta?

3

PHP entiende '\' y '/' como separadores de ruta, independientemente del sistema en el que se encuentre. Prefiero usar '/' (el modo Unix) en todo mi código. Cuando estás en una caja de ventanas y hay una necesidad de proporcionar un total de ventanas calificadas/DOS camino que va a tener esta función destructiva simple, no

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

Ejemplo:

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

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

de Windows acepta barras diagonales en la mayoría de los casos, para que pueda usarlas. Incluso puede usar una mezcla y no se quejará.

¡Sin embargo, asegúrese de que su suite de prueba de unidad también se lo permita a Linux!

+0

¿Quejarse? Apesta. –

Cuestiones relacionadas