Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde galera!
Estou desenvolvendo um sistema aqui na minha máquina e, em virtude de utilizar diversas classes e arquivos php com includes e requires, sempre tive problemas com a questão dos paths, sempre em algum lugar estourava erro porque não encontrava o caminho até o arquivo a ser incluído.
Bom, consegui resolver meus problemas colocando, no início de todos os arquivos, o seguinte:
set_include_path('C:\wamp\www\revenda');Isso me permitia que, quando eu colocasse um include, eu só chamassse o arquivo até o seu endereço normal. Exemplo:
include 'contato.php'; include 'admin/config/login.php';
Mas, infelizmente, isso é aqui na minha máquina, por isso funciona... se fosse no servidor, como eu conseguiria obter o mesmo resultado?
Peço isso pois tenho (quase) certeza de que colocar
set_include_path('http://www.meusite.com.br'); não irá funcionar...
Aguardo sugestões, obrigado desde já.
Valeu Beraldo, muito obrigado pela resposta.
Infelizmente, ainda não pude testar em virtude de estar no trabalho, mas à noite testarei para ver se funciona (mas acredito que me ajudará, sim).
Qualquer problema, volto a postar! Valeu mesmo
No meu init.php, faço assim:
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . getcwd() . BARRA . PATH_SEPARATOR . getcwd() . BARRA . 'smarty' . PATH_SEPARATOR . getcwd() . BARRA . 'lib');
Geralmente uso o Smarty, então deixo-o no include_path. Também coloco o diretório "lib" (bibliotecas) no include_path. Veja que uso o getcwd(). Ele que faz a "mágica", para que o include_path seja válido no servidor local e no remoto. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
outra alternativa também segura ao getcwd() é dirname() + constante mágica __FILE__
dirname( __FILE__ )
Para recuar um diretorio, ao invés de fazer ../../, é mais seguro fazer
dirname( dirname( __FILE__ ) )
Galera, muito obrigado por toda colaboração.
Quando eu estiver em casa, testarei tudo e qualquer problema volto a reportar... muito obrigado mesmo
Em primeiro lugar, muito obrigado pelas respostas de todos.
Mas após realizar bastante testes, cheguei a melhor solução para o meu caso: como tenho diversos includes dentro de muitas pastas, o que fiz foi simplesmente adicionar
dirname(__FILE__) no início de todos os includes que possuo. Nos includes, mantive o endereço do arquivo destino e tudo funcionou perfeitamente, pois dessa forma eu sempre cairei na raiz do meu site, não importa qual arquivo eu estiver chamando ou como estiver incluindo algo, que era o meu objetivo.
Muito obrigado a todos!
por isso um arquivo de inicialização e maior. Se um dia precisar alterar o include_path, terá de mexer em todos os arquivos. Com o init.php, bastaria alterá-lo e as modificações afetariam o site como um todo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Mas beleza. Resolvido. ;)
Isto deve ser útil:
http://forum.imasters.com.br/index.php?showtopic=202215
Você cria um arquivo de inicialização. Aí inclui esse arquivo com todas as configurações, inclusive a configuração do include_path. Se um dia precisar alterar essa diretivas, apenas mudará o init.php, não ttodos os arquivos.
VocÊ pdoe usar getcwd() para obter o diretório corrente. Assim o include_path funcionará no servidor e em sua máquina local