![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
よろしくお願いします。
いま,navi.php内で同一ディレクトリ内のstyle.cssを読み込もうとしています。navi.phpは色々なディレクトリから取り込まれるため,どこから取り込まれてもstyle.cssにリンクできるようにしたいのです。絶対URLは使いたくありません。
調べていたら,dirname(__FILE__)を使えば良いと分かったのですが,hrefの中に取り込むやり方が分かりません。御指南ください。
<link rel="stylesheet" href="<?= dirname(__FILE__) ?>/style.css" type="text/css">
は試したのですが,うまくいきませんでした。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
絶対URLを使いたくない理由というのがなんなのかによるのですが、
HTMLのBASEタグを利用されてはどうですか。
http://www.htmq.com/html/base.shtml
<base href="http://example.com/dir/" />
こんな感じでHTMLに挿入してやれば、そのHTML中のsrcやhrefなどは、その指定したパスから見た相対パスを引くことが出来ます。
上記が書かれている状態で、
<link rel="stylesheet" href="css/style.css" type="text/css" />
などと記述してやれば、それは、「http://example.com/dir/css/style.css」を読むとみなします。
これであれば、HTML中の一箇所のみを変更すれば良くなり、更新も楽かと思います。
もしくは、絶対URLではなくて、絶対パスで指定してやれば、同様なことができるのではないかと思いますがいかがでしょう。
<link rel="stylesheet" href="/dir/css/style.css" type="text/css" />
このようにパスの先頭に「/」を指定してやれば、「http://example.com」以下の最初のパスから指定するということになります。
また、テスト環境と本番環境で書き換えなきゃいけないのが面倒だという理由なのであれば、
<base href="<?php echo $URL?>" />
として、
PHPスクリプト中に、
<?php
if(file_exists(dirname(__FILE__).DIRECTORY_SEPARATOR."test.txt"){
$URL = "http://localhost/"; //テスト環境のURL
}else{
$URL = "http://example.com/"; //本番環境のURL
}
?>
といったような記述をしてやって、テスト環境のディレクトリにだけ「test.txt」をおいてやれば
本番にUPするための修正が少なくなると思います。
いかがでしょうか。
No.3
- 回答日時:
#1です。
思いっきり誤報ですみません。
ローカルでしかやってなかったんで気がつきませんでしたが、
アップロードしてみたらlinuxのフルパス返してくれてました。
PHP内部で処理している分には、よかったのですが、
URLとなると、#2さんの方法でないと 無理っぽいです。
No.2
- 回答日時:
navi.php 内で dirname(__FILE__)すると、navi.php の存在するディレクトリが取得できますが、それをそのまま指定しただけでは、読み込み元のPHPからnavi.php を読み込んでいるディレクトリにはたどり着けません。
読み込み元のPHPのパスを逆に辿る必要があります。例えば、/path1/path2/show.php が /path3/navi.php を読み込んでいる場合、
navi.php と同じディレクトリのstyle.css を参照するには、
「../../path3/style.css」を指定する必要があります。
navi.php の __FILE__ からは「path3」を作り出すことはできますが、それだけではダメで、
「../..」を、show.php の方のパス($_SERVER[SCRIPT_FILENAME]から作り出す必要があります。
コードにすると、
---ここから---
<?php
function relativepath($srcfile, $dstfile) {
$srcdir=split('/', realpath(dirname($srcfile)));
$dstdir=split('/', realpath(dirname($dstfile)));
while (isset($srcdir[0]) && isset($dstdir[0]) && $srcdir[0] === $dstdir[
0]) {
array_shift($srcdir);
array_shift($dstdir);
}
if (count($dstdir) != 0) $dstdir[] = '';
$relative = str_repeat('../', count($srcdir)).implode('/', $dstdir);
return $relative;
}
?>
<link rel="stylesheet" href="<?= relativepath($_SERVER[SCRIPT_FILENAME], __FILE__) ?>style.css" type="text/css">
---ここまで---
こんな感じでしょうか。
No.1
- 回答日時:
> <link rel="stylesheet" href="<?= dirname(__FILE__) ?>/style.css" type="text/css">
使い方自体は正しいので、具体的にうまくいかないとは どういった状態でしょうか?
dirname(__FILE__) は そのファイル自身の絶対パスを返しますので、どこからincludeされても、ご希望通りの動きをしているはずです。
何通りか試してみて、HTMLのソースを見てみてはいかがでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
- HTML・CSS PrettierのHTMLの記述変更 linkタグ 1 2022/06/23 04:06
- HTML・CSS CSSが上手く反映されないみたいです 2 2022/11/21 16:19
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS プログラムの関連性を教えて下さい。 1 2023/07/19 03:50
- Ruby htmlの記述で link rel=stylesheet href=ress.cssの指定をする l 1 2023/04/02 21:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
wordpressのルートのindex.php...
-
PHP/icludeを使った相対パスの...
-
深い階層のフォルダの作成や削...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
PHPで新しいウインドウで開く命...
-
別ファイルの変数を呼び出した...
-
バッチを用いたフォルダの自動移動
-
php.ini を設定を変更すると再...
-
form actionで二つ送信先を指定...
-
phpの中でphpを書けないか
-
「@$変数」の「@の意味は?」
-
リダイレクトでPOST
-
PHPで、エラーがない場合のみ画...
-
フォームで戻った際に入力済み...
-
Subversionのリポジトリの削除
-
PHP8を使うと、大量のWarningが...
-
VBSの「MsgBox」について
-
php5.6でsimplexml_load_string...
-
VBでクラウドストレージにア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
index.phpに入るには、どうすれ...
-
include時の頭の良いパス指定に...
-
require_onceで読み込む場合、...
-
深い階層のフォルダの作成や削...
-
サイトパスに使用しているURLを...
-
.htaccessファイルの修正がこれ...
-
1つのcakePHPで複数のサイトを...
-
[PHP] 任意のDNSでIPアドレスを...
-
phpでページ分けする方法を教え...
-
PHP Linux から Windowsへの移行
-
zendのcontrollersについて
-
ゼンド フレイムワークがどうや...
-
mod_rewite?でのリダイレクト...
-
万国博覧会
-
歴史上の人物や宗教
-
PHPファイルが、そのまま見えて...
-
SSLに設置したらディレクトリパ...
-
変数値の渡し
-
ラミネート加工について
-
__FILE__をHTMLタグ内で使う
おすすめ情報