Ir para conteúdo

POWERED BY:

Arquivado

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

3l3tr1c

[Resolvido] Indicar diretório corrente para "include_path&#34

Recommended Posts

Olá!

 

Como faço para indicar sempre que o "include_path" é o diretório "corrente" (ou diretório atual)? Por exemplo:

 

Código do arquivo ALGO.PHP

<?php

include "../outraPagina.php"; // <<<<<<<<<<<
$variavel = 1;
...
?>

 

Código do arquivo INDEX.PHP

<?php

include "algo.php";// <<<<<<<<<<<

$variavel = 1;
...
?>

 

 

Ao incluir o arquivo ALGO.PHP no INDEX.PHP, o include do arquivo ALGO.PHP deve ser procurado com relação ao diretório do arquivo ALGO.PHP e nao do INDEX.PHP, porque o endereço "../outraPagina.php" que está no arquivo ALGO.PHP é relativo ao diretório dele e nao do INDEX.PHP. O por que disso tudo? Nunca tive problemas com isso, sempre funcionou beleza só que hoje, nao faço a mínima ideia de como isso aconteceu, tive um enorme problema. Até ontem todos os meus includes funcionavam corretamente no servidor local, até que hoje eles PARARAM DE FUNCIONAR :upset: e só funcionam no servidor remoto. O erro que recebo de TODOS OS ARQUIVOS QUE CONTÉM INCLUDES É:

 

Warning: require_once(\\CONNECTIONDB.FUNC.PHP) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\med\php\verificaSessao.func.php on line 5

Fatal error: require_once() [function.require]: Failed opening required 'connectionDB.func.php' (include_path='/') in C:\xampp\htdocs\med\php\verificaSessao.func.php on line 5

 

 

Ajudem-meeeeeeeee, por favorrrrrr!!!!!!!! :cry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a função getcwd().

 

No index.php:

   include( getcwd().'/algo.php' );

 

E mais, utilize o require_once() somente quando super necessário. Ele é dispensável e requer bastante memória. (Fonte)

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saudações Guilherme Oderdenge,

 

Antes de tudo, muito obrigado. Que legal essas dicas desse site que voce enviou. Consertei uns 3 probleminhas por aqui depois de ler as dicas. Ainda nao fiz o que voce sugeriu, e irei fazer, mas o que voce acha que pode ter causado isso? Porque os includes nao reconhecem mais a raiz de diretorios? Acho que deu para entender o problema, nao foi?

 

Saudações Guilherme Oderdenge,

 

Antes de tudo, muito obrigado. Que legal essas dicas desse site que voce enviou. Consertei uns 3 probleminhas por aqui depois de ler as dicas. Ainda nao fiz o que voce sugeriu, e irei fazer, mas o que voce acha que pode ter causado isso? Porque os includes nao reconhecem mais a raiz de diretorios? Acho que deu para entender o problema, nao foi?

 

 

Ah! Outra coisa: esse "bug" nos includes é só no servidor local, quando emulo um servidor com o XAMPP ou WAMP, testei os dois, no servidor remoto - web - nao há esse problema. Porém, eu preciso rodar os arquivos localmente para testá-lo antes de enviá-los. Entendem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Então, é um artigo bastante proveitoso mesmo. Até o tenho salvo em meus favoritos, porque sempre é necessário.

 

Pois bem, veja que no aviso de erro dos seus includes existem contras-barras, então, portanto, pode ser um problema com escapes.

 

Só por curiosidade, tente fazer o seguinte:

 

 $caminho = stripslashes('include.php');

 include( $caminho );

 

Um abração! :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a função getcwd().

 

No index.php:

   include( getcwd().'/algo.php' );

 

E mais, utilize o require_once() somente quando super necessário. Ele é dispensável e requer bastante memória. (Fonte)

 

Entendeu?

 

Acabei de fazer o que voce disse. No windows ele captura esse endereço C:\xampp\htdocs\med\php\painel e no linux, bom , no linux nao sei ^_^ , se ele capturar o endereço no windows nao dá para usar no include, porque fica assim:

include "C:\xampp\htdocs\med\php\painel\INDEX.PHP";

 

Eu me atentei a algo estranho no erro retornado. Olhem só:

Warning: include(\\INDEX.PHP) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\med\php\painel\index.php on line 2

 

Por que há duas barras invertidas (\\) no include se eu nao cloquei assim??

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função getcwd() vai pegar o endereço correto do seu arquivo independente do sistema operacional, isso porque através do arquivo indicado ele localiza o endereço. Entendeu?

 

Quanto ao seu erro, você tentou fazer isso com o getcwd()?

 

Por que há duas barras invertidas (\\) no include se eu nao cloquei assim??

 

Algum motivo tem, com muita certeza!

 

Você está utilizando algum sistema pronto ou alguma Template Engine?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Então, é um artigo bastante proveitoso mesmo. Até o tenho salvo em meus favoritos, porque sempre é necessário.

 

Pois bem, veja que no aviso de erro dos seus includes existem contras-barras, então, portanto, pode ser um problema com escapes.

 

Só por curiosidade, tente fazer o seguinte:

 

 $caminho = stripslashes('include.php');

 include( $caminho );

 

Um abração! :thumbsup:

 

Tentei, deu o mesmo erro. :ermm:

 

Mas se eu fizer o include assim funciona:

 

include "./index.php";

 

Mas, se no arquivo INDEX tiver outro include (include "outrapagina.php") e dentro dessa última página mais outro include (include "../segPagina.php") ele vai procurar o último include no diretório do arquivo INDEX.

 

Para ficar mais claro, tenho 3 arquivos, assim:

 

INDEX.PHP; PG1.PHP; PG2.PHP

 

Em index tenho o seguinte código:

 

<?php
include "diretorio/pg1.php";
...

 

Em PG1:

 

<?php
include "pg2.php"; // <<< essa página está no mesmo diretório de PG1 mas nao no diretório de INDEX
...

 

Sabe o que acontece? Quando ele inclui PG1 em INDEX e "percebe" que em PG1 há um include ele busca a página no diretório de INDEX, mas nao é assim é para buscar no diretório de PG1. Entende?

 

 

Caral*** velho!! Achei o maldito erro, que desgraçaaaaaaaa! Ufaaaa! Tava preocupado pra caramba porque tinha que entregar um sistema amanhã. Eu tava encucado com esse trecho do erro:

 

Failed opening required 'connectionDB.func.php' (include_path='/')

 

 

Sabe o que era?? Um doido aqui adicionou no .htaccess do diretório raiz uma instrução para o PHP e eu nao tinha visto, assim:

php_value include_path "/"

 

Era só isso! Nem pensei que era isso porque eu nao tinha posto nada lá. Mas, sou bastante grato por sua disposição em ajuda, Guilherme. Desejo-lhe boa sorte e até a próxima!

 

 

Caral*** velho!! Achei o maldito erro, que desgraçaaaaaaaa! Ufaaaa! Tava preocupado pra caramba porque tinha que entregar um sistema amanhã. Eu tava encucado com esse trecho do erro:

 

Failed opening required 'connectionDB.func.php' (include_path='/')

 

 

Sabe o que era?? Um doido aqui adicionou no .htaccess do diretório raiz uma instrução para o PHP e eu nao tinha visto, assim:

php_value include_path "/"

 

Era só isso! Nem pensei que era isso porque eu nao tinha posto nada lá. Mas, sou bastante grato por sua disposição em ajudar, Guilherme. Desejo-lhe boa sorte, um abraço e até a próxima!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Huahauhauhauhauah nossa, que rolo ein? Mas que bom que você conseguiu arrumar!

 

E disponha, estamos aqui para ajudar. Desejo tudo em dobro pra ti. :thumbsup:

 

KNOWLEDGE & BELIEF

Compartilhar este post


Link para o post
Compartilhar em outros sites

[RESOLVIDO]

 

Solução:

 

Uma instrução errado no .HTACCESS que se encontrava no diretório padrao manda procurar todos os includes em um diretório que nao correspondia ao correto. No .HTACCESS havia essa instrução, eu a removi e deu certo:

 

php_value include_path "/"

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.