【PHP】include とrequire の違いについて

  • 投稿 : 2018-08-13
ファイルが存在しない同じファイルを2度読み込む
include続行エラー
requireエラーエラー
include_once続行続行
require_onceエラー続行


PHP: include - Manual
PHP: require - Manual
PHP: include_once - Manual
PHP: require_once - Manual

たまにしか使わないと、忘れるのでまとめました。

ファイルが存在しないしないときは、include/include_onceはワーニングは出ますが処理は続行されます。require/require_onceの場合はエラーになって処理が中断されます。

include/requireは、同じファイルを複数読み込むとエラーになります。include_once/require_onceは、ファイルがすでに読み込まれているかどうかを PHP がチェックしてすでに読み込まれてる場合は読み込まずに処理を継続します。

include_once/require_onceのほうが、ファイルの存在チェックをするので処理が重くなります。

ファイルのパス

ファイルのインクルードは、指定されたパスから行います。パスを指定しない場合は、 include_path の設定を利用します。 ファイルが include_path に見つからないときは、include は呼び出し元スクリプトのディレクトリと現在の作業ディレクトリも探します。 include は、ファイルを見つけられない場合に warning を発行します。一方 require の場合は、同じ場合に fatal error を発行する点が異なります。

パスを指定した場合 — 絶対パス (Windows ならドライブレターあるいは \ で始まるパス、Unix/Linux 系なら / で始まるパス) あるいはカレントディレクトリからの相対パス (. あるいは .. で始まるパス) のどちらでも — は include_path は無視されます。たとえば ../ ではじまるファイル名を指定した場合は、 親ディレクトリからそのファイルを探します。
PHP: include - Manual

パスを指定しない場合は、include_path 、呼び出し元スクリプトのディレクトリ、現在の作業ディレクトリ順に探します。
パスを指定した場合で、相対パスの場合は、呼び出し元スクリプトのディレクトリからの相対だったと思います。
スポンサーリンク
タグ#PHP