¿Es esta la manera correcta de define
incluir una ruta para both * nix y Windows?Forma correcta de establecer PHP incluye la ruta para * Nix y Windows
define('INCPATH', realpath(dirname(__FILE__)) . '/');
Tenga en cuenta el trailing forward-slash que he incluido anteriormente. ¿La barra diagonal para incluye/requiere lo mismo para ambos sistemas operativos, también?
EDITAR (ACTUALIZADO CON RESPUESTA):
De lo que he entendido, mi código de abajo es la forma correcta para definir universalmente una ruta de inclusión/requerir tanto para * nix y Windows OS. No dude en corregir cualquier cosa en los comentarios a continuación.
Lo que me confundió fueron los muchos ejemplos que vi mostrando el reemplazo de back-slashes (\)
en forward-slashes(/)
. En función de algunas de las respuestas a continuación, esto es innecesario.
Así que el código correcto final (para los puristas) es:
define('INCPATH', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
Ese código produce los siguientes resultados:
*nix: /path/to/the/file/
Windows: C:\Path To\the\file\
Una breve explicación, nuestro trabajo camino desde el interior (__FILE__
) fuera (realpath()
):
FILE La ruta completa y el nombre del archivo. Siempre contiene una ruta absoluta con enlaces simbólicos resueltos.
dirname() La cadena devuelta es ruta con cualquier trailing/componente eliminado. Responsable de eliminar el nombre del archivo.
realpath() Devuelve la ruta de acceso absoluta canonicalizada (normalizada/estandarizada) al éxito. La ruta resultante no tendrá un enlace simbólico, componentes '/./'
o '/../'
. Supongo que esto se incluye por minuciosidad porque __FILE__
ya resuelve enlaces simbólicos. ¿O tal vez está incluido para resolver rutas relativas? De cualquier manera, parece solidificar nuestro objetivo.
@Derek, buena información, gracias. Asumiré que mi definición anterior funciona en ambos sistemas operativos. – Jeff
A menudo me pregunto por qué se siguen utilizando las barras invertidas, ya que causa dolores de cabeza de escape y la barra diagonal funcionaría igual de bien. – Ether