PHPのエラー『Warning: include_once(): Failed Opening Required File』の解決方法
- 作成日 2025.05.06
- その他

PHPで「Warning: include_once(): Failed Opening Required File」という警告が発生するのは、指定したファイルが見つからない、または読み込めない場合に起こる。主な原因として、ファイルパスの間違い、権限の問題、`include_path` の設定ミスなどが考えられる。この記事では、エラーの発生条件と解決方法について詳しく解説する。
1. エラーの発生条件
このエラーは、`include_once()` や `require_once()` で指定したファイルが開けない場合に発生する。発生する主な条件は以下の通り。
- ファイルパスの記述ミス
- ファイルが存在しない
- ファイルの読み取り権限が不足している
- `include_path` の設定ミス
- シンボリックリンクの問題
2. エラーが発生するコード例
以下のコードを実行すると、指定したファイルが見つからない場合にエラーが発生する。
<?php
include_once "config.php";
?>
ファイル `config.php` が存在しない場合、以下のような警告が表示される。
Warning: include_once(): Failed opening 'config.php' for inclusion (include_path='.:/usr/local/lib/php')
3. ファイルパスの記述ミスを確認する
最も多い原因は、指定したファイルのパスが間違っていること。絶対パスを使うことで、確実にファイルを読み込める。
<?php
include_once __DIR__ . "/config.php";
?>
`__DIR__` を使用すると、スクリプトがあるディレクトリを基準にパスを指定できる。
4. ファイルが存在するか確認する
`file_exists()` を使って、ファイルが存在するか確認してから読み込むことでエラーを回避できる。
<?php
$file = __DIR__ . "/config.php";
if (file_exists($file)) {
include_once $file;
} else {
echo "ファイルが見つかりません: " . $file;
}
?>
5. ファイルの権限を確認する
ファイルの読み取り権限が不足していると、エラーが発生する。ターミナルで以下のコマンドを実行し、権限を確認する。
ls -l config.php
適切な権限を付与する場合、以下のコマンドを使用する。
chmod 644 config.php
6. `include_path` の設定を確認する
PHPの `include_path` が適切に設定されていないと、ファイルが見つからないことがある。現在の `include_path` を確認するには、次のコードを実行する。
<?php
echo get_include_path();
?>
設定を変更する場合は、`php.ini` に以下を追加する。
include_path = ".:/path/to/includes"
7. `require_once()` との違い
`include_once()` はファイルが見つからなくても警告を出すだけだが、`require_once()` はエラー(Fatal error)になる。
<?php
require_once "config.php";
?>
ファイルの読み込みが必須なら `require_once()` を使うとよい。
8. `@` 演算子を使ってエラーを抑制しない
`@include_once` を使うとエラーが表示されなくなるが、デバッグが難しくなるため推奨されない。
<?php
@include_once "config.php"; // 非推奨
?>
エラーを適切に処理するには、`file_exists()` などを使用する。
9. シンボリックリンクの問題をチェックする
シンボリックリンクを使用している場合、適切に解決できているか確認する。
ls -l /path/to/config.php
リンク切れの場合は、修正する必要がある。
10. Apache/Nginx の設定を確認する
Apache や Nginx の設定で `open_basedir` 制限があると、ファイルを読み込めないことがある。現在の設定を確認するには、次のコードを実行する。
<?php
echo ini_get("open_basedir");
?>
必要に応じて、`php.ini` で `open_basedir` の設定を変更する。
11. ログを確認する
サーバーのエラーログを確認すると、詳細な原因がわかる場合がある。
tail -f /var/log/apache2/error.log
12. PHPのバージョンを確認する
異なるバージョンのPHPでは、挙動が変わることがある。現在のバージョンを確認するには、以下を実行する。
<?php
echo phpversion();
?>
バージョンが古い場合は、適切にアップデートする。
-
前の記事
PHPのエラー『Fatal Error: New Static Inaccessible in Current Context』の解決方法 2025.05.05
-
次の記事
‘if’ is not recognized as an internal command の解決方法 2025.05.07
コメントを書く