Ir para conteúdo

Arquivado

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

Claudio Junior 18

Problemas com caminho (url) do "require"

Recommended Posts

Oi galera!!

 

Poxa tô com um probleminha meio chato então se alguém puder me dar uma ajuda eu agradeço muito mesmo...

 

Estou desenvolvendo um site, e em todas as páginas eu chamo com a função um arquivo "functions.php" com algumas funcionalidades extras, joguei em um arquio externo para não ficar escrevendo o mesmo código várias vezes em todas as páginas. Uso a função abaixo para adicionar o script na página:

require_once('../functions.php');

O problema é que, neste "functions.php" preciso fazer acesso a um banco de dados MySQL e joguei todas as informações de credenciais do banco (servidor, usuário, senha, banco) em um outro arquivo externo chamado "config.php". Nele só tenho mesmo as variáveis com os dados para acesso o DB.

 

O problema é quando eu incluo no arquivo "functions.php" o arquivo "config.php". E depois incluo o "functions.php" em qualquer outra página do site. O site para de funcionar. Ele não retorna nenhum erro porque está em uma hospedagem então a página fica em branco.

 

Não é marcado nada no arquivo "error_log" do servidor também então não tenho como saber o que está acontecendo.

 

Tenho quase certeza que se trata de um problema de localização do arquivo. Tenho outras páginas em outros diretórios e não funciona nestas páginas. Uso "../" antes do nome do arquivo para acessar da raiz mas mesmo assim não está funcionando.

 

Se alguém puder me ajudar, agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa página está um nível antes? Porque ../ se refere a um nível antes do que está a página que está chamando o arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim está um nível antes. Mas queria fazer de um jeito que ele estivesse sempre acessível independente do diretório. Os arquivo que estou incluindo estão na raiz, não tem um jeito de chama eles da raiz?

 

Outra coisa, poderia me explicar a diferença entre "require" e "require_once"?

 

Agradeço a atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

include(): Tenta incluir uma página. Caso de algum erro, o script retorna um warning (aviso) e prossegue com a execução do script. Aceita a passagem de variáveis (GET) na string. Pode ser utilizado em uma estrutura de condicionais que terá seu efeito perpetuado todas as vezes que for chamado.

 

Require(): Tenta incluir uma página. Caso de algum erro, o script retorna um fatal error(erro fatal) (Que maravilha!) e aborta a execução do script. Aborta mesmo, já era não roda nada mais dali pra frente. Não aceita a passagem de variáveis (GET) na string. Não recomendo que utilizem nas estruturas condicionais, a menos que se deseje o seu efeito, de ser executada apenas uma vez.

 

include_once() e require_once(): Idênticas as suas funções simples, porém se o arquivo referenciado já foi incluso na página anteriormente, a função retorna ‘false’ e o arquivo não é incluido. É bom quando temos muitos includes e já estamos perdidos, sem saber o que está incluindo o que.

 

 

Boas

Se seu arquivo config, só tem a conexão ao banco porque não faz uma função e coloca na pagina funções php.

 

 

function connect(){

$db = "xxx";

$host = "localhost";

$user = "root";

$pass = "xxx";

// tenta estabelecer uma conexão com o servidor

$connect = mysql_connect($host,$user,$pass);

 

// conseguiu conectar ?

if(!$connect){

// termina a execução do script e mostra uma mensagem de erro personalizada

die(trigger_error("<br>Não foi possível estabelecer conexão usando:<br>HOST: {$host}<br>USER: {$user}<br>SENHA: {$pass}<br>"));

 

return false;

 

}else{

 

// tenta Selecionar um banco de dados

$banco = mysql_select_db($db,$connect);

 

// conseguiu selecionar o banco de dados ?

if(!$banco){

// termina a execução do script e mostra uma mensagem de erro personalizada

die(trigger_error("<br>Não foi possível selecionar o banco de dados {$db}<br>"));

 

return false;

 

}else{

 

// se tudo der certo, retorna um identificador de conexão

return $connect;

}

 

}

}

 

e chame a função nas query de consulta.

 

$query = connect();

$query = "SELECT............

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom amigos, agradeço a ajuda de todos...

 

No fim, consegui resolver de uma forma muito simples, ficou mais ou menos assim:

<?php

require $SERVER['DOCUMENT_ROOT'] . "/functions.php";

?>

Desta forma ele ficou orientado pelo diretório raiz do servidor independente dos sub-diretórios e tudo mais...

 

Mais uma vez agradeço a ajuda de todos :yes:

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.