PHPのインクルードについて

採用はこちら

PHPのインクルードとは、別のファイルを現在のPHPファイルの中に読み込むための仕組みです。

PHPでは、ヘッダー・フッター・ナビゲーション・設定ファイル・関数ファイルなどを別ファイルに分けておき、必要なページで読み込むことができます。

これにより、同じコードを何度も書く必要がなくなり、サイト全体の管理がしやすくなります。

PHPでインクルードに使われる主な構文は、次の4つです。

include 'file.php';
require 'file.php';
include_once 'file.php';
require_once 'file.php';

それぞれ外部ファイルを読み込むための構文ですが、読み込みに失敗したときの挙動や、同じファイルを複数回読み込むかどうかに違いがあります。

目次

PHPでインクルードを使う目的

PHPのインクルードは、Webサイト制作やシステム開発でよく使われます。

特に、複数のページで同じパーツや処理を使い回したい場合に便利です。

共通パーツを使い回すため

インクルードの代表的な使い方は、Webサイトの共通パーツを別ファイルに分けることです。

たとえば、以下のようなパーツは多くのページで共通して使われます。

header.php
footer.php
nav.php
sidebar.php
contact-form.php

ヘッダーやフッターを各ページに直接書いていると、メニューやコピーライトを変更するたびに、すべてのページを修正しなければなりません。

しかし、インクルードを使えば、共通部分を1つのファイルにまとめられます。

<?php include 'parts/header.php'; ?>

<main>
  <h1>会社概要</h1>
  <p>ここに会社概要の本文が入ります。</p>
</main>

<?php include 'parts/footer.php'; ?>

このようにしておけば、ヘッダーを変更したいときは parts/header.php だけを編集すれば済みます。

複数ページで同じデザインやレイアウトを使う場合、インクルードは非常に便利です。

設定ファイルを読み込むため

PHPでは、サイト全体で使う設定情報を別ファイルにまとめることがあります。

たとえば、サイト名、URL、データベース接続情報などです。

<?php
// config.php

define('SITE_NAME', 'サンプルサイト');
define('BASE_URL', 'https://example.com/');

この設定ファイルを別のPHPファイルで読み込む場合は、次のように書きます。

<?php
require_once 'config.php';

echo SITE_NAME;

設定ファイルは、読み込めないとサイトやシステムが正常に動作しないことが多いため、include よりも requirerequire_once を使うのが一般的です。

関数ファイルを読み込むため

複数のページで共通して使う関数を、別ファイルにまとめることもあります。

<?php
// functions.php

function h($str) {
    return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}

この関数ファイルを読み込めば、他のページでも同じ関数を使えます。

<?php
require_once 'functions.php';

echo h('<script>alert("test")</script>');

関数ファイルは同じものを複数回読み込むと、関数の重複定義エラーが起きる場合があります。

そのため、関数やクラスを定義しているファイルでは、基本的に require_once を使うことが多いです。

includeの基本的な使い方

include は、外部ファイルを読み込むための基本的な構文です。

includeの書き方

基本形は次の通りです。

include '読み込むファイル名';

たとえば、同じ階層にある header.php を読み込む場合は、次のように書きます。

<?php include 'header.php'; ?>

括弧を付けて書くこともできます。

<?php include('header.php'); ?>

ただし、include は関数ではなくPHPの言語構造です。

そのため、実務では括弧なしで書かれることも多いです。

同じ階層のファイルを読み込む場合

以下のような構成があるとします。

index.php
header.php
footer.php

この場合、index.php から header.php を読み込むには、次のように書きます。

<?php include 'header.php'; ?>

footer.php も同じように読み込めます。

<?php include 'footer.php'; ?>

シンプルなWebサイトであれば、このようにヘッダーやフッターを分けるだけでも、かなり管理しやすくなります。

フォルダ内のファイルを読み込む場合

実務では、共通パーツを partsincludes のようなフォルダにまとめることが多いです。

