質問
次のように、$ _server ["document_root"]を使用して、ヘッダーファイルのスタイルシートにリンクしようとしています。
<head>
<?php
print "<link href='".$_SERVER["DOCUMENT_ROOT"]."/include/style.css' rel='stylesheet' type='text/css' />";
?>
<title>eLMS</title>
</head>
私はローカルでテストしているので、私は次のように道を手に入れています
<head>
<link href='C:\Users\wretrOvian\Documents\eLMS\site/include/style.css' rel='stylesheet' type='text/css' /> <title>eLMS</title>
</head>
そして、これはFirefoxでのレンダリングではありません。ただし、IEで行います。これは明らかに検証の問題です。しかし、私はサーバー上で同じコードを試しました - 同じ結果で。 :(
これを修正するにはどうすればよいですか?最終製品はローカルサーバーで実行される場合と実行されない場合があるため、コードを柔軟にする必要があります。
PHP 5.2.8でAbyss WebServer X1を使用しています
絶対パスを使用する必要があります - アプリのすべてのサブディレクトリにインクルードフォルダーをコピーしたくないからです。あらゆる場所からそれを参照できる必要があります。
解決
これを使用するだけです:
<head>
<link href='/include/style.css' rel='stylesheet' type='text/css' />
<title>eLMS</title>
</head>
または、それがローカルで使用されている場合:
<head>
<link href='../include/style.css' rel='stylesheet' type='text/css' />
<title>eLMS</title>
</head>
ドキュメントルートは、HTMLではなく、内部使用(PHP内)のみです。
他のヒント
使用してみてください:
$_SERVER['HTTP_HOST']
ファイルシステムの絶対パスを使用しないでください。ドキュメントルートに関連する(ただしない)パスを使用します。この場合、まさに /include/style.css
.
ブラウザからローカルファイルを使用するには、 file
図式。
file://C:/dir/file.ext
file:///dir/file.ext
2つまたは3つのスラッシュが必要かどうかはわかりません。おそらく、ドライブレターのあるWindowsで2つ、ルートスラッシュのある *nixで3つは、ドライブレターで3つのスラッシュを見たことを思い出しているようです。それを試してみてください! :p
を使用してみてください DIRECTORY_SEPARATOR
絶え間ない。 Windows Systemsおよび / on *nixシステムでを返します。
まず、ドキュメントルートは文字通り、Webサーバー /があるディレクトリです。通常、Web上のコンテンツでこれを使用したくありません。代わりに使用 /。