• ベストアンサー

include_pathに絶対パスを使うことはできないのでしょうか?

include_pathに絶対パスを使いたいと思っています。 本当は php_value include_path "/common/php" としたいところですが、上手くいかなかったので php_value include_path ".:common/php:../common/php:../../common/php" として、ほとんどの階層からの相対パスを指定することで、上手く動くようになりました。 しかし、どうしても絶対パスで指定したいです。他のサイトでinclude_pathを調べても、どこも絶対パスでやっています。私は何がいけないのでしょうか……?

  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

絶対パスは使えますよ。 aiueo667さんが書いているのは、絶対パスで無いため上手く行かないのです。 include_path に書くパスはサーバ上のパスであってWEB上のパスではありません。

aiueo667
質問者

お礼

> include_path に書くパスはサーバ上のパスであってWEB上のパスではありません。 そうだったんですか。ありがとうございます、これで今までの悩みが解消されました!!

その他の回答 (1)

noname#227352
noname#227352
回答No.2

aiueo667さんが記述しているのは,ドキュメントルートからの相対パスです。 絶対パス=URLと思われている方も多いと思いますが、絶対パスとは、サーバ環境内のパスなのでレンタルサーバなんかで判らない場合は、サーバ管理者に問い合わせましょう。 /home/*****/public_html/common/phpとか…。

aiueo667
質問者

お礼

通りでうまくいかなかったわけです……。確かにどこのページにもドキュメントルートからの相対パスで書いているところなんてありませんでした。 自分の頭の悪さにあきれるばかりです……。

関連するQ&A

  • includeのパス指定は"/"で始められない?

    こんにちは。php5でウェブアプリを作っています。 いろんな階層からincludeされるファイルの中にさらにincludeを記述しているため、相対パス指定ではなく、ドキュメントルートからのパスを include("/top/hoge/aaa.php"); のように書きたいのですが、こうすると読み込んでくれません。includeではこういう指定は出来ないんですか? みなさんどうなさってますでしょうか。includeファイルの中のinculdeのパスの指定…。

    • ベストアンサー
    • PHP
  • php インクルードincludeした時のパス

    phpにてincludeした時のパスで躓いています。 現在のツリーは以下の様になっています。 index.html common  ├header.html  ├footer.html  ├right.html  ├img   ├navi-home.jpg   ├navi-1.jpg  ├css   ├base.css salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html この中の../hair/kari/index.htmlの中に ../common/header.html及びfooter.htmlを <?php include_once(dirname(__FILE__).'/../../../common/header.html'); ?> にてインルードしています。(書き方あってます?dirname(__FILE__).いります?) つぎに../hair/kari/access/index.htmlの中にもインクルードします。 <?php include_once(dirname(__FILE__).'/../../../../common/header.html'); ?> という風に一つ下の階層なので../を付け足しました。 このようにページ毎にheaderまでの相対パスが違うので、そのページ毎にパスを書き換えていかなければいけないものなのでしょうか? また../始まりではなく/始まりでないと表示されません。 /始まりは絶対パスでしたっけ? この書き方は間違っているのでしょうか? そして最後に、 ../common/header.htmlの中の画像ファイルやリンクは <img src="/common/img/navi-home.jpg"> の様に書かないと、インクルードしたファイル側で表示されません。 これも同じように/始まりのこの書き方でいいのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPをインクルードした時の画像パスについて

    PHPでページをインクルードをしようと思っています。 index.htmlにインクルードするページを仮にaaa.htmlとbbb.htmlとします。 aaa.htmlとbbb.htmlはcommonというフォルダに入っています。 aaa.htmlなどに使われている画像はcommonの中のimgというフォルダに入っています。 階層を表すと index.html common  ├aaa.html  ├bbb.html  ├img   ├gazou.jpg   ├gazou2.jpg というふうになっています。 そこで、index.htmlに <?php include("common/aaa.html"); ?>でインクルードし インクルードするaaa.htmlに設置してある画像には ../common/img/gazou.jpg というパスで設置しました。画像の確認はindex.htmlで確認済みです。 ※img/gazou.jpgではなぜかダメでした。(aaa.htmlからの相対パスではなく、インクルードした側にindex.htmlからの相対パスになるのでしょうか?) 次に salonというフォルダにあるhair(ヘアサロン)のフォルダにあるkari(仮)というお店ページを作ります。 階層は以下のようになっています。 index.html common  ├aaa.html  ├bbb.html  ├img   ├gazou.jpg   ├gazou2.jpg salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html   インデックスがあり、アクセスページ、メニューページなどさらに一つ入るといった作りになっています。 ここのページにもtoppageのindex.htmlと同じようにaaa.htmlなどインクードします。 階層が違うのでsalon/hair/kari/index.htmlへのインクルードは <?php include("../../../common/aaa.html"); ?> で行いました。問題なくインクルードはできたのですが、画像がつぶれています。 階層が違うからですよね? このように階層が異なるデータで 共通のインクルードをしたい時はどうしたらいいのでしょうか? 階層が違くとも共通で入るヘッダー等作りたいのです。 環境はテストなのでアパッチ、ローカルサーバーで見ています。 本アップしないと見れないのでしょうか? お願いします。

    • ベストアンサー
    • PHP
  • 階層が違う場合の絶対パス相対パスについて

    kari.htmlにある内容のボックスがあるとして、 それはCSSでデザインされ、画像も入っています。 この下の階層の menu.htmlの中にkari.htmlで使ったある内容ボックスの同じものがまるまる入ります。 なので、kari.htmlの内容を更新してコピーしてmenu.htmlにもはります。 この場合、画像やCSSを相対パスではなく、絶対パスにしておくと、階層が異なっても きれいに入ります。 ../からではなく、/から始まるパスです。 このやり方は間違っているのでしょうか? 同じようにページ、階層を渡って共通部分には絶対パスをしています。 こういうふうに使い分けしていくものでしょうか? phpでインクルードしてもいいんですが、他にもインクルードが多々あるので、 ページ内でそんなにインクルードあってもいいものかと思いまして。。(勝手な勘違いでしょうか?) 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • メニューをincludeして、階層が変わっても相対パスで可能

    こんにちは。 メニューをincludeしたんですが、 階層が変わると リンク先が相対パスでは上手くいかなくなるのですが、何か良い対策はありませんか? 絶対パスでいくしかないでしょうか?

    • ベストアンサー
    • PHP
  • requireでの絶対パス

    いつもお世話になっております。 requireを使ってファイルをインクルードしているのですが、その際は相対パスで記述しています。 <?php require("../template/test.php"); ?> これを絶対パスでうまく記述する方法はあるのでしょうか? 通常、絶対パスで書いてしまうと、iniファイルで定めた絶対パスの指定フォルダが対象になってしまうため、サーバー上での絶対パスにしたいのですが…。 方法がありましたらご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • include_path の設定について

    趣味でpearのNet_UserAgent_Mobileライブラリを使用して携帯サイトを作成しておりますが、その各ライブラリファイルで require_once 'Net/UserAgent/Mobile/*****.php'; のようなコードがあるのでそれを変更したくないのと色々な場所からライブラリを使用するのでその都度相対パスを設定したくないので.htaccessでパスの設定をしたいのですが include_pathを設定するとPEAR.phpのパスが設定されてしまいます。その為 require_once 'PEAR.php'; のところでエラーが出ます。 include_pathはあくまでPEAR.phpのパスの設定しか出来ないのでしょうか。 【ライブラリファイルのおいてある場所】 /home/*****/public_html/mobile/Net/UserAgent/Mobile/ 【.htaccess設定】 php_value include_path ".:/home/*****/public_html/mobile/

    • ベストアンサー
    • PHP
  • php_value include_pathを無効

    php_value include_pathを、あるディレクトリ以下では、無効にしたいのですが、 どうすればよいでしょうか? ■前提 ・サイト全体は、「.htaccess」に「php_value include_path」を書いて制御 ■やりたいこと ・ある特定ディレクトリ「hoge」以下では、「php_value include_path」ではなく、 PHPに直接書いた「require_once './★★/●●';」を利用したい ・つまり、設定ファイル「.htaccess」に記述した中のある一部分(特定ディレクトリ以下)だけは、「PHPソースに記述」したincludeパスを使いたい ■試してみてダメだってこと ・「hoge」に「.htaccess」を設置し、空の「php_value include_path=""」と書いてみたけど、うまくいきませんでした

    • ベストアンサー
    • PHP
  • INCLUDE VIRTUALで読み込むファイルのパス

    <!--#INCLUDE VIRTUAL="/xxx.html"-->でメニュー部分などを1つのHTML(xxx.html)で読み込みたいです。ただ、メニュー部分のHTML側の画像URLなどを相対パスで記載したすると<!--#INCLUDE VIRTUAL="/xxx.html"-->を記載するファイルに階層が異なるものがあったときには、パスが違ういうことになってしまいます。(xxx.html自体は読み込めるのですが、画像URLなどが異なってしまう)これは絶対パスで記載するしかないのでしょうか?

    • ベストアンサー
    • HTML
  • include_pathに関する質問

    ローカル環境で、PHPの動作確認をしています。 サイト内のサイドバーなどをincludeしているんですが、ディレクトリ毎にパスを変更するのはとても手間がかかるため、.htaccessにinclude_pathの設定をして、「/」から始まる絶対パスで統一したいと考えております。 しかし、.htaccessでinclude_pathを設定して、include '/sidebar.php'; と書いても、includeすることができません。 なぜでしょうか? ちなみに私の作業環境なのですが、ローカルでPHPを動作させる場合は、私の場合は次の場所にファイルを保存することでブラウザから http://localhost/ にアクセスすることで確認することができます。 C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/ そして、複数のサイトを運営しているため htdocs の下に example.com というディレクトリを作って、サイトを管理しています。 example.com というサイトの動作確認をする際は、ブラウザから http://localhost/example.com/ のようにアクセスします。 そして、.htaccessには次のように記述しました。 ―.htaccess php_value include_path ".:C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/example.com" ―index.html <?php include 'sidebar.php'; ?> include_pathの設定の仕方がよく分からず、最初は http://localhost/example.com と設定してみましたが、上手くいかなかったので上記のように設定しました。 ローカルでのテストが終わったら、サーバーにアップロードする際に、.htaccessを書きなおしてからアップロードする予定です。(書きなおすのは非常に面倒ですが、他に方法が分かりません。何か良い方法があれば教えていただきたいです。) 以上長文になりましたが、よろしくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう