Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
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?
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:
>
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??
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)?
>
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!
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
[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 "/"
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?