por longnetpro
Citação:
O caminho de inclusão em PERL e PHP sempre foi um problema difícil, principalmente relacionado ao sistema operacional e ao servidor WEB. É impossível resolver esse problema de caminho de forma muito inteligente. Comparado com PERL, o caminho do PHP é muito melhor e muito mais fácil de resolver, porque o caminho relativo do PHP pode ser usado em qualquer ocasião em um programa PHP, ao contrário do PERL onde caminhos absolutos devem ser usados em certas instruções, levando ao transplante ser extremamente complexo. .
Com base nisso, em PHP, projetei uma solução absolutamente sólida, conforme descrito abaixo.
em princípio:
Use caminhos relativos, mas use caminhos absolutos dentro de caminhos relativos (um pouco complicado, explicado em detalhes posteriormente). Segundo, pode ser facilmente modificado. Terceiro, é estereotipado e tem uma estrutura clara e é fácil. para expandir.
Etapas detalhadas:
1. Primeiro determine o diretório raiz de um programa. Observe que ele está no sistema de arquivos, não no diretório virtual no servidor WEB. No entanto, geralmente o caminho relativo do subdiretório no diretório é o mesmo que o subdiretório virtual no servidor WEB. URL de.
2. Crie um settings.php em cada subdiretório no diretório raiz do programa definido (na verdade, não necessariamente todos, dependendo da necessidade) e defina uma variável ou constante nele (constantes são melhores porque o escopo é maior), como APPROOT, mas este APPROOT não é um caminho absoluto, mas um caminho relativo do diretório relativo ao diretório raiz do programa que você especificou.
3. Escreva require_once('settings.php'); na primeira frase de todos os arquivos de entrada do programa neste diretório (ou seja, o primeiro arquivo que contém outros arquivos, ou arquivos que permitem a navegação direta no navegador, mas por favor); observe que é melhor não adicionar esta frase a todos os arquivos incluídos - na verdade, não há problema em adicioná-la, porque você pode escrever if(!defined(APPROOT)) define(APPROOT, '../. .'); Este tipo de declaração impede a redefinição.
4. Se desejar incluir outros arquivos, direta ou indiretamente, você pode escrever include(APPROOT.$path);, onde $path é o caminho absoluto do arquivo incluído em relação ao diretório raiz do programa que você especificar.
princípio:
O diretório raiz do programa determinado é um caminho relativo, mas a localização do diretório específico é um caminho absoluto relativo a esse diretório raiz. A combinação dos dois é o caminho relativo do arquivo específico em relação ao diretório raiz do programa. Por exemplo, o diretório c:wwwrootapp é o diretório raiz do programa que você especificou e há dois arquivos c:wwwrootappaindex.php e c:wwwrootappbinc.php . Para o subdiretório a, APPROOT é '..', e para o diretório raiz do programa, o caminho absoluto de inc.php é $path='/b/inc.php', e a combinação dos dois é '../b /inc.php'. Se você quiser incluir inc.php em index.php, você deve escrever include('../b/inc.php');, e esse caminho não é apenas o caminho APPROOT.$ que acabou de ser combinado?
para concluir:
Após o processamento acima, cada caminho fica absolutamente limpo e uniforme. A única coisa que é um pouco complicada é que APPROOT deve ser definido em cada diretório, mas só precisa ser definido uma vez no settings.php deste diretório em cada. diretório. Se todo o seu programa tiver apenas um arquivo de entrada, como index.php, e todos os outros arquivos estiverem direta ou indiretamente incluídos neste único arquivo de entrada, você só precisará adicionar settings.php no diretório onde index.php está localizado. uma vez e está tudo bem. Se um amigo fez um projeto Delphi e estudou os arquivos do projeto, ele descobrirá que a situação que acabei de mencionar, de um programa ter apenas um arquivo de entrada principal, é muito semelhante ao projeto Delphi, porque o Delphi tem apenas um arquivo de programa principal (dpr file) , o restante são todos arquivos de unidade ou arquivos de recursos e não podem ser executados de forma independente. No PHP, se esta situação ocorrer, você só precisa definir APPROOT uma vez e escrever require_once('settings.php'); na primeira frase do arquivo principal do programa, e todas as inclusões subsequentes podem usar include(APPROOT.$ path) ;, é garantido que não haverá problemas, a menos que você escreva isto "inclui o caminho absoluto do arquivo relativo ao diretório raiz do programa" $path.
Usei esse método mais de uma vez, com bons resultados. Além disso, você também pode consultar a forma como o caminho é definido no WEB-INFO do JSP.
Este é um plano estereotipado que permanece inalterado em resposta às mudanças em constante mudança. Se alguém tiver um plano melhor, sinta-se à vontade para discuti-lo! Se houver algo que você não entende, sinta-se à vontade para perguntar.