includeの仕方について

このQ&Aのポイント
  • includeの方法と注意点について
  • ファイルのパス指定に注意が必要
  • エラーメッセージの内容を確認してみましょう
回答を見る
  • ベストアンサー

includeの仕方について

いつもお世話になっております。 \Apache2\htdocs以下に、 public_htmlーindex.php | ーrrrフォルダーconfig.php ー main.php を作りました。 それぞれ、 index.php <?php $CONF['id'] =1; include('./rrr/config.php'); include($DIR_hoge."main.php"); ?> config.php <?php // main hoge directory $DIR_hoge= '/public_html/rrr/'; ?> main.php <?php echo "main.phpが読み込まれました!<br />"; echo "あなたのIDは、".$CONF['id']."です。"; ?>と書きましたが、index.phpはmain.phpが読み込めていません。 Warning: include(/public_html/rrr/main.php) [function.include]: failed to open stream: No such file or directory in.... 何か書き間違いがあるのでしょうかよろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • yossy-55
  • ベストアンサー率55% (5/9)
回答No.1

一応確認ですが、 public_html | index.php +rrr |config.php |main.php という構造でいいですよね? それでしたら、index.phpからどちらもincludeしようとしているので、 config.phpでmain.phpを相対パスで指そうとするとき、 index.phpからの相対パスを指定しなければいけません。 この時、documentrootからでもなく、configからの相対パスでもありませんので注意して下さい。 つまり、 $DIR_hoge= '/public_html/rrr/';は $DIR_hoge= 'rrr/'; となるはずです。 お試しください。

rawguns
質問者

お礼

ありがとうございました。 見事に繋ぐことができましたので先に進めそうです。 所で、index.phpの位置はもう一段上のhtdocsに置くのと どちらが良いやり方なのでしょうか?

その他の回答 (2)

  • yossy-55
  • ベストアンサー率55% (5/9)
回答No.3

>セキュリティもこの段階で考えないといけないと言うことでしょうか。 ある程度、システム設計を考えてやっておかないと、後からの 手戻りが大量に発生する事があります。 もちろん、予期しないセキュリティホールも発生する恐れが大きくなります。 そういった意味でもある程度、早い段階からシステム設計をきっちりやられる事をお勧めします。 それから、相対パスの書き方ですが、A.phpという所からB.phpというファイルをincludeし、B.phpからさらにC.phpをインクルードする場合、 B.phpからC.phpへの相対パスはA.phpからの相対パスである事を考えて $DIR_hoge= 'rrr/'; のどこに間違いがあるか考えてみて下さい。 前にも書きましたが、B.phpからC.phpへの相対パスではありません。 答えを書くのは簡単ですが、あれこれやってみる事が、技術向上につながります。 がんばってください。 それでも分からないようでしたら、再度質問して下さい。

rawguns
質問者

補足

色々教えてくださりありがとうございました。 ちょっと甘えすぎました・・。 少し自力でがんばってみたいと思います。

  • yossy-55
  • ベストアンサー率55% (5/9)
回答No.2

>index.phpの位置はもう一段上のhtdocsに置くのと >どちらが良いやり方なのでしょうか? ドキュメントルートの設定はどうされてますか? htdocsであれば、今の配置ですと、ドキュメントルートにアクセス されると、構成が全て見られてしまいます(設定によりますが...) rawgunsさんが、作ろうとしているシステムによりますので、 どちらが正解、またはどちらがよいやり方というのは一概には 言えません。 全体的なシステム構成を考えて(システム設計を綿密にやられて) 最適と思われる構成配置を考えてみて下さい。

rawguns
質問者

お礼

まだサイト公開まではほど遠いので、安心かと思いhtdocs以下に作っていました。 セキュリティもこの段階で考えないといけないと言うことでしょうか。 勉強が足りないみたいですいません。 もう一つだけ聞きたいのですが、 -index.php ーyyyフォルダ(index.php) -rrrフォルダ(config.php,main.php) みたいにもう一つ下層にyyyフォルダ(index.php)を作ったのですけれど、応用ができませんでした。 yyyフォルダ(index.php) <?php $CONF['id'] =2; include('../rrr/config.php'); include($DIR_hoge."main.php"); ?> こう書いたのですが、やはり4行目でエラーが出てしまいます。 色々記号を足したりしたのですが、どうにもうまくいきません。 たびたびすいませんが、よろしくおねがいします。