index.php
parts/
  header.php
  footer.php
  nav.php

この場合、index.php から parts/header.php を読み込むには、次のように書きます。

<?php include 'parts/header.php'; ?>

フッターも同じように読み込めます。

<?php include 'parts/footer.php'; ?>

1つ上の階層にあるファイルを読み込む場合は、../ を使います。

<?php include '../parts/header.php'; ?>

../ は「1つ上の階層」を意味します。

includeとrequireの違い

PHPのインクルードで特に重要なのが、includerequire の違いです。

どちらも外部ファイルを読み込むために使いますが、読み込みに失敗したときの挙動が異なります。

includeは失敗しても処理を続ける

include は、指定したファイルが見つからない場合でも、警告を出したうえで基本的にはその後の処理を続けます。

<?php
include 'not-found.php';

echo 'この文章は表示されます。';

この例では、not-found.php が存在しない場合でも、警告は出ますが、後続の echo は実行されます。

つまり、include は「読み込めなくてもページ全体の処理を止めたくない場合」に向いています。

たとえば、キャンペーンバナーや補助的なサイドパーツなど、表示できなくてもページ本体に大きな影響がないものには include を使えます。

<?php include 'parts/campaign-banner.php'; ?>

ただし、ヘッダーやフッターのようにページ構成に大きく関わるパーツは、読み込めないと画面が崩れる可能性があります。

そのため、実務では必須パーツには require を使うこともあります。

requireは失敗すると処理を停止する

require は、指定したファイルが見つからない場合に重大なエラーとなり、処理を停止します。

<?php
require 'not-found.php';

echo 'この文章は表示されません。';

この場合、not-found.php が存在しないと、そこで処理が止まります。

その後の echo は実行されません。

require は、読み込めないと正常に処理できないファイルに使います。

たとえば、以下のようなファイルです。

config.php
database.php
functions.php
autoload.php

設定ファイルや関数ファイルが読み込めない状態で処理を続けると、予期しないエラーや不完全な動作につながる可能性があります。

そのため、必須ファイルには require を使うのが自然です。

<?php
require 'config.php';
require 'functions.php';

includeとrequireの使い分け

includerequire は、次のように使い分けると分かりやすいです。

読み込めなくても処理を続けたい場合:include
読み込めないと処理できない場合:require

たとえば、補助的な表示パーツには include を使い、設定ファイルや関数ファイルには require を使います。

<?php
require 'config.php';
require 'functions.php';

include 'parts/banner.php';

ただし、ヘッダーやフッターのような共通パーツについては、考え方が分かれる場合があります。

表示できなくてもページ本体を続けたいなら include、表示できないとページとして成立しないなら require を使うとよいでしょう。

include_onceとrequire_onceの違い

include_oncerequire_once は、指定したファイルを「一度だけ」読み込むための構文です。

同じファイルがすでに読み込まれている場合、再度読み込みません。

include_onceの使い方

include_once は、include と同じように外部ファイルを読み込みますが、すでに読み込まれている場合は再読み込みしません。

<?php
include_once 'functions.php';
include_once 'functions.php';

この場合、functions.php は1回だけ読み込まれます。

include_once は、読み込みに失敗しても基本的には処理を続けます。

そのため、「重複読み込みは避けたいが、読み込めなくても処理を継続したい場合」に使います。

ただし、実務では include_once よりも require_once の方がよく使われる場面が多いです。

require_onceの使い方

require_once は、require と同じように必須ファイルを読み込みますが、すでに読み込まれている場合は再読み込みしません。

<?php
require_once 'config.php';
require_once 'functions.php';

設定ファイル、関数ファイル、クラスファイルなどは、基本的に require_once で読み込むことが多いです。

特に関数やクラスを定義しているファイルは、複数回読み込むとエラーになる場合があります。

たとえば、以下のような関数ファイルがあるとします。

