• 締切済み

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
  • 回答数1
  • ありがとう数2

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

>> htaccessでinclude_pathを設定して、include '/sidebar.php'; >> と書いても、includeすることができません。 >> なぜでしょうか? 絶対パスで、sidebar.phpをインクルードしているので、include_pathの設定が無意味です。 include 'sidebar.php'; とするか include './sidebar.php'; としてみてください

aiueo667
質問者

お礼

include 'sidebar.php'; としても include './sidebar.php'; としても表示されませんでした。 それよりもDreamweaverで管理していたサイトの一部をPHPでインクルードしようと思って、メインテンプレートに <?php include './sidebar.php'; ?> と書いて更新したところ、すべてのページが文字化けになってしまい、バックアップから復帰させるはめになりました……。 .htaccessの設定は php_value include_path ".:C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/example.com" でよろしいのでしょうか?

関連するQ&A

  • include_pathについて

    php.ini内のinclude_pathをinclude_path=".;C:\php\include"と設定してC:\windows\(不安なのでC:\php\にも)に置いているのですが、 なぜかphpinfo()を開いて確認すると".;C:\php5\pear"となっています。 Loaded Configuration File を見ても C:\Windows\php.ini となっていますし。 require_once "DB.php"を実行したときに以下のエラーが出たので、 db.phpのインストールも済んでいることから、include_pathが正しく設定されていないのが問題だと思うのですが・・・ Warning: require_once(DB.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\users.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'DB.php' (include_path='.;C:\php5\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\users.php on line 2 php.ini以外にも設定しなければいけない個所があるのでしょうか?

    • 締切済み
    • PHP
  • php include がどうしてもできません;;

    php include がどうしてもできません;;; php、超がつく程初心者です; Windows7、Internet explorer9、Apache2.2、PHP5.4.6、現在はlocalhost上でphp動作確認、 作業しております。 サイトのメニューをPHPで作成したいと思い色々必死に調べ、htdocsフォルダ直下同士?のphpは何とか表示させることができました。(localhostですが) しかしhtdocsより下のフォルダに入っているものですと、例え同階層でも表示がされません; ↓のような感じで完全に詰まってしまいました; htdocs/index.html に htdocs/topmenu.php を表示させる↓ htdocs/index.html内で <?php include(dirname(__FILE__).'/topmenu.php'); ?> → 成功 htdocs/naiyou/naiyou1.html に htdocs/naiyou/menu.php を表示させる↓ htdocs/naiyou1.html 内で <?php include(dirname(__FILE__).'/menu.php'); ?> → 失敗 htdocs/naiyou/naiyou1.html に htdocs/topmenu.php を表示させる↓ htdocs/naiyou1.html 内で <?php include(dirname(__FILE__).'/../topmenu.php'); ?> → やっぱり失敗 htdocsフォルダ直下のみでしかできない設定に私がしてしまっているのでしょうか。 元々直下のみしか表示できないもの…? それとももっと基本的なところでひかかっているのかな… 何かのパスが間違っているのでしょうか。 htdocsフォルダの場所とDocumentRootは共に "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs" となっています; 知識不足もあり言葉が足りないこと、説明がよく分からないことも多いこともあるかと…すみません。 既出の質問等も探しているのですが同条件を中々見つけられず、もうかれこれ1ヶ月近く解決せず悩んでいます。 申し訳ありませんが、どなたかご教授ください...;

    • ベストアンサー
    • PHP
  • phpのinclude_pathのエラーについて

    phpで以下のエラーが出ております。 いろいろ試しているのですが、解決できません。 各種設定ファイルに設定の誤りがあるのでしたら教えていただきたいと思います。 1)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes') in C:\Apache2\htdocs\aaa\ins.php on line 26 2)Fatal error: main(): Failed opening required '' (include_path='.;c:\php4\pear') in C:\Apache2\htdocs\aaa\ins.php on line 26 c:\php4\pearというディレクトリは存在しないがなぜか出る。 3)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26 4)Fatal error: main(): Failed opening required '' (include_path='.;C:\Apache2\htdocs\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26 ##ins.phpのソース: $tpl = "ccc.tpl"; require_once($tpl); ##ディレクトリ構成 C:\Apache2\htdocs\aaa ins.php ccc.tpl ##php.iniの設定: ---有効にした場合1)のメッセージ include_path = ".;c:\php\includes"  ---コメントアウトした場合2)のメッセージ ;include_path = ".;c:\php\includes"  ---以下のpathにフォルダを作成してccc.tplを配置した場合3)のメッセージ include_path = ".;c:\php\includes\aaa" ---以下のpathを指定した場合4)のメッセージ include_path = ".;C:\Apache2\htdocs\aaa" ##httpd.confの設定: line 231 DocumentRoot "C:/Apache2/htdocs" line 256 <Directory "C:/Apache2/htdocs"> AllowOverride Options AuthConfig ##環境 os:winXP apache2:apache_2.0.58 php:PHP Version 4.4.1

    • ベストアンサー
    • 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_pathの設定

    .htaccessでインクルードパスの設定をしたいのですが、 500 internal server error がでます。 どうしたらエラーが出ず正しくできるのでしょうか。 よろしくお願いします。 ・下記は.htaccessファイルに書き込んだ内容 php_value include_path ".:/home/u62/public_html/PEAR" ・下記はPEARフォルダの配置場所 /home/u62/public_html/PEAR ・下記は現在のinclude_path include_path .:/opt/php-5.3/pear

    • ベストアンサー
    • PHP
  • include_pathに絶対パスを使うことはできないのでしょうか?

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

    • ベストアンサー
    • PHP
  • PEAR include_pathについて

    はじめまして。色々と調べてみたのですが解決できずにいます。誰か助けて頂けると助かります。学校の部活で「PEARのXML_RSSでRSSを取得してみよ」という課題が出ました。私の家では全てのPCがマックなのでMAMPをつかって以下のような環境でやっています。そこで http://o-ume8.com/junsdiary2/archives/2006/08/20060806_1726.phpを参考に課題に取りかかろうとして試しにPEAR_Infoを試してみたのですが Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/pear_info.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.:/Applications/MAMP/bin/php5/lib/php') in /Applications/MAMP/htdocs/pear_info.php on line 2 の様なエラーが出てしまいます。 pathが通ってないのでしょうか? それとターミナルでphp -v と打つともとのOSの4.4.4と出ます。 phpinfoではちゃんと5.2.0と出ます。 ご教授お願いいたします。 =====環境==== MAMP 1.5 beta 1 PPC os osx 10.4.8 Apache/2.0.59 php 5.2.0 <php.ini> include_path = ".:/Applications/MAMP/bin/php5/lib/php"

    • 締切済み
    • PHP
  • php.iniのinclude_pathのデフォル

    php.iniのinclude_pathのデフォルト値にたいして質問です。 現在PHP 5.6.6 をremi-56のリポジトリから、centos6にインストールしました。 そして、phpinfoを確認すると、 「include_path」の欄に「.:/usr/share/pear:/usr/share/php」とありました。 しかし、「php.ini」の中を検索しても、include_pathは、「;include_path = ".:/php/includes"」などのようにすべてコメントアウトされていました。 phpインフォをみたとき、include_pathに「「.:/usr/share/pear:/usr/share/php」が設定されているのは、デフォルトで決まった値なのでしょうか? どこか、設定ファイルにその値がかかれたりしているのでしょうか? httpd.confを検索しても、phpのパスを設定している様子もなく、.htaccessなども設置してないので、一体このデフォルト値はどこから来てるのか不思議です。 分かる方いましたら教えてもらえないでしょうか?

    • ベストアンサー
    • PHP
  • smartyの設定 include?path以下の設定がわからない

    独学でPHPを学んでいます。 PHPの基本はひととおり理解はできました。 開発環境・最新のXAMPP導入。 windows、OSはVISTA smartyをインストールしましたが、その設定につまずいています。 Smarty.class.phpが存在するパス(D:\xampp\libs)をphp.iniファイル447行目を下記のように設定しましたが、うまくいきません include_path=D:\xampp\libs\ xamppフォルダの下にlibsフォルダを入れたので上のパス指定で問題ないと思うのですが、どこが間違っているのでしょうか。 ちなみに、libs以下の\も不要だろうと思い、消したりして試してみましたが、結果は同じ。下記のように表示がなされます。 Warning: require_once(local/xampp/libs/Smarty.class.php) [function.require-once]: failed to open stream: No such file or directory in D:\xampp\htdocs\lesson\smarty1.php on line 3 Fatal error: require_once() [function.require]: Failed opening required 'local/xampp/libs/Smarty.class.php' (include_path='.;D:\xampp\php\pear\') in D:\xampp\htdocs\lesson\smarty1.php on line 3 上の文章ですが、3行目後半”Smarty.class.php' (include_path='.;D:\xampp\php\pear\')”の部分ですが、php.iniからinclude_pathを変更したりしているのですが、一向に表示が変わりません。 もしかしたらphp.iniファイルは二つあったりするのでしょうか。 php.iniのファイルはPHPフォルダに入っているものでよろしいですよね? もちろんアパッチは再起動させています。 なのにできません・ あと、ロジックファイルの require _once()の()内はSmarty.class.phpだけでもよろしいのでしょうか。 もう悩みすぎて頭がおかしくなりそうですね。 ちなみにsmartyがなくても、アプリケーション開発に支障はありませんでしょうか。 あくまで個人で趣味の範囲でアプリケーションを作成したいと感じています。

    • ベストアンサー
    • PHP

専門家に質問してみよう