関連するQ&A

  • 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
  • ハッスルサーバーで「Warning: include()」が出てしまっ

    ハッスルサーバーで「Warning: include()」が出てしまって困っています。 「Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/ユーザーID/public/www/独自ドメイン/フォルダ/index.php on line 34」と 「Warning: include(http://独自ドメイン/フォルダ/system/adrota/koukoku/bana.php) [function.include]: failed to open stream: no suitable wrapper could be found in /home/ユーザーID/public/www/独自ドメイン/フォルダ/index.php on line 34」と 「Warning: include() [function.include]: Failed opening 'http://独自ドメイン/フォルダ/system/adrota/koukoku/bana.php' for inclusion (include_path='.:/usr/local/share/pear') in /home/ユーザーID/public/www/独自ドメイン/フォルダ/index.php on line 34」 と三列がならんで表示されます。 34行目に問題があるのは分かるのですが・・・ エックスサーバーでは、上手く出来るらしいのですが。 ハッスルサーバーでは「フルパス」の表記方法が間違っているのでしょうか? 「絶対パス」は必要ない事ぐらいしかよく分かりません。 「bana.php」のパーミッションは、「644」になっているのですがハッスルサーバーではこの数値が異なるのでしょうか?

    • ベストアンサー
    • PHP
  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • 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
  • OpenPNEの設定ができません。

    OpenPNEの設定ができません。 サーバーはNSFレンタルサーバーで、 MySQL5、PHP5のオプションをつけています。 PHPやMyQSLについて全くの素人ですので、 wkyOpenPNEInstallerという自動インストールソフトを使って挑戦しています。 必要事項を記入してインストールを終えると、 Warning: require_once(/sns//config.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/html/(ドメイン)/public_html/config.inc.php on line 8 Fatal error: require_once() [function.require]: Failed opening required '/sns//config.php' (include_path='.:/usr/share/pear:/usr/share/smarty') in /var/www/html/(ドメイン)/public_html/config.inc.php on line 8 というエラーが出てきます。 上記エラー文中にある、config.inc.phpファイルは下記の通りです。 <?php /** * @copyright 2005-2008 OpenPNE Project * @license http://www.php.net/license/3_01.txt PHP License 3.01 */ define('OPENPNE_DIR', '/openpne_dir/' ); require_once OPENPNE_DIR . '/config.php'; ?> config.phpのパスが間違っているというようなエラーかと思い、 色々試しているのですが、うまくいきません。 関係がありそうなファイルのディレクトリ構造は、 現在のところ以下のようになっています。 -public_html   -index.php   -config.inc.php   -他 -sns   -config.php 色々調べてみると、php5では「require_once」が使えないとか出てきたり、 とにかくパスの指定やディレクトリが間違えていると出てきたりしているのですが、 全く改善ができません。 何かアドバイスを教えていただければと思います。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • ボタンを押すことでincludeの値を変更するには?

    ボタンを押すことでincludeの値を変更するには? HTMLとPHPを利用してウェブサイトを制作していているのですが、リンクに関してわからないことが出てきました。 現在index.htmlに以下の記述をしています。 <div id="menu"><?php include("menu.php"); ?></div> <div id="main"><?php include("main.php"); ?></div> menu.phpにリンクを記述して、それを押すことで<div id="main">に変化を与えたいのですが、そういうことは可能でしょうか? 具体的には<div id="main">内の<?php include("main.php"); ?>を<?php include("page2.php"); ?>などとできればうれしいのですが... ActionScriptでは出来たのですが、phpではどうすればいいのでしょうか...? 目的はindex.htmlなどを一度書き上げるだけで、あとの要素は全て簡潔にすませロードさせるだけにして管理を簡単にすることです。 メニュー->サブメニュー展開->内容表示 と三行程を行うのに、普通だとそれぞれ メニューのあるページ、左記に加えサブメニューの展開されたページ、左記二つを含んだ内容のページと、三つも必要になり大変です。 なのでボタンを押すと指定した要素に別のものをロードできたら...と思って質問させていただきました。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 携帯用 googleAnaryticsについて・・・

    お世話になっております。初心者ですみません。 携帯用 googleAnaryticsを設置しようと、SELENE.GA4Kという画期的なスクリプトをダウンロードしました。 いざ、設置をするとwarningが出るわgoogleAnariticsに反映されないわで困っております。今までご経験のある方やご存じの方がおられましたら、アドバイスをよろしくお願いいたします。 設置内容は以下のとおりです。 -------------------------------------------------------- /GoogleAnalytics/(読み込むファイルと同じディレクトリ)  |  /Service/(GoogleAnalyticsの中)  |___analytics.php  |___analytics_for_sssi.php      |  /Config/(GoogleAnalyticsの中)  |___analytics_config.php googleAnalyticsを設置したいファイルに以下を記入。 階層はあっていると思います。 require_once('./GoogleAnalytics/Config/analytics.php'); require_once('./GoogleAnalytics/Service/analytics_config.php'); sendGoogleAnalytics(ANALYTICS_ID, WEBSITE_DOMAIN); -------------------------------------------------------- ■表示されたwarning Warning: main(./GoogleAnalytics/Config/analytics.php): failed to open stream: No such file or directory in /home/mosk/public_html/k/index.php on line 16 Fatal error: main(): Failed opening required './GoogleAnalytics/Config/analytics.php' (include_path='.:/usr/share/pear') in /home/mosk/public_html/k/index.php on line 16 -------------------------------------------------------- 以上です。ためしに同じ階層においてパスを変えてもダメでした。 なぜこのようなエラーになってしまうのかよくわかりません。 どなたか助けてください。

    • 締切済み
    • 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
  • 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
  • openPNE のPHPエラーについて教えて下さい。

    openPNE のOpenPNE-2.6RC2.1を設置しました。 すると、以下のエラーがでます。 どこがいけないのでしょうか? 一応、config.php や config.inc.php は修正して アップロードされております。 <エラー内容> http://ドメイン/?m=setup http://ドメイン http://ドメイン/?m=admin 上記のURLで、以下の様になります。 Warning: main(アップロードディレクトリ/config.php) [function.main]: failed to open stream: No such file or directory in アップロードディレクトリ/config.inc.php on line 8 Fatal error: main() [function.require]: Failed opening required 'アップロードディレクトリ/config.php' (include_path='.:/usr/local/lib/php') in アップロードディレクトリ/config.inc.php on line 8

    • ベストアンサー
    • PHP

専門家に質問してみよう