Caminho de inclusão e estranho estrutura
-
16-09-2020 - |
Pergunta
Hai.Eu tenho o site que é realmente estranho, e agora está a fazer-me problemas.Esta é a estrutura simplificada
public_html
- adm
--- raport
------ raportpdf.php
--- class
------ Bonus
--------- Bonus_DAO.class.php
------ config.php
--- raport.php
- index.php
Então.Index.php é gigante carregador.Ele tem linhas:(mas eu não acho que eles estão fazendo diffrence)
set_include_path('lib/DB' . PATH_SEPARATOR . get_include_path());
set_include_path('lib/PHPLOT' . PATH_SEPARATOR . get_include_path());
set_include_path('config' . PATH_SEPARATOR . get_include_path());
set_include_path('view' . PATH_SEPARATOR . get_include_path());
set_include_path('controller' . PATH_SEPARATOR . get_include_path());
set_include_path('model' . PATH_SEPARATOR . get_include_path());
Dentro Bonus_DAO.class.php é algo como
require_once('./adm/class/config.php');
Raportpdf.php é chamado através de index.php - ele envia seu conteúdo, sem qualquer erro no e-mail.Mas quando eu quero de acesso raport.php, eu tenho de erro como:
Warning: require_once(./adm/class/config.php) [function.require-once]: failed to open stream: No such file or directory in /home/panele/domains/blahblah/public_html/adm/class/Bonus/Bonus_DAO.class.php on line 2
Fatal error: require_once() [function.require]: Failed opening required './adm/class/config.php' (include_path='.:/usr/local/lib/php') in /home/panele/domains/blahblah/public_html/adm/class/Bonus/Bonus_DAO.class.php on line 2
Como posso resolver isso?
Solução
Inserir uma linha como a seguinte em um arquivo que é incluído nesta estrutura de seu (este ficheiro incluído DEVE ser localizado no diretório raiz, algo como um config.php ou que eu normalmente uso init.php).
define("ROOT_DIR",dirname(__FILE__));
Então, onde você estiver recebendo erros (ou para a sinonímia dentro do seu código para que o assunto, em qualquer lugar que desejar()/include()), adicionar ROOT_DIR."/caminho/para/arquivo" antes.O que isso está fazendo está dando o caminho absoluto para o diretório raiz e, em seguida, você simplesmente especifique o diretório dentro da raiz que você está procurando.Para fins de exemplo, o meu diretório raiz "/home2/exemplo." Agora, eu inserir esta linha em um arquivo que eu ter incluído, etc.e alterar a exigir linha:
require_once(ROOT_DIR."/adm/class/config.php");
A linha acima, basicamente, traduz-se a este (supondo que eu usei a define();a declaração dentro de um arquivo localizado em /home2/exemplo)
require_once("/home2/example/adm/class/config.php");
Então, basicamente, esta é uma maneira fácil de dar estático caminhos de um elemento dinâmico, então você não vai ter esse problema de novo!
Boa sorte!
Dennis M.