PHP includeがうまくできない!原因と解決法を教えてください

このQ&Aのポイント
  • Windows7、Internet Explorer9、Apache2.2、PHP5.4.6を使用していますが、htdocsディレクトリ以下に配置されたPHPファイルが表示されません。
  • htdocsディレクトリ直下では問題なくPHPファイルを表示することができますが、サブフォルダ内ではうまく表示されません。include関数を使用してファイルを読み込んでもエラーが発生します。
  • 可能性としては、設定に問題があるか、パスの指定が間違っている可能性があります。設定やファイルの場所を再確認してみてください。また、ネット上には同じ問題を抱える人々がいるかもしれないので、それを参考にすることもおすすめです。
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

正しいpathを指定すれば、どの位置のファイルでもinclude出来ます >htdocs/naiyou/naiyou1.html に と書いているのに >htdocs/naiyou1.html 内で とはどういう意味でしょうか?当然のこととしてincludeはhtdocs/naiyou/naiyou1.html に書くと思うのですが・・・。 実際に呼び出しているのは、どちらなのですか?   http://localhost/naiyou1.html   http://localhost/naiyou/naiyou1.html

-omochi-
質問者

お礼

早いお時間にご連絡くださり、本当にありがとうございます。 ごめんなさい、記載間違いです;気づきませんでした; × htdocs/naiyou1.html内 → ○ htdocs/naiyou/naiyou1.html です; 【訂正↓】 htdocs/index.html に htdocs/topmenu.php を表示させる↓ htdocs/index.html内に <?php include(dirname(__FILE__).'/topmenu.php'); ?>を入力 → 成功 htdocs/naiyou/naiyou1.html に htdocs/naiyou/menu.php を表示させる↓ htdocs/naiyou/naiyou1.html 内に <?php include(dirname(__FILE__).'/menu.php'); ?>を入力 → 失敗 htdocs/naiyou/naiyou1.html に htdocs/topmenu.php を表示させる↓ htdocs/naiyou/naiyou1.html 内に <?php include(dirname(__FILE__).'/../topmenu.php'); ?>を入力 → やっぱり失敗 やはり表示されません…;どうしてだろう;; php.iniとかhttpd.confのところとかをいじった時に何か間違えたとか?それとも↑のように何か基本的なところでのうっかりミス?あぁあぁああ; ですが、どの場所でも大丈夫、という確信が持てたことは私にとって非常に大きな前進です。 何日かおいて頭を冷やしてみて、もう一度やってみて、それでもまだできないようなら最悪またApache・phpインストールくらい一からまたちょっとやり直してみようと思います。 それでもどうしてもできないようならまたこちらで伺いたいと思います; ご回答ありがとうございました!

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

<?php echo dirname(__FILE__) . '/menu.php'; ?> としたとき、意図するパスになっていますか? <?php include 'menu.php'; ?> でいいような気もしますが。

-omochi-
質問者

お礼

随分とお時間いただいてしまい、申し訳ありませんでした。 もう一度見直してみたり、いっそと入れ直したりもしてみたんですが… なんだか、どうも、難しかったようです。 勉強し直してきます; アドバイスくださった御二方、お時間くださり本当にありがとうございました!

-omochi-
質問者

補足

ちょ、ま、待ってくださいね、調べます、調べてまた書き込みいたします; ご回答くださりありがとうございます! ちょ、ちょ、待ってください;; 本当にありがとうございます!

関連するQ&A

  • PHPでincludeを使うと?が入る。

    さらくインターネットのレンタルサーバを使用していますが、 index.phpに include('header.php'); を入れてヘッダー部分のHTMLの呼び出しを行なっていますが 表示されるソースを見ていると、includeで呼び出しているヘッダー部分の手前に「?」が 入ってしまいます。 include(dirname(__FILE__).'/header.php'); include($_SERVER['DOCUMENT_ROOT'] . "/header.php"); など使っても同じ現象のため、どうしたら「?」を無くすことができるでしょうか。

    • ベストアンサー
    • 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の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
  • 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
  • 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
  • XAMPPでのPHPがうまく実行されない。

    XPパソコンに、書籍を参考にXAMPP1.6.5(日本語版)をインストールしました。 そこで本に書いてある通りに、Apacheを起動し、ブラウザで http://localhost/ にアクセスしました。 本では、大きくXAMPPと表示されるとかいているのですが、 It Works! とだけ表示される状態です。 それでもかまわず、htdocsと言うフォルダにwebappと言うフォルダを作り、PHPエディタというエディタで「こんにちは」と表示される簡単なindex.htmlと言う名前のファイルを作ってそのwebappに保存しました。 そして、ブラウザで http://localhost/webapp/index.html と入力してEnterしたのですが、Not Foundと表示されてうまく行きません。 ところが、確かにwebappの中にはindex.htmlがあり、それをダブルクリックすると、その「こんにちは」 と表示されるのです。 そのときのブラウザにのURL欄には localhost/c:/xampp/htdocs/webapp/index.html となっているのです。 この方法で行けば一応できるのかもれませんが、本来、 http://localhost/webapp/(ファイル名) として実行されなければならないはずです。 この、本来の方法でPHPなり、HTMLなりのソースコードを実行させたいのですが、回等よろしくお願い致します。 因みにApacheは2.2.6、PHPは5.2.4です。

    • ベストアンサー
    • PHP
  • PHPのファイルが開けません

    http://www.phpbook.jp/tutorial/ini/index2.html sample2-1.phpファイルと全く同じコードのファイル sample2をphpinfo.phpファイル(http://www.phpbook.jp/install/phpini/index2.html) と同じ場所に入れました(C:\Program Files\Apache\Apache24\htdocs)が、 http://localhost/phpinfo.php の時は早く表示されるのに http://localhost/ sample2.php はWeb ページが見つかりません (ちなみにアドレスがhttp://localhost/%20sample2.phpとなります) と出てしまいました。置く場所を間違えていますか?

    • ベストアンサー
    • PHP
  • Wordpress のPHPファイルをIEで開く

    WordPress のテーマを変更したいと思い、PHPファイルをいじったのですが PHPファイルをそのままIEで開けないんですね。 ディレクトリはこんな感じなんですが、 C:\Program Files\Apache\Apache24\htdocs\wordpress\wp-content\themes http://localhost/wordpress\wp-content\themes\twentytwelve\index.php では開けませんでした。間違ってますか? It works と表示されるファイル(C:\Program Files\Apache\Apache24\htdocsにあります。)はhttp://localhost/で開けます。

    • ベストアンサー
    • PHP
  • php include がおかしい

    下記のようにヘッダーとフッターをincludeしたindex.php をみると firefoxでは正常ですが、IEではフッターしか表示されません。 <?php include 'header.php'; ?> <?php include 'footer.php'; ?> どうしてでしょうか?

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

    php初心者です。 同じような処理をまとめて、関数にしました。 debug中なので、function()ひとつに ひとつのphpファイル名をつけています。 あとで合体するつもりで。 当然、requireの数が複数になっていますが、requireの行(冒頭)でエラーになってしまいました。 echoで1行ずつ表示して確認しました。原因がわからず順番を変えたりpath指定を変更したりしたのですが、読み込んでくれません。 なので、処理直前で必要な関数を読み込むようにしたりもしたのですが 冒頭で require (dirname(__FILE__)."/include/******.inc"); require (dirname(__FILE__)."/include/******chk.php"); require (dirname(__FILE__)."/../include/******m.inc"); require (dirname(__FILE__)."/m******.php"); require (dirname(__FILE__)."/m******andom.php"); require (dirname(__FILE__)."/m******time_client.php"); require (dirname(__FILE__)."/error_******.php"); require (dirname(__FILE__)."/log******.php"); まではクリアできました。 (path指定が混ざってますがいろいろ試したので。。。) で、ある関数を呼ぶ直前に require (dirname(__FILE__)."/lfunc*****.php"); としたのですが /lfunc*****.php に飛ばないんです。 (echoが出ない) こういうのはどのような原因があるのでしょうか? ちょっと思ったのですが、何か重複してるのでしょうか? 似たような変数名が多くなってますが、requireした中のfunctionの中なら 別の変数として扱われますよね? 一応構文チェックなどはちゃんと no シンタックスエラーを確認しています。 ログにもかかれないし。 すみません、php初心者にアドバイスお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう