はじめてのHP
| 無料素材
| タグ辞典
| CSSガイドEX
| PHPを学ぼう!
◆Tip14 - 外部サイトにあるファイルの読み込み
PHP でホームページを作成していると「ファイルの読み込み 」のように外部ファイルを取り込むことができます。
関数やヘッダー、フッターなどを他のページでまとめて置くと修正があった場合にとても便利に使える関数ですね。
include 又は、require は絶対パスか相対パスで読み込むファイルを指定します。
小規模のサイトを構築する場合には、絶対パスもしくは相対パスは余り気にしないで制作しても問題無いようですが、なるべくは絶対パスを使うことが推奨されています。
何故なら、include したファイルに include があった場合の基点が変になる可能性があるからだそうです。
確かにこの「PHPを学ぼう! 」でスマートフォン、タブレット、携帯専用のページを追加した時には読み込みができなかったりしました・・・。
絶対パスを指定する場合は次のようにします。
//PHPのバージョンが5.3.0より前
include(dirname(__FILE__) . '/file_A.php');
//phpのバージョンが5.3.0以降のみ
include(__DIR__ . '/file_A.php');
//ドメイン直下からの絶対パスでの指定方法
include($_SERVER['DOCUMENT_ROOT'] . '/file_A.php');
注意すべきことは複数サイトやサブドメインを運営している場合には絶対パスで URL(http://~)を設定することができません。
これはサーバー環境設定、php.ini の "allow_url_include = OFF" になっていることで利用できなくなています。
php.ini の修正ができる人は、"allow_url_include = ON" に設定することで利用できるようになります。
サーバーの環境設定を変更しなくとも使える便利な関数があります。
readfile で以下のように使います。
使い方はそう変わりませんね。
readfile("http://sample.com/file_a.php");
readfile は関数や変数など問題なく読み込みができ大きなファイルであってもメモリを気にすることなく利用できます。
ちょっとしたWEBアプリケーションの提供で使えそうですね。
【追記 : 2015/1/24】
readfile でも GET を使って以下のようにパラメータを渡すことができます。
readfile("http://sample.com/file_a.php?id=12345&s=1");