Algunos punteros:
Sistema de archivos de mayúsculas y minúsculas
Si su archivo se llama HelloWorld.php esto:
include "helloworld.php";
es legítimo en Windows y funcionará. Sin embargo, los nombres de archivos de Linux son mayúsculas y minúsculas, puede tener archivos llamados HelloWorld.php
, helloworld.php
, hEllOwOrlD.php
en el mismo directorio. Por lo tanto, debe desarrollar en Windows como si estuviera desarrollando un sistema de archivos sensible a mayúsculas y minúsculas: usar exactamente los nombres de archivo correctos, nombres de directorio, nombres de extensión, .php
también es diferente de .PHP
.
Separadores de directorio y ruta
En Windows decimos:
include 'classes\myClass.php';
Pero en Linux diríamos:
include 'classes/myClass.php';
PHP es lo suficientemente inteligente como para no importarle, ambos separadores funcionan en ambos sistemas. Pero debe ser coherente e ir con la barra diagonal (/) en todas partes, ya que también es la norma en la mayoría de los sistemas. Hay una ingeniosa constante predefinida DIRECTORY_SEPARATOR
que se traduce en la correcta, si quieres llegar tan lejos:
include "classes" . DIRECTORY_SEPARATOR . "myClass.php";
Lo mismo ocurre con el separador de ruta, que es punto y coma en Windows, dos puntos de lo contrario. Entonces, para estar seguro, debes hacer:
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
cuando se necesita un separador de ruta. Aunque la mayoría de la gente piensa que dado que a PHP no le importa qué separador usa, está bien, pero hay un inconveniente importante: los separadores serán los específicos del sistema cuando le solicite directorios o rutas. Entonces, digamos que desea explotar la ruta de inclusión en sus partes:
$includePath = get_include_path();
$pathParts = explode(";", $includePath) // Will only work on Windows
$pathParts = explode(":", $includePath) // Will work on other systems but not Windows
$pathParts = explode(PATH_SEPARATOR, $includePath) // Will work everywhere!!!
Codificación de archivo y delimitador
Debe configurar su IDE para establecer la codificación de archivos para todos sus scripts en UTF-8 en lugar de Cp *, y el delimitador de línea de archivo en Unix (en "\n"
lugar de "\r\n"
). En la mayoría de los casos, realmente no importará, pero debe ser coherente y la mejor manera es la forma Unix (que funciona bien en Windows pero no al revés).