Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Estou fazendo um site OO e está acontecendo o seguinte problema. Vou exemplificar para ficar melhor:
Tenho a pagina usuarios.php e nela incluo a página conexão.class.php desta forma
require_once("../../../classes/conexao.class.php") - Funciona corretamente.
Mas depois eu acesso de outro lugar (outra pasta) o mesmo arquivo usuarios.php para excluir um usuario o qual tem esse require e ele não acha o arquivo, Mas se eu alterar a linha do require para este segundo caso o primeiro não funciona... =/
O que posso fazer para resolver este problema?
OBS:Aparentemente o erro é que por acessar o arquivo de pastas diferentes essa forma "../../../" está caindo em pastas errôneas, logo, gera o erro de não encontrar o include.
Use caminhos completos, evita essa dor de cabeça.
require('/public_html/projeto/includes/Footer.inc.php');
Problemas que tem esse problema geralmente são mal modelados...mas anyway.
Caminho completo...usa a $_SERVER['DOCUMENT_ROOT'].
Obrigado pelas respostas o autoload achei bem interessante... sobre este problema vou usar o caminho com $_SERVER['DOCUMENT_ROOT'], funcionou corretamente.
Mas não está mal modelado não, eibon, pelo que vi é um problema que por exemplo no ASP não ocorre, que seria ao invés de ele se basear na pasta onde está o arquivo é sempre baseado na pasta de onde se está, logo se eu estiver numa pasta localizada em outro caminho gera o erro.
Obrigado.
Então SL4SH, oque o eibon quis dizer, é que é possível modelar o sistema, e as pastas dele, de forma que tal malabarismo não seja necessário.
Tente usar um script centralizador, uma espécie de config para o sistema.
E concentre todos os includes/requires mais críticos em apenas um ponto.
Em vez de fazer a inclusão deles, em diversos níveis como vem fazendo.
É uma característica da linguagem php trabalhar assim, mas realmente, se modelar certinho, ficar usando caminhos absolutos dessa maneira, passa a ser estranho.
Use o set_include_path.
http://br.php.net/set_include_path
Também é interessante dar uma olhada, já que é OO, no autoload.
http://br.php.net/__autoload
Carlos Eduardo