<?php
// functions.php

function format_price($price) {
    return number_format($price) . '円';
}

このファイルを複数回読み込むと、同じ関数を再定義しようとしてエラーになる可能性があります。

<?php
include 'functions.php';
include 'functions.php';

そのため、関数ファイルでは次のように require_once を使うと安全です。

<?php
require_once 'functions.php';

4つの構文の使い分け

PHPのインクルード関連の構文は、次のように整理できます。

include       :読み込み失敗時に警告を出し、処理を続ける
require       :読み込み失敗時に処理を停止する
include_once  :includeと同じだが、同じファイルは1回だけ読み込む
require_once  :requireと同じだが、同じファイルは1回だけ読み込む

実務で迷った場合は、次のように考えると分かりやすいです。

必須ではない表示パーツ:include
必須ファイル:require
重複読み込みを避けたい必須ファイル:require_once

特に初心者の場合は、設定ファイルや関数ファイルには require_once を使う、と覚えておくとよいでしょう。

パス指定の考え方

PHPのインクルードでつまずきやすいのが、ファイルパスの指定です。

同じファイルを読み込む場合でも、どのファイルから読み込むかによってパスが変わることがあります。

相対パスで指定する方法

次のような構成があるとします。

project/
  index.php
  about/
    index.php
  parts/
    header.php
    footer.php

トップページの project/index.php から parts/header.php を読み込む場合は、次のように書けます。

<?php include 'parts/header.php'; ?>

一方、project/about/index.php から同じ parts/header.php を読み込む場合は、1つ上の階層に戻る必要があります。

<?php include '../parts/header.php'; ?>

このように、相対パスはファイルの位置関係を意識して指定します。

ただし、PHPの相対パスは、単純に「現在書いているファイルの場所」だけで決まるとは限りません。

include_path や現在の作業ディレクトリの影響を受ける場合があります。

そのため、実務では相対パスだけに頼るより、__DIR__ を使った指定がよく使われます。

__DIR__を使った安全な指定方法

__DIR__ は、そのPHPファイルが置かれているディレクトリの絶対パスを表します。

たとえば、現在のファイルと同じ階層にある config.php を読み込む場合は、次のように書きます。

<?php
require_once __DIR__ . '/config.php';

1つ上の階層にあるファイルを読み込む場合は、次のように書きます。

<?php
require_once __DIR__ . '/../config.php';

__DIR__ を使うと、どのURLからアクセスされたか、どのファイルから呼び出されたかによるパスのズレを減らせます。

実務では、以下のように書くと安定しやすいです。

<?php
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/functions.php';

include __DIR__ . '/parts/header.php';
include __DIR__ . '/parts/footer.php';

特に複数階層のページがあるサイトでは、__DIR__ を使ったパス指定を覚えておくと便利です。

include_pathとは

PHPには include_path という設定があります。

include_path は、includerequire がファイルを探すディレクトリのリストです。

ただし、通常のWeb制作や小〜中規模のPHP開発では、include_path を細かく設定するよりも、__DIR__ を使って明示的にパスを書く方が分かりやすいです。

特に初心者の場合は、まず __DIR__ を使った読み込み方を覚えるのがおすすめです。

インクルードしたファイル内の変数

PHPでは、インクルードされたファイル内でも、読み込み元で定義した変数を使えます。

読み込み元の変数を使える

たとえば、index.php で次のように変数を定義します。

<?php
$page_title = 'トップページ';

include __DIR__ . '/parts/header.php';

そして、parts/header.php で次のように使えます。

<title><?php echo htmlspecialchars($page_title, ENT_QUOTES, 'UTF-8'); ?></title>

この場合、header.php の中で $page_title を参照できます。

ページごとにタイトルを変えたい場合、この仕組みは便利です。

<?php
$page_title = '会社概要';
include __DIR__ . '/parts/header.php';
<?php
$page_title = 'お問い合わせ';
include __DIR__ . '/parts/header.php';

このようにすれば、ヘッダーは共通化しながら、ページごとのタイトルだけを変更できます。

変数名は分かりやすくする

インクルード先で変数を使えるのは便利ですが、使いすぎるとコードが分かりにくくなることがあります。

たとえば、$title$data のような一般的な変数名を使うと、どこで定義されたものか分かりにくくなります。

そのため、次のように役割が分かる変数名にするのがおすすめです。

$page_title = '会社概要';
$meta_description = '会社概要ページの説明文です。';

インクルード先では、必ずHTMLエスケープをして出力することも大切です。

<title><?php echo htmlspecialchars($page_title, ENT_QUOTES, 'UTF-8'); ?></title>
<meta name="description" content="<?php echo htmlspecialchars($meta_description, ENT_QUOTES, 'UTF-8'); ?>">

ユーザー入力や外部データを画面に表示する場合は、特にエスケープ処理を忘れないようにしましょう。

実務でよくあるファイル構成

小規模なPHPサイトでは、以下のような構成にすると分かりやすいです。

site/
  index.php
  company.php
  service.php
  contact.php
  includes/
    config.php
    functions.php
  parts/
    header.php
    footer.php
    nav.php

設定ファイルと関数ファイルを読み込む

各ページの冒頭で、設定ファイルや関数ファイルを読み込みます。

<?php
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/functions.php';

これにより、サイト全体の設定や共通関数を使えるようになります。

設定ファイルや関数ファイルは、ページの動作に必要なことが多いため、require_once を使うのがおすすめです。

ヘッダーとフッターを読み込む

ページごとの本文の前後で、ヘッダーとフッターを読み込みます。

<?php
$page_title = 'トップページ';
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/functions.php';

include __DIR__ . '/parts/header.php';
?>

<main>
  <h1>トップページ</h1>
  <p>ここにトップページの本文が入ります。</p>
</main>

<?php include __DIR__ . '/parts/footer.php'; ?>

ヘッダーやフッターは include でも問題ありませんが、ページ構成上必須であれば require を使ってもよいです。

<?php require __DIR__ . '/parts/header.php'; ?>

どちらを使うかは、「読み込めなかったときに処理を続けたいかどうか」で判断します。

includeしたファイルの戻り値

PHPでは、インクルードされたファイル内で return を使って値を返すこともできます。

設定ファイルで配列を返す

たとえば、config.php で設定値の配列を返すことができます。

<?php
// config.php

return [
    'site_name' => 'サンプルサイト',
    'base_url' => 'https://example.com/',
];

読み込み側では、次のように受け取ります。

<?php
$config = require __DIR__ . '/config.php';

echo $config['site_name'];

この方法を使うと、設定値をグローバル変数や定数として散らばらせず、配列として管理できます。

returnを使うメリット

設定ファイルで return を使うメリットは、値を明確に受け取れることです。

$config = require __DIR__ . '/config.php';

このように書けば、config.php が何を返すファイルなのか分かりやすくなります。

小規模なサイトでは定数を使っても問題ありませんが、設定項目が増える場合は、配列で返す方法も便利です。

セキュリティ上の注意点

PHPのインクルードは便利ですが、使い方を間違えるとセキュリティ上の問題につながる可能性があります。

特に、ユーザー入力をそのまま読み込みファイル名に使うのは危険です。

ユーザー入力をそのままincludeしない

危険な例は次のようなコードです。

<?php
$page = $_GET['page'];
include $page . '.php';

このような書き方をすると、攻撃者が意図しないファイルを読み込ませようとする可能性があります。

たとえば、ページ切り替えのために ?page=company のようなURLを使いたい場合でも、ユーザーが自由にファイル名を指定できる状態にするのは避けるべきです。

許可リスト方式で読み込む

動的にファイルを読み込む場合は、許可したファイルだけを読み込むようにします。

<?php
$pages = [
    'home' => 'home.php',
    'company' => 'company.php',
    'service' => 'service.php',
    'contact' => 'contact.php',
];

$page = $_GET['page'] ?? 'home';

if (!array_key_exists($page, $pages)) {
    $page = 'home';
}

include __DIR__ . '/pages/' . $pages[$page];

このように、読み込み可能なファイルをあらかじめ配列で定義しておけば、想定外のファイルを読み込まれるリスクを減らせます。

重要なのは、ユーザーが自由にファイルパスを指定できないようにすることです。

LFIやRFIに注意する

ユーザー入力をそのまま includerequire に使うと、LFIやRFIと呼ばれる脆弱性につながる可能性があります。

LFIは、Local File Inclusionの略で、サーバー内の意図しないローカルファイルを読み込まれる問題です。

RFIは、Remote File Inclusionの略で、外部のリモートファイルを読み込まれる問題です。

特に、外部URLを include する設計は非常に危険です。

<?php
include 'https://example.com/file.php';

通常のWeb制作では、外部URLを include する必要はほとんどありません。

外部データを取得したい場合は、API通信やHTTPクライアントなど、目的に合った方法を使うべきです。

公開したくないファイルは公開ディレクトリの外に置く

設定ファイルやデータベース接続ファイルなど、直接アクセスされたくないファイルは、できればWeb公開ディレクトリの外に置きます。

たとえば、次のような構成です。

project/
  app/
    config.php
    functions.php
  public/
    index.php

public/index.php から app/config.php を読み込む場合は、次のように書きます。

<?php
require_once __DIR__ . '/../app/config.php';
require_once __DIR__ . '/../app/functions.php';

このように、Web公開ディレクトリには index.php、CSS、JavaScript、画像など、公開してよいファイルだけを置くのが理想です。

レンタルサーバーなどで公開ディレクトリ外に置けない場合でも、設定ファイルの扱いには注意しましょう。

.inc拡張子には注意する

古いPHPコードでは、インクルード専用ファイルに .inc という拡張子を使っていることがあります。

config.inc
functions.inc

しかし、サーバー設定によっては .inc ファイルがPHPとして処理されず、ブラウザから中身がそのまま見えてしまう可能性があります。

そのため、現在はインクルード用のファイルにも .php 拡張子を使う方が安全です。

config.php
functions.php
header.php
footer.php

@includeは基本的に避ける

PHPでは、エラー制御演算子 @ を付けて次のように書くこともできます。

<?php
@include 'file.php';

しかし、この書き方は警告を隠してしまうため、エラーの原因を調べにくくなります。

読み込める場合だけインクルードしたいなら、@include で無理に警告を消すより、事前にファイルの存在や読み込み可能かどうかを確認する方が分かりやすいです。

<?php
$file = __DIR__ . '/parts/banner.php';

if (is_readable($file)) {
    include $file;
}

開発や保守のしやすさを考えると、@include は基本的に避けた方がよいでしょう。

includeとfile_get_contentsの違い

include と似たものに、file_get_contents() があります。

どちらもファイルを扱うための機能ですが、役割はまったく違います。

includeはPHPとして実行する

include は、指定したファイルを読み込み、その内容をPHPとして評価します。

たとえば、次のようなファイルがあるとします。

<?php
// message.php

echo 'こんにちは';

このファイルを include すると、中のPHPコードが実行されます。

<?php
include 'message.php';

結果として、画面には次のように表示されます。

こんにちは

つまり、include は単にファイルの中身を取得するだけではなく、PHPコードとして実行するためのものです。

file_get_contentsは文字列として取得する

一方、file_get_contents() は、ファイルの中身を文字列として取得します。

<?php
$text = file_get_contents('message.txt');

echo $text;

PHPコードとして実行するわけではありません。

そのため、用途は次のように分けると分かりやすいです。

PHPファイルを読み込んで実行したい:include / require
ファイルの中身を文字列として取得したい:file_get_contents()

ヘッダーやフッターなどのPHPパーツを読み込む場合は includerequire を使います。

テキストファイルやテンプレートの中身を文字列として取得したい場合は、file_get_contents() を使います。

WordPressでのインクルード

WordPressでも、PHPの includerequire は使えます。

ただし、WordPressテーマ制作では、WordPress専用のテンプレート関数を使うことが多いです。

ヘッダーとフッターの読み込み

WordPressでは、ヘッダーを読み込むときに get_header() を使います。

<?php get_header(); ?>

<main>
  <h1><?php the_title(); ?></h1>
  <?php the_content(); ?>
</main>

<?php get_footer(); ?>

フッターは get_footer() で読み込みます。

通常のPHPサイトでは、

include 'header.php';
include 'footer.php';

のように書くことがありますが、WordPressテーマでは get_header()get_footer() を使うのが一般的です。

テンプレートパーツの読み込み

WordPressで共通パーツを読み込む場合は、get_template_part() を使います。

<?php get_template_part('parts/card'); ?>

この場合、テーマ内の parts/card.php を読み込みます。

記事一覧のカード、パンくずリスト、CTAパーツなどを共通化したい場合に便利です。

独自ファイルを読み込む場合

WordPressテーマ内で独自の関数ファイルを読み込む場合は、次のように書くことがあります。

<?php
require_once get_template_directory() . '/inc/custom-functions.php';

親テーマのファイルを読み込む場合は get_template_directory() を使います。

子テーマ側のファイルを読み込む場合は、get_stylesheet_directory() を使います。

<?php
require_once get_stylesheet_directory() . '/inc/custom-functions.php';

WordPressでは、通常のPHPの include / require も使えますが、テーマ制作ではWordPressのテンプレート関数を使った方が自然な場合が多いです。

Composerのautoloadとの関係

モダンなPHP開発では、クラスファイルを手動で大量に require_once する代わりに、Composerのautoloadを使うことが一般的です。

Composerのautoloadとは

Composerを使うと、ライブラリやクラスを自動で読み込めるようになります。

多くの場合、次の1行を読み込みます。

<?php
require_once __DIR__ . '/vendor/autoload.php';

この vendor/autoload.php を読み込むことで、Composerで管理しているライブラリや、自分で定義したクラスを自動的に読み込めるようになります。

小規模サイトではrequire_onceでもよい

小規模なPHPサイトでは、設定ファイルや関数ファイルを require_once で読み込む方法でも十分です。

<?php
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/functions.php';

一方、クラスが増える中〜大規模な開発では、手動で多くのファイルを読み込むよりも、Composerのautoloadを使う方が管理しやすくなります。

つまり、次のように考えるとよいでしょう。

小規模なPHPサイト:require_onceで十分な場合が多い
クラスが多い開発:Composerのautoloadを使うのが一般的

PHPインクルードでよくあるエラー

PHPのインクルードでは、パスの間違いや重複読み込みによるエラーがよく起こります。

Failed to open stream

よくあるエラーの1つが、次のようなものです。

Warning: include(header.php): Failed to open stream: No such file or directory

これは、指定したファイルが見つからないという意味です。

主な原因は次の通りです。

ファイル名が間違っている
フォルダ名が間違っている
相対パスの指定が間違っている
ファイルが存在しない
大文字・小文字が違う

特にLinux系のサーバーでは、ファイル名の大文字・小文字が区別されます。

include 'Header.php';
include 'header.php';

この2つは、サーバーによっては別のファイルとして扱われます。

ローカル環境では動いていたのに、本番サーバーでエラーになる場合は、大文字・小文字の違いも確認しましょう。

Cannot redeclare function

次のようなエラーが出ることもあります。

Fatal error: Cannot redeclare function_name()

これは、同じ関数を複数回定義しようとしたときに起こるエラーです。

原因として多いのは、関数ファイルを複数回読み込んでいるケースです。

include 'functions.php';
include 'functions.php';

対策として、関数やクラスを定義しているファイルは require_once で読み込みます。

require_once __DIR__ . '/functions.php';

require_once を使えば、すでに読み込まれているファイルは再読み込みされません。

画面が真っ白になる

PHPで画面が真っ白になる場合、インクルード先で重大なエラーが起きている可能性があります。

開発環境では、エラー表示を有効にして確認できます。

ini_set('display_errors', 1);
error_reporting(E_ALL);

ただし、本番環境でエラーを画面に表示するのは避けるべきです。

内部パスや設定情報などがユーザーに見えてしまう可能性があるためです。

本番環境では、画面にエラーを出すのではなく、ログに記録する設定にするのが基本です。

PHPインクルードの実務的な使い方

実務では、すべてを include で読み込むのではなく、ファイルの重要度に応じて使い分けることが大切です。

設定ファイルはrequire_onceを使う

設定ファイルは、読み込めないとサイト全体が正常に動作しないことが多いです。

そのため、基本的には require_once を使います。

<?php
require_once __DIR__ . '/includes/config.php';

データベース接続ファイルも同様です。

<?php
require_once __DIR__ . '/includes/database.php';

関数ファイルはrequire_onceを使う

関数ファイルも、重複読み込みを避けるために require_once を使います。

<?php
require_once __DIR__ . '/includes/functions.php';

同じ関数を複数回定義しようとするとエラーになるため、関数ファイルには require_once が向いています。

表示パーツはincludeまたはrequireを使う

ヘッダー、フッター、ナビゲーションなどの表示パーツは、include または require を使います。

<?php include __DIR__ . '/parts/header.php'; ?>

ただし、ヘッダーやフッターがないとページとして成立しない場合は、require を使ってもよいです。

<?php require __DIR__ . '/parts/header.php'; ?>

読み込めなくてもページ本体を表示したい補助パーツには、include が向いています。

<?php include __DIR__ . '/parts/banner.php'; ?>

パス指定には__DIR__を使う

パス指定では、できるだけ __DIR__ を使うのがおすすめです。

<?php
require_once __DIR__ . '/includes/config.php';
include __DIR__ . '/parts/header.php';

相対パスだけで書くと、ファイルの階層が変わったときにエラーになりやすいです。

__DIR__ を使えば、現在のファイルを基準にパスを指定できるため、読み込みが安定します。

PHPインクルードのまとめ

PHPのインクルードは、外部ファイルを読み込むための便利な仕組みです。

主に使う構文は、次の4つです。

include 'file.php';
require 'file.php';
include_once 'file.php';
require_once 'file.php';

include は、読み込みに失敗しても警告を出して処理を続けます。

require は、読み込みに失敗すると重大なエラーとなり、処理を停止します。

include_oncerequire_once は、同じファイルを一度だけ読み込むための構文です。

実務では、次のように使い分けると分かりやすいです。

補助的な表示パーツ:include
必須の表示パーツ:require
設定ファイル:require_once
関数ファイル:require_once
クラスファイル:require_onceまたはComposerのautoload

また、パス指定では __DIR__ を使うと安全です。

<?php
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/functions.php';

include __DIR__ . '/parts/header.php';
include __DIR__ . '/parts/footer.php';

セキュリティ面では、ユーザー入力をそのまま includerequire のファイル名に使わないことが重要です。

動的にファイルを読み込む場合は、必ず許可リスト方式で読み込み対象を制限しましょう。

PHPのインクルードを正しく使えば、共通パーツの管理がしやすくなり、コードの重複を減らせます。

小規模なWebサイトからWordPressテーマ、独自システムまで幅広く使われる基本機能なので、includerequirerequire_once の違いをしっかり理解しておくことが大切です。

以上、PHPのインクルードについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次