🐡

PHP勉強:includeとrequireの違い

2021/10/08に公開

php オフィシャルドキュメント:

動作環境

php 7.4.22

挙動はほぼ同じ。違うのはエラー。

includeとrequire、どちらとも下記のように外部のファイルを呼び出すためのもの。

<?php
include 'file.php';
<?php
require 'file.php';

違いはファイルが見つからなかった時のエラーの種類と挙動。

include()はWarningになる。

E_WARNINGはエラー時に下記のような文章を表示する。:

<?php 
include 'nofile.php';

結果:

Warning: include(nofile.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 8

Warning: include(): Failed opening 'nofile.php' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 8

warningはエラーが発生してもプログラムを実行し続けるため、下記のようにincludeの後に書かれたecho 'hello';は実行され、表示される。:

<?php 
include 'nofile.php';
echo 'hello';

結果:

Warning: include(nofile.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 8

Warning: include(): Failed opening 'nofile.php' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 8
hello

require()はFatalになる。

include()と同じように存在しないファイルをrequireしてみる。:

<?php 
require 'nofile.php';

結果:

Warning: require(nofile.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 11

Fatal error: require(): Failed opening required 'nofile.php' (include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 11

Fatalエラーのため実行が中断され、require()から先に書かれたコードは実行されない。

<?php 
require 'nofile.php';
echo 'hello';

結果:

Warning: require(nofile.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 11

Fatal error: require(): Failed opening required 'nofile.php' (include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 11

Discussion