Descripción del problema
Primero, echemos un vistazo a la estructura del directorio de nuestro ejemplo y el contenido de estos tres archivos.
A.PHP
<? Phpinclude './c/d.php'
B.PHP
<? phpdefine ('__ b', 'esta es una prueba');c/d.php
<? Phpinclude '../b.php';var_dump(__b);
El archivo D.PHP en el directorio C se refiere al archivo B.PHP en su directorio superior. No tendrá ningún problema al ejecutar c/d.php por separado.
Sin embargo, si A.PHP hace referencia c/d.php en el mismo directorio que B, habrá un problema.
Informa un error que dice que el archivo no existe
pensar
El significado general es que después de que A.PHP introduce C/D.Php en A.PHP, la ruta include '../b.php' es relativa a A.PHP, y la ruta relativa para A.PHP no existe, por lo que surge este problema.
Si se puede hacer referencia a un archivo en varios lugares, es bastante fácil tener problemas, y luego podemos resolver fácilmente este problema usando rutas absolutas.
Use rutas absolutas para resolver el problema
Si cambiamos el archivo a lo siguiente
A.PHP
<? Phpinclude __dir __. '/../b.php'; var_dump (__ b);
B.PHP
<? phpdefine ('__ b', 'esta es una prueba');c/d.php
<? Phpinclude __dir __. '/../b.php'; var_dump (__ b);
Esto se cambia a referirse a la ruta absoluta del archivo. __DIR__ es una constante mágica predefinida que ha existido en Php5.3, lo que indica el directorio donde se encuentra el archivo. Luego usamos esto para escribir la ruta absoluta, que se puede ejecutar normalmente cuando se ejecuta A.PHP y C/D.PHP. Si se usa dirname(__FILE__) en lugar de __DIR___ antes de php5.3
Resumir
Lo anterior se trata del problema de las rutas relativas en PHP y el uso de rutas absolutas. Espero que sea útil para todos los que usen PHP y eviten ingresar al pozo de rutas relativas en PHP nuevamente.