Ir para conteúdo

POWERED BY:

Arquivado

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

NIKESLB

[Resolvido] $_SERVER['DOCUMENT_ROOT'] não funciona

Recommended Posts

Olá,

não consigo fazer funcionar os meus includes com $_SERVER['DOCUMENT_ROOT']. Tenho um header e footer, estes estão numa pasta chamada "include". Ou seja, a estrutura das páginas são assim:

 

<?php include ($_SERVER['DOCUMENT_ROOT'].'/include/header.php'); ?>
conteudo
<?php include ($_SERVER['DOCUMENT_ROOT'].'/include/footer.php'); ?>

 

Só que ao por no servidor é como se não reconhecesse os includes. O caminho absoluto até a pasta include é este: "home/www/test.com/include"

O que falta para funcionar? ajudem por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim e resultou:

 

$path = getcwd(); 
include ($path.'/include/header.php'); ?>

 

Já agora encontrei outra maneira que é simplesmente por um ponto antes:

include ('./include/header.php'); ?>

 

Quais as diferenças entre o ".", getcwd() ou $_SERVER['DOCUMENT_ROOT']? Qual é o melhor para usar e quais as vantagens ou desvantagens?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode utiliza no seu index.php o seguinte.

<?php
define('SERVER_ROOT',dirname(__FILE__));

 

Acho que era isso que procuravas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode utiliza no seu index.php o seguinte.

<?php
define('SERVER_ROOT',dirname(__FILE__));

 

Acho que era isso que procuravas.

e isso irá fazer o quê? dizer que onde está o index.php é o root?

então como irei chamar o include no include? $_SERVER['DOCUMENT_ROOT'] não quer dar mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

já agora, esqueci-me referir algo importante. Eu tenho subpastas por isso "getcwd" não pode ser, porque tenho assim:

 

root

-home

-function

-js

-css

-...

____subpasta

--test1

--test2

____include

--header.php

--footer.php

 

e ao usar getcwd o caminho fica por exemplo: "root/subpasta/include" e o include não está nesta subpasta

Compartilhar este post


Link para o post
Compartilhar em outros sites

@NIKESLB Depois que colocar o

define('SERVER_ROOT',realpath(dirname(__FILE__)));

no topo da sua index é só utilizar

include SERVER_ROOT.'/include/arquivo.php';

 

 

Obs.: Adicionei a função realpath porque nunca se sabe neh =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

já há melhorias, pelo menos os documentos da pasta raiz funcionam.

Mas e para os ficheiros das subpastas?

 

include SERVER_ROOT.'/include/arquivo.php';

Colocar isso não dá

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se os documentos das subpastas forem chamados pelos documentos da pasta raíz, vai funcionar.

sim, mas além de chamar documentos de subpastas, queria que os documentos das subpastas chamassem documentos de outras subpastas.

Para fazer mais simples aqui vai uma imagem:

 

semttulo1qkb.jpg

 

Todas as páginas que vou incorporar estão na pasta "include". Ou seja, utilizar o código que forneceu no index.php (raíz) resulta. Agora tenho uma subpasta chamado aí "ivalice aliance", com o ficheiro "index.php" também. Como este ficheiro vai recuperar os include? sabendo que está ao mesmo nível mas noutra pasta. (como podem ver na imagem)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, basta você fazer a verificação nessas pastas, veja como:

<?php
     function includeFile( $Filename, $Path = 'pasta1|pasta2|pasta3|pasta4|/' ){
              $Pastas = explode( '|' , $Path );
              $Path = '';
              for( $i = 0; $i < sizeOf( $Pastas ); ++$i ){
                   $Filepath = sprintf( '%s/%s/%s', getcwd(), $Pastas[ $i ], $Filename );
                   if( file_exists( $Filepath ) && is_readable( $Filepath ) ){
                       $Path .= str_replace( '\\', '/', $Filepath );
                   }else{
                       $Path .= '';
                   }
              }
              if( !is_null( preg_replace( '/\s/', null, $Path ) ) ){
                  include_once sprintf( '%s/%s', dirname( $Path ), basename( $Path ) );
              }
     }
     includeFile( '...' );

 

No caso, ele vai verificar as quatro pastas, até achar o arquivo em uma delas

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.