NIKESLB 0 Denunciar post Postado Julho 20, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Julho 20, 2011 Tente como getcwd() Compartilhar este post Link para o post Compartilhar em outros sites
NIKESLB 0 Denunciar post Postado Julho 20, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Julho 20, 2011 Nenhuma, o getcwd, até onde eu sei, ele te retorna a pasta que você está com o script. o Document ROOT, só te retorna a raíz dos documentos. Compartilhar este post Link para o post Compartilhar em outros sites
NIKESLB 0 Denunciar post Postado Julho 20, 2011 ok obrigado, problema resolvido :D Compartilhar este post Link para o post Compartilhar em outros sites
Artur Luiz 0 Denunciar post Postado Julho 20, 2011 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
NIKESLB 0 Denunciar post Postado Julho 20, 2011 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
NIKESLB 0 Denunciar post Postado Julho 21, 2011 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
Artur Luiz 0 Denunciar post Postado Julho 21, 2011 @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
NIKESLB 0 Denunciar post Postado Julho 21, 2011 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
Artur Luiz 0 Denunciar post Postado Julho 21, 2011 Se os documentos das subpastas forem chamados pelos documentos da pasta raíz, vai funcionar. Compartilhar este post Link para o post Compartilhar em outros sites
NIKESLB 0 Denunciar post Postado Julho 21, 2011 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: 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
Andrey Knupp Vital 136 Denunciar post Postado Julho 23, 2011 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