PHP: Problema de retrocesso do diretório raiz do documento
Pergunta
Estou tentando vincular a uma folha de estilo no meu arquivo de cabeçalho usando $ _server ["document_root"] da seguinte forma:
<head>
<?php
print "<link href='".$_SERVER["DOCUMENT_ROOT"]."/include/style.css' rel='stylesheet' type='text/css' />";
?>
<title>eLMS</title>
</head>
Como estou testando localmente, estou conseguindo o caminho como:
<head>
<link href='C:\Users\wretrOvian\Documents\eLMS\site/include/style.css' rel='stylesheet' type='text/css' /> <title>eLMS</title>
</head>
E isso não está se renderizando no Firefox. Isso acontece no IE, no entanto. Este é obviamente um problema de validação. Mas tentei o mesmo código em um servidor - com os mesmos resultados. :(
Como faço para consertar isso? O produto final pode ou não ser executado em um servidor local, então preciso que o código seja flexível.
Estou usando o Abyss Web Server X1 com Php 5.2.8
Devo usar caminhos absolutos - porque não quero copiar a pasta incluir todos os subdiretores do aplicativo. Eu preciso poder me referir a ele de todos os locais.
Solução
Basta usar isso:
<head>
<link href='/include/style.css' rel='stylesheet' type='text/css' />
<title>eLMS</title>
</head>
Ou, se for usado localmente:
<head>
<link href='../include/style.css' rel='stylesheet' type='text/css' />
<title>eLMS</title>
</head>
A raiz do documento é apenas para uso interno (dentro do PHP), não para o seu HTML.
Outras dicas
Tente usar:
$_SERVER['HTTP_HOST']
Não use um caminho absoluto do sistema de arquivos, use um caminho em relação a (mas não incluindo) a raiz do documento. Neste caso apenas /include/style.css
.
Para usar arquivos locais do navegador, use o file
esquema.
file://C:/dir/file.ext
file:///dir/file.ext
Não tenho certeza se você precisa de duas ou três barras, provavelmente duas no Windows com a letra de acionamento, três no *nix com a barra de raiz, embora eu pareça me lembrar de ter visto três barras com a letra de acionamento. Tente! : P
Tente usar o DIRECTORY_SEPARATOR
constante. Ele retorna nos sistemas Windows e / em sistemas nix.
Primeiro de tudo, a raiz do documento é literalmente o diretório em que o servidor da web está localizado. Você geralmente não deseja usar isso com qualquer conteúdo na web. Use / em vez disso.