Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Cobra

[Resolvido] [set_include_path]

Recommended Posts

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á.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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__ ) )

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.