• ベストアンサー

phpの階層が変わると上手く読み込めない

syuuiwsdの回答

  • syuuiwsd
  • ベストアンサー率56% (17/30)
回答No.2

a.phpにも <a href="php/a.php">a.php</a>のようなリンクが張っているのでしょう? やはり絶対パスを使って指定するほうがいいと思います。 どうしても相対パスを使いたければ、a.phpでパスの判断が必要ですね。例えば $currdir = getcwd(); if( preg_match("/(\/php)$/", $currdir ) echo "a.php"; else echo "php/a.php"; 以上のプログラムはイメージです。動くかどうか確認していません。 ご参考まで

anzyaa
質問者

お礼

回答ありがとうございます。 やはり絶対パスを使うのが懸命なようですね。 おとなしく絶対パスを使用したいと思います。 相対パスの際のプログラムのイメージも記述していただき、ありがとうございました。

関連するQ&A

  • HTMLの下階層から相対パスをしてもだめ

    いつもお世話になっております。 今回はhtmlについて教えて下さい。 まずトップページを作成しました。 ヘッダー・メニュー・フッターはインクルードをしています。 他の画像内容index.htmlと同列にimgフォルダを使ってます。 ここまでは完成しているのですが 次に新規でabcというディレクトリを作成しました 中身のindex.htmlは、ひとまずトップページのindex.htmlをコピーして 修正を行いcssや相対パスや画像の書き換えは行いました。 コンテンツの中の画像は反映されるのですが ヘッダー・メニュー・フッターの画像がなぜか表示されません。 普段はPHPを使用しているのですが 画像は表示されないことがなかったため 何か間違っているのか教えていただきだいと思い書き込み致しました。 トップページは普通に表示されます ディレクトリを作るとcssは効いていますが 画像のようになります。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • phpでincludeをするときのパスについて

    phpでincludeをするときのパスについて <?php include "/home/a.php"; . . . ?> のようにして、ルートディレクトリのファイルにアクセスしたいのですが、 /が先端にあるとファイルにアクセスできないのです。 どのようにしたらルートディレクトリのファイルをincludeできるのでしょうか

    • ベストアンサー
    • PHP
  • PHPでのドキュメントルート指定方法

    PHPでのドキュメントルートの指定方法がうまくいかず困っています。 マルチドメインで組んでいます。 公開ディレクトリのルートは /home/hoge/www になります。 wwwの中に/piyo/でマルチドメインを組んでいます。 →絶対リンクを/home/hoge/www/piyo/ ここに指定したいです。 あるサイトを見てcommon.phpを作成し、index.phpと同じ階層に置き、index.phpの頭に <?php include 'common.php'; ?> を指定すると設定ができると記載されていたので下記の様に設定しました。 // common.php // <?php // サーバー上の絶対パスを記入 // これは公開ディレクトリのルート(サイトのルートディレクトリ)と一致 $__DOC_ROOT__ = '/home/hoge/www/piyo/ <http://piyo.co.jp/> '; ?> // index.php // <?php include 'common.php'; ?> <!doctype html> <html lang="ja"> … <?php echo $_SERVER['DOCUMENT_ROOT']; ?> … </html> echoで呼び出してみましたがサイトのルートディレクトリが /home/hoge/www こちらになり変更されていませんでした。 これを /home/hoge/www/piyo/ に変更したいと思います。 ご回答よろしくお願い致します。

    • ベストアンサー
    • PHP
  • index.htmlの省略

    私のサイトのトップページへのリンクはすべてcom/で区切っていますが、 その下のディレクトリにもcom/A/index.htmlがありまして その場合トップページからだとcom/A/なんですが、そのA/index.htmlのサイトのコンテンツからは相対パスなのですべてindex.htmlになってます。 Googleなどから見ると、最初にインデックスするのはトップページなのでそこから見に来た場合、A/にくると思います。そしてインデックスすると思いますが、 それ以降その中のコンテンツを見てもすべて相対パスでindex.htmlです。そうすると違いが出てきて、A/のサイトはトップからのリンク一つで、index.htmlへのリンクはその下のコンテンツから30のリンクをもらっていることになります。 これはAのディレクトリの中のindex.htmlへのリンクはすべて絶対パスでやったほうがいいのですか。 それともトップページからのリンクを相対パスでindex.htmlありにしたほうがいいのでしょうか。 Googleでサイトオープンして3ヶ月くらいたつのにトップとそのディレクトリの中のindexしか登録されていない状況です。関係あったりしますか。サイトマップ送ったりもしましたが。 Yahooではほとんどインデックスされその後カテゴリにも登録されました。

    • ベストアンサー
    • HTML
  • PHPでメニューを参照した時の画像

    Webサイトをやっていて、PHPでメニューを読み込んでいます。 ディレクトリは以下のようになっていて index.php menu.php text(フォルダ) ー text.php img(フォルダ) ー logo.png menu.phpでlogo.pngを使用する際にはHTMLで><img src="img/logo.png">と読み込んでいます。 ここで、index.phpなどのmenu.phpと同じ階層にあるPHPファイルで<?php require("menu.php");?>と読み込むとちゃんとlogo.pngが表示されるのですが、 textフォルダ内のtext.phpから<?php require("../menu.php");?>と読み込むと画像が読み込まれません。 調べてみると、logo.pngの位置をimg/logo.pngではなくtext/img/logo.pngという風に解釈しているようです。 これを解決する方法はありませんでしょうか?教えて下さい。

    • 締切済み
    • PHP
  • テンプレート化したphpのmenu.php内で<a href="#">の戻り値が重複してしまう。

    PHPの勉強の為、簡易テンプレートを作成しているのですが、config.php内で指定したURLをmenu.phpで実行させたところ戻り値が重複して困っています。 ※wordpessなどで見かけるURLテンプレートタグによって、<a href="この部分">のhttp~のURLを書かなくてもいいようにしたいです。 【各ファイル】 ●index.php ●config.php [templatesフォルダ] footer.php header.php ●menu.php style.css [htmlフォルダ] ●index.php トップのindex.php内では、<?php require_once('config.php'); ?>にてconfig.phpを読み込んでいます。 メニューはパーツ分けしたので、<?php include "templates/menu.php"; ?>にて読み込んでいます。 config.phpでは、URLの戻り値として、 <?php define(SITE_URL, "http://www.yahoo.co.jp"); ?> を指定しています。 上記をtempleatesフォルダ内のmenu.phpで実行させました。 <ul> <li><a href="<?php echo SITE_URL; ?>">HOME</a></li> <li><a href="<?php echo SITE_URL; ?>/html/index.php">テスト</a></li> </ul> これで、絶対パスを書かなくてもURLが作れると思ったのですが、実際の戻り値が、 http://www.yahoo.co.jphttp://www.yahoo.co.jp と重複してしまい、ページ移動ができません。 これは、どうしてなのでしょうか? どなたか教えていただけないでしょうか。

    • ベストアンサー
    • PHP
  • HTMLの階層について

    現在HPを作成しているのですが、HTMLファイルが多くなってきたので 新たにフォルダを作ってそこに入れようと思っています。 図のような構成で<a href="html/a.html">と記入しリンクをクリックすると 「about:blank」というページが新しく出てくるようになりました。 この症状はHTMLファイルをindexと同じディレクトリに入れて<a href="a.html">とすると解決します。 特にJavaScriptをいじってはおらずまたこのような動きは良しとしていません。 別のところで同じ質問をした際に「htmlファイルを置くディレクトリが『html』というのでダメなのでは?」 という回答をいただいたのですが、名前を変更しても改善されませんでした。 どのようにすれば別ディレクトリでのリンクが貼れるのでしょうか? 特別なソフトは使用しておらず、Notepadで手打ち入力しています。 また下記のサイトで配布されているテンプレートを使っています。 http://pondt.com/tmp2-2/

  • PHP内にHTML読み込み時のファイルパス

    PHP初心者です。 Web頁作成の際、メニュバナーを一元共有したいと思い、苦戦しております。 / index.php | |-/Banner   |-_banner.html   |-バナー用画像1   |-バナー用画像2    ・・・ |-/Folder1 |-/Folder2 上の様なフォルダ構造で、index.phpや「/Folder1」「/Folder2」等に入っているコンテンツファイルから、「/Banner」内に格納したhtml(+Javascript)で作成したメニューファイル「_banner.html」を、phpを使って共有したいと考えています。 index.phpから、_banner.htmlファイルの読み込みは、以下のrequire関数で読み出すことに成功しています。  (require(dirname(__FILE__)."/_Banner/_banner.html") が、「/Banner」フォルダ内に格納した、バナー用画像ファイルが、表示されません。 html自体が相対パスの為、ファイルパスが通らないことが原因であることは理解できるのですが、PHP初心者の為、どの様な関数を使えば、html内のファイルパスを変更できるのかが、わかりません。 過去、似た様な質問がされていることとは存じますが、どなたか、対処法ご教授願えませんでしょうか?

    • 締切済み
    • PHP
  • エステサロンなどの美容系ポータルサイトをphpで作りたいと思ってphp

    エステサロンなどの美容系ポータルサイトをphpで作りたいと思ってphpを勉強中なのですが、質問です。 今現在すべてXTHMLで作ってあるのですが、 更新しやすいようにphp+mysqlで作りたいと思いphpを1から勉強中なのですが よくあるphpのサイトを見ると階層が以下のようになっています。(お店ページはタブでアクセス、メニュー等切り替わります) 参考サイト http://beauty.hotpepper.jp/ index.php esthe ├仮にお店A |  ├index.php |  ├お店Aのメニュー |     ├index.php |  ├お店Aのアクセス |     ├index.php ├仮にお店B |  ├index.php ・ ・ ・ というようにひとつひとつのページがフォルダに入っています。 今現在の私のサイトの作りは以下のようになっています。 index.html お店A.html お店Aのimgフォルダ お店B.html お店Bのimgフォルダ というようにすべて同じ階層にあります。 というのも更新の際に FTPソフトを使ってサイトの階層からページを選び、ファイルをdreamweaverにひっぱって開いています。(macを使用) なのでいちいちファルダに入れた階層だと、開いて開いて開いてひっぱる、、そして別のページの更新もあれば戻ってまた繰り返し。。 という風に手間になってしまうのではないかと思ってしまうんですが、 そもそもphpではそういう作りになってしまうんでしょうか? もし狙ってやってるとしてら、何か利点があるのでしょうか?(indexを省略してurlを見やすくしてるだけ?) それともphpを勉強しているうちに気づくのでしょうか? また、同ドメインで携帯サイトも運営しているのですが これも同じ階層に全てページがあります。 index.html お店A.html お店Aimgフォルダ i.html(←携帯サイトTOP) i-a.html(←携帯サイトお店Aページ) これは.htaccessの関係 iのフォルダを作って階層を分けた方が今後便利でしょうか? すいませんが、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • phpにapacheを組み込む方法

    php初心者です。 「はじめてのphpプログラミング」という本を買ってapacheをphpに組み込もうとしているのですがわからないところがあったのでここで質問させてください。 まずapache2.2.9-win32-x86-nosslr2.mslをインストールし、 ちゃんとhttp://localhost/にIt works!と出たのですが このあと C:\Program Files\Apache Group\Apache2\conf\httpd.confをテキストエディタで開き、 AddType application/x-httpd-php .php LoadModule php5_module "c:/php5/php5apache2_2.dll PHPIniDir "c:/php5/ Alias /hajimete_php5/ "C:/hajimete_php5/" <Directory "C:/hajimete_php5"> Options Indexes FollowSymLinks AllowOverride Options Order allow,deny Allow from all DirectoryIndex index.php index.html </Directory> <Directory "C:/hajimete_php5/SQLiteManager"> php_value error_reporting 6143 </Directory> というのを追記し保存しなさいとあるのですが、 まずProgram FilesにApache Groupというフォルダがありません。 Apache Software Foundationというフォルダはあるのですが・・・・ そこの中のconfのhttpd.confを変えればいいのかなと思って 変えて上書き保存してみようとしても 「ファイルC¥:~httpd.confを作成できません。 パスおよびファイル名が正しいかどうか確認してください。」 とでてしまいます。 どうしたらいいのでしょうか? わかる方いましたらアドバイスお願いたします。 これがだめならphpが使えるレンタルサーバーを借りてそこでやろうかなと考えています。

    • ベストアンサー
    • PHP