PHPのインクルード方法とは?

このQ&Aのポイント
  • PHPのインクルード方法について調べてみました。サイトの管理を一括で行いたいという要望を解決するための方法です。
  • インクルードしたい部分をメモ帳に貼り付けて保存し、PHPのinclude_once関数を使って絶対パスや相対パスで指定することで、別ファイルの内容を取り込むことができます。
  • 質問者さんは絶対パスの指定方法について悩んでいるようです。PHPの絶対パスやPERLの絶対パスについて調べ、間違ったURLの指定方法をしている可能性があるようです。
回答を見る
  • ベストアンサー

PHPのインクルードの方法(初心者です)

サイトの管理を一括で行いたいと思い、 いろいろ調べたところPHPのインクルードという方法を知りました。 いろいろなサイトを見て、その通りに実行してみたのですが、 500エラーになってしまいます(泣) やってみたのは以下の通りです。 1、「.html」なので「.htaccess」というファイルに AddType application/x-httpd-php .htm .html と記述してアップロード。 2、インクルードしたい部分をメモ帳に貼り付け、「●●.txt」で保存しアップロード。 3、メモ帳にコピペした部分を削除して、 <?php include_once("http://●●.com/▲▲.txt"); ?> と記述。 以上です。 詳しくわからないのですが、何階層にもなりそうなので 相対パスなら、いちいち指定するのに手間が掛かるので 絶対パスというので指定したいのですが、 「PERLの絶対パス」とか意味がわかりません(汗) 3のようにURLで指定するのは間違っているのでしょうか? いろいろいじってみたのですが、 一体どこがおかしいのかわかりません。 どなたかご教授お願いいたします。

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

  • ベストアンサー
  • tabaxyz
  • ベストアンサー率64% (11/17)
回答No.2

> 早速、<?php include_once("upload/▲▲.txt"); ?>に > 書き直してみたのですが、やはり500エラーになってしまいます。 まず、IISなりApacheなりにPHPをインストールしていると思われますが、 InternalServerErrorが発生しているとなると、PHPとしてモジュールが動作しているか確認の為、 test.php というファイルを作り、 <?php phpinfo(); ?> でインストールしているPHPが動作しているかまず確認をしてみてください。 > 以下のサイトを参考して、その通りにやってみたのですが、 > 全然うまくいかなかったものですから…。 > http://seo.k-m-k-m.com/hp/include/​ > この他にやらなければいけないことはあるでしょうか? 上記を目的とするのでしたら、(/usr/local/apache/webroot/upload/▲▲.txtにファイルがあるとして) <?php $filename = "/usr/local/apache/webroot/upload/▲▲.txt"; $fd = fopen( $filename,"rb" ); if( $fd == FALSE ){ printf( "file open error [%s]",$filename ); exit; } fseek( $fd,0,SEEK_END ); $filesize = ftell( $fd ); fseek( $fd,0,SEEK_SET ); $body = fread( $fd,$filesize ); fclose( $fd ); printf( "%s",$body ); ?> としてファイルを読み出してprintf()するのが手っ取り早いと思われます。 include()やinclude_once()はphpのプログラムや定義を読み込むもので、 文章(HTML)などを読み込むには適さないです。 ▲▲.txt にたとえば <HTML> <HEAD><TITLE>タイトル</TITLE></HEAD> <BODY>内容</BODY> </HTML> だったとすると <?php include_once( upload/▲▲.txt ); ?>で展開される結果は <?php <HTML> <HEAD><TITLE>タイトル</TITLE></HEAD> <BODY>内容</BODY> </HTML> ?> となりPHPの構文でエラーが出ます。(500エラーにはならないハズですが。。。) include()やinclude_once()はPHPのプログラムや変数定義をソースに 取り込む物として使ってください。

参考URL:
http://www.php.net/manual/ja/

その他の回答 (1)

  • tabaxyz
  • ベストアンサー率64% (11/17)
回答No.1

<?php include_once("http://●●.com/▲▲.txt"); ?> include_once()の引数は相対パスであるべきです。 ▲▲.txtファイルはアップロードされるディレクトリにあるのでしょうから、 <?php include_once("upload/▲▲.txt"); ?> などと相対パスで参照すれば出来ると思います。 ただ、include_once()はPHPのプログラムをインクルードするので、 ▲▲.txtは誰でもアップロードできるものである場合サーバーへの不正アクセスのバックドアを作られたり、破壊行為をされる事がありますから、 プログラムをフォーム上からアップロードするのは危険ですので、 FTPなり、SCPなりでアップロードしたほうがよいと思われます。

sinoffice
質問者

お礼

アドバイスありがとうございます。 早速、<?php include_once("upload/▲▲.txt"); ?>に 書き直してみたのですが、やはり500エラーになってしまいます。 それと、できれば絶対パスでの指定したいのですが、 その場合、また違った方法じゃなければいけないのでしょうか? PHPを使う場合、サーバーの設定を変更しなければいけないなどの 特別な操作が必要なのでしょうか? 以下のサイトを参考して、その通りにやってみたのですが、 全然うまくいかなかったものですから…。 http://seo.k-m-k-m.com/hp/include/ この他にやらなければいけないことはあるでしょうか? それと、現在メモ帳にペーストしてFTPソフトで アップロードしているのですが、 「.txt」という形式だと危険なのですか? 「▲▲.php」というファイル名で アップロードした方がいいというでしょうか? 本来の質問とは異なりますが、 初心者なのでそういった知識がないので そちらも教えていただけると助かります。 質問だらけで専門用語などもわからないため 理解しにくい文章で申し訳ありませんが、 よろしくお願いいたします。

関連するQ&A

  • 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
  • htmlファイルにPHPとCGIを埋め込む

    ロリポップサーバーをレンタルしてサイトを開設しています。 現在.htaccessファイルに下記のコードを記述して.htmlファイルにPHPのコードを埋め込んで実行させています。 「AddType application/x-httpd-php .htm .html」 これは問題なく動いているのですが、別に.htmlファイルにCGIのコードを記述し動作させたいと思っているのですが、これは可能でしょうか? .htmlファイルのまま、PHPとCGIのコードを一緒に記述し動作させたいです。 .htaccessで上記のコードの下に「AddType application/x-httpd-cgi .htm .html」というコードを記述してみましたが、動作はしませんでした。 埋め込みは下記のようにしました。 「<!--#include file="cgiファイルまでのパス" -->」 ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。

    • 締切済み
    • CGI
  • PHPをCGIとして実行する方法

    PHPをCGIとして実行する方法 現在PHP(モジュール版)にて開発を行っているのですが、 仕様上.htaccessを使用してcgi-binディレクトリ内にあるphpファイルをCGIとして 実行しなければならなくなりました。 下記の記述方法だと500エラーが発生してしまい、大変困っています。 <Directory "/usr/~(任意のcgi-binディレクトリのフルパス)~/cgi-bin"> AddType application/x-httpd-cgi .php </Directory> 因みに.htaccessはcgi-binディレクトリの1階層上に設置しています。 単に「AddType application/x-httpd-cgi .php」を記述する分には誤作動は起さないのですが、出来れば指定のディレクトリ内だけで指定したいと考えています。 もし思い当たる点がありましたら、ご教授お願い致します。 下記に環境を記しておきます。 【環境情報】 OS:FreeBSD 6.2(レンタルサーバ) PHP:5.2.4

    • ベストアンサー
    • PHP
  • PHPとshtmlのhtml化共存方法を知りたいです。

    宜しくお願いします。 現在サーバーで何故か拡張子、.phpと.shtmlが共存している部分があります。 そこで、全てをhtmlにしてやりたいのですが、一緒にする方法が分かりません。 色々調べた結果、各設定方法は分かりました。 phpの場合 AddType application/x-httpd-php .html shtmlの場合、 AddType text/x-server-parsed-html .html と記述するようで、個々で調べると確かに動作しました。 ただ、同じ.htaccess内に2つ同時に記述すると、phpの方だけ表示が出来なくなるのです・・・。 AddType application/x-httpd-php .html AddType text/x-server-parsed-html .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
  • PHP、,htaccessの文字コードの設定について

    ホームページのフッターのテキストが、全ページ共通なので、PHPを使って管理したいと思っています。 ●htmlファイルにincludeを使って、footer.php(共通テキストをprint指定してあるファイル)を読み込みます。  <?php include "footer.php";?> ●php拡張子設定の為、.htaccess内に、  AddType application/x-httpd-php .htm と記述。 ●htmlファイル、footer.php、.htaccessを全て文字コードEUCで作成してテストしたところ無事認識され成功しました。 が、テストページ以外のhtmlファイルは全SHIFT-JISで構築しているため、文字化けを起してしまいます。 ので、htmlファイル、footer.php、.htaccessを全て文字コードSHIFT-JISで作成してみましたが、それこそ文字化けをしてしまいます。 .htaccessにAddType application/x-httpd-php .htmを記述しなければ文字化けは起こさないのですが、もちろんphp拡張子の設定がなっていたいので、動作しません。 一体どうすればよいでしょうか? PHP初心者です。 どなたか教えて下さい。よろしくお願いします。 説明不十分でしたら申し訳ございません。

    • ベストアンサー
    • PHP
  • htaccessのAddTypeが使えないサーバで.phpファイルを.htmlとして表示させる方法は?

    利用サーバではhtaccessのAddTypeが使えない機能制限があるそうで、サーバで.phpファイルを.htmlとして表示させることが、以下のhtaccessへの記述ではできません。 AddType application/x-httpd-php .php .html どこかに書いてあったので以下も試しましたがダメでした。 <FilesMatch "html$"> ForceType application/x-httpd-php </FilesMatch> どうにかして代替方法が欲しい状態でが何か良い方法がないでしょうか。 どうぞ宜しくお願い致します。

    • 締切済み
    • PHP
  • include_pathに絶対パスを使うことはできないのでしょうか?

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

    • ベストアンサー
    • PHP
  • HTMLファイル内のPHPコード実行について

    HTMLファイル内に記述されたPHPコードを実行するためには .htaccessに  AddType application/x-httpd-php .htm .html .php と記述する必要があると思いますが 上記のように記述された.htaccessファイルをアップロードして .htaccessファイルと同じディレクトリにある拡張子がhtml のファイルにアクセスすると ダウンロードのダイアログがでてしまい 正常にアクセスすることができません。 なお拡張子がphpとなっているものは 正常に実行されています。 原因と解決方法をご存知の方が いらっしゃいましたらご教示頂けないでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • モバイルサイトのxhtmlでPHPを動かすときの.htaccess

    ご質問です。 モバイルサイトで、ドコモの対応のために「.htaccess」で「AddType application/xhtml+xml .htm .html」を設定していました。 問題なく稼動していましたが、アクセス解析のために「PHP」を動かせるようにする必要がでたため、xhtml内で「<?php print "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>"; ?>」を記述し、「.htaccess」に「AddType application/x-httpd-php .html」を追加しました。 「.htaccess」には下記のように記述されています。 AddType application/x-httpd-php .html AddType application/xhtml+xml .htm .html しかしこれでは、「PHP」がうまく動かず、 AddType application/xhtml+xml .htm .html AddType application/x-httpd-php .html の順で記述すると「xhtml」がおかしくなります。 調べていると「.htaccessではAddType application/x-httpd-php .htmlだけ記述し、HTTPヘッダでMIMEタイプを指定するためにPHPにて、header()関数で指定する」とありました。↓ header("Content-type: application/xhtml+xml" ); しかし、どこにどう記述してよいのかわからないでいます。 動かしたい「PHP」の内容は以下の通りです。 <?php function rt_tag($aqid){ $ref = getenv('HTTP_REFERER'); $ref = urlencode($ref); $my_url = urlencode("//".getenv('SERVER_NAME').getenv('SCRIPT_NAME')); if (!empty($my_url)) $rt_param[] = "/2=$my_url"; if (!empty($ref)) $rt_param[] = "/4=$ref"; $tag = "<img src=\"http://t7.aqtracker.com/cgi-bin/asp/tagx/h/$aqid"; foreach ($rt_param as $val) $tag .= $val; $tag .= "/blank.gif?guid=on\">"; echo $tag; } $_aqid = "5T555ELHERSGN664E86A"; rt_tag($_aqid); ?> どう記述を追加すればよいのか教えてくださいますか? またこれでやりたいことはできるのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう