サンプル集  >  PHP  >  外部ファイルの取り込み(include、require)
動的配列
2009/04/14

外部ファイルを取り込むのには、include、require を使います。 include はファイルが無くても続行し、require はエラー終了するのでテストしてみます。

◆環境
OS Windows XP Professional Version 2002 Service Pack 2
PHP 5.2.4

まずは include。

include.php
1: 
2: 
3: 
4: 
<?php
include "inc.inc";
echo "include test\n";
?>

>php include.php

Warning: include(inc.inc): failed to open stream: No such file or dire
ctory in include.php on line 2

Warning: include(): Failed opening 'inc.inc' for inclusion (include_pa
th='.;C:\php5\pear') in include.php on line 2
include test

>

取り込むファイル「inc.inc」が無くても処理が実行されました。

次は require を試します。

require.php
1: 
2: 
3: 
4: 
<?php
require "inc.inc";
echo "require test\n";
?>

>php require.php

Warning: require(inc.inc): failed to open stream: No such file or dire
ctory in require.php on line 2

Fatal error: require(): Failed opening required 'inc.inc' (include_pat
h='.;C:\php5\pear') in require.php on line 2

>

エラーメッセージが少し違って、そのまま終了しました。

外部ファイルの取り込みは一番上じゃないとダメだと思い込んでいましたが、スクリプトの途中でもincludeできるようです。

include2.php
1: 
2: 
3: 
4: 
5: 
<?php
include "dsp_msg.php";
echo "main php\n";
include "dsp_msg.php";
?>

dsp_msg.php
1: 
2: 
3: 
<?php
echo "dsp_msg php!!\n";
?>

>php include2.php
dsp_msg php!!
main php
dsp_msg php!!

>

require_once というのもあります。 これは、同じファイルなら1回しか読み込まないというもののようです。 関数が定義されているファイルなどを読み込みした場合、include や require で2回以上読み込むと、関数の再定義エラーになってしまいます。

require2.php
1: 
2: 
3: 
4: 
5: 
6: 
<?php
require "func.php";
msg();
require "func.php";
echo "proc end.\n";
?>

func.php
1: 
2: 
3: 
4: 
5: 
6: 
<?php
function msg()
{
    echo "hello function!!\n";
}
?>

>php require2.php
hello function!!

Fatal error: Cannot redeclare msg() (previously declared in func.php:4) in func.php on line 5

>

2回目の require でエラーが出ました。 require_once に変えて試してみます。

require_once.php
1: 
2: 
3: 
4: 
5: 
6: 
<?php
require_once "func.php";
msg();
require_once "func.php";
echo "proc end.\n";
?>

>php require_once.php
hello function!!
proc end.

>

上手くいきました。できれば同じファイルを何度も読み込むような構成にしないように気をつけたいと思います。

▲ PageTop  ■ Home


Copyright (C) 2013 ymlib.com