Descrição do problema
Primeiro, vamos dar uma olhada na estrutura do diretório do nosso exemplo e no conteúdo desses três arquivos.
A.Php
<? phpinclude './c/d.php'
B.Php
<? phpdefine ('__ b', 'este é um teste');c/d.php
<? phpinclude '../b.php' ;var_dump(__b);
O arquivo d.php no diretório C refere -se ao arquivo B.Php no seu diretório superior. Não terá problemas ao executar o C/D.Php separadamente.
No entanto, se o A.Php referir -se C/D.Php no mesmo diretório que B, haverá um problema.
Ele relata um erro dizendo que o arquivo não existe
pensar
O significado geral é que, após a introdução de A.Php em C/D.Php em A.Php, o caminho include '../b.php' é relativo a A.Php, e o caminho relativo para A.Php não existe, então esse problema surge.
Se um arquivo puder ser referenciado em vários lugares, é muito fácil ter problemas e, em seguida, podemos resolver facilmente esse problema usando caminhos absolutos.
Use caminhos absolutos para resolver o problema
Se alterarmos o arquivo para o seguinte
A.Php
<? phpinclude __dir __. '/../b.php'; var_dump (__ b);
B.Php
<? phpdefine ('__ b', 'este é um teste');c/d.php
<? phpinclude __dir __. '/../b.php'; var_dump (__ b);
Isso é alterado para se referir ao caminho absoluto do arquivo. __DIR__ é uma constante mágica predefinida que existe no Php5.3, indicando o diretório em que o arquivo está localizado. Em seguida, usamos isso para escrever o caminho absoluto, que pode ser executado normalmente ao executar A.Php e C/D.Php. Se dirname(__FILE__) for usado em vez de __DIR___ antes do Php5.3
Resumir
O exposto acima é tudo sobre o problema dos caminhos relativos no PHP e o uso de caminhos absolutos. Espero que seja útil para todos que usam PHP e evitem entrar no poço de caminhos relativos no PHP novamente.