Ir para conteúdo

POWERED BY:

Arquivado

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

mhqmelo

[Resolvido] Problema com includes

Recommended Posts

Boa tarde a todos,

é o seguinte, estou atualizando um site de uma empresa, e em "localhost" ele funciona perfeito, porém quando hospedo ele (no Godaddy) ele aparece esse erro:

 

Warning: include(/includes/header.php) [function.include]: failed to open stream: No such file or directory in /home/content/22/7819322/html/index.php on line 1

 

Já fiquei mais de 3 horas procurando a solução no google e nada.. Não tem nenhum arquivo php.ini no diretorio q eu possa mexer pq já está "dentro" do godaddy. Tem uma pasta STATS e dentro dela os arquivos:

 

.htaccess
Options +Indexes

 

so que eu não tenho permissão pra mudar ele. Alguém poderia me informar o que eu devo fazer? Muito obrigado

 

Detalhe:

se eu entro em outra pasta por exemplo: www.meusite.com/contato ou www.meusite.com/empresa, ele funciona! Só não funciona a pagina principal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, passa o código ai do teu Index, embora eu acredite que seja problemas quando aponta ou melhor, os diretórios do Localhost podem não ser o mesmo que hospedado, pelo menos em questão de nível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você chama esse arquivo dentro de outro arquivo? por exemplo:

 

index.php

include('arquivo1.php');

 

arquivo1.php

include('arquivo2.php');

 

Se for isso, me diz se o index, arquivo1 e o arquivo2 estão na mesma pasta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho o index na pasta raiz, os includes ficam todos dentro da pasta includes.

 

no index está assim:

<?php include '/includes/header.php'; ?>

 

Os outros includes que são chamados dentro da mesma pasta, eu removo o /includes, por exemplo

<?php include 'menu.php'; ?>

 

Mais nesse caso, está dando erro no index, o index que não está "vendo" a pasta includes.

 

O localhost e a hospedagem estão no mesmo nivel, justamente para não ter erros de caminho, estão todos arquivos na pasta raiz do htdocs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilize a função glob para verificar quais são os arquivos que o index está visualizando, ai pode te dar um posicionamento do que acontece.

 

coloque assim na página inicial:

<?php 
var_dump( glob('*') );
?>

 

ele dará um dump em todos os arquivos/pastas (não sub-pastas) que estão referentes a index.php

ai você pode ver a estrutura dos arquivos para ver o caminho correto até o arquivo. Já tive problemas parecidos, mas foi pelo uso de ajax onde a "posição" para a chamada do arquivo muda e assim não encontrava o arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel Heming fiz isso, olha o resultado:

 

array(11) { [0]=> string(7) "contato" [1]=> string(3) "css" [2]=> string(6) "cursos" [3]=> string(6) "images" [4]=> string(8) "includes" [5]=> string(9) "index.php" [6]=> string(13) "institucional" [7]=> string(2) "js" [8]=> string(8) "noticias" [9]=> string(8) "servicos" [10]=> string(5) "stats" }

Compartilhar este post


Link para o post
Compartilhar em outros sites

para esse tipo de problema eu fiz o seguinte, tenta ai pra ver se da certo:

 

Criei um arquivo chamado includes.php

 

nesse arquivo eu coloquei o seguinte código:

if(file_exists('header.php'))
require_once('header.php'); //ao invés do require_once pode usar include ou include_once
elseif(file_exists('includes/header.php'))
require_once('includes/header.php');
else
require_once('../includes/header.php');
$header = new Header();

na Index substitue o

<?php include '/includes/header.php'; ?>

por

<?php include 'includes.php'; ?>

E na index basta você utilizar a variavel $header para instanciar seus métodos.

 

Se você quiser ainda pode repetir o código do includes.php nas linhas debaixo, só alterando o nome do arquivo que é incluído e da variável que recebe a classe. Mas se você não tiver trabalhando com classes, é só tirar o final do includes.php Exemplo:

 

if(file_exists('header.php'))
require_once('header.php'); //ao invés do require_once pode usar include ou include_once
elseif(file_exists('includes/header.php'))
require_once('includes/header.php');
else
require_once('../includes/header.php');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser erro de minha parte, mas tenta remover a / da frente do include, para deixar assim.

<?php include 'includes/header.php'; ?>

 

Conforme o dump do glob, existe a pasta include, caso não funcionar

 

faça o dump apenas do diretório include, dentro da index, faça o seguinte:

<?php 
var_dump( glob('includes/*') );
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho mais seguro usar "sempre" assim:

 

<?php include $_SERVER['DOCUMENT_ROOT'].'includes/header.php'; ?>

acabei de ter problemas com path de máquinas aqui...

 

dessa forma, você "garante" q vai buscar sempre desde a raiz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era o caminho, ao invés de /includes/header.php eu mudei para includes/header.php

 

tirei o "/".

 

Muito Obrigado a todos que ajudaram! :natalbiggrin:

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.