include_pathは、phpがinclude includeまたは要求のステートメントを実行するときに検索するファイルのディレクトリリストを指定するためのphp構成の重要なオプションです。この構成は、 php.iniファイルで設定するか、コードを介して動的に変更できます。 PHPは、パスリストを含む順序でターゲットファイルを探します。
たとえば、default include_pathは次のようなものかもしれません。
.:/usr/local/lib/php
これは、PHPが最初に現在のディレクトリ( 。 )から検索し、次に/usr/local/lib/phpディレクトリに移動して検索することを意味します。
get_include_path()は、呼び出された後に現在のPHP環境の含有パス文字列を返すパラメーターのない関数です。この文字列を表示することにより、開発者はどのディレクトリPHPが含まれるファイルを探すかを確認できます。
string get_include_path(void);
path_separator(linux/unix : 、windowsの下のセミコロン)で区切られたパスリストを含む文字列を返します。
現在含まれているパスを印刷します
次のステートメントをコードに挿入します。
echo '現在含まれているパスはです:' . get_include_path();
このようにして、PHPが含まれているファイルをどこで探すかを直接確認できます。
付属のパスを調整します
含まれるパスに必要なディレクトリが含まれていないことがわかった場合、 set_include_path()関数を介して動的に調整できます。
set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/your/include/dir');
includeまたは要求を使用するときにパスを含むと組み合わされます
絶対パスを使用しない場合は、ファイルが配置されているディレクトリがインクルードパスにあることを確認して、PHPがファイルを正しく見つけることができるようにします。
次のようにプロジェクト構造があるとします。
/var/www/gitbox.net/project/
├── index.php
├── config/
│ └── config.php
config/config.phpをindex.phpに含めますが、次のように記述されています。
include 'config.php';
この時点で、プログラムはエラーを報告し、ファイルを見つけることができません。
get_include_path()を使用して、現在含まれているパスを表示できます。
<?php
echo 'パスを含めます:' . get_include_path() . PHP_EOL;
// 動的に追加されました config 目录到パスを含めます
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/config');
include 'config.php'; // これで、ファイルが正しく見つかります
?>
このように、PHPは現在の作業ディレクトリに関係なく、インクルードパスからconfig.phpを探します。
絶対パスを使用する:ファイルを含めるとき、絶対パスを使用して、異なる作業ディレクトリによるファイルの障害の問題を回避してください。 __dir__またはdirname(__ file__)を使用して、スプライシングパスを支援できます。
Debuggingのinclude_pathを確認します:include includeファイルが失敗した場合、最初のステップはget_include_path()を印刷して、含まれるパスが正しく設定されているかどうかを確認することです。
PHP.iniの構成:生産環境では、 PHP.iniに含まれるパスを設定して、コード内のパスを動的に変更することによって引き起こされる複雑さを減らすことをお勧めします。
get_include_path()関数を通じて、開発者はPHPの現在のパス設定を明確に確認でき、それにより、含まれるファイルの検索問題を効果的に配置できます。含まれるパスの動的調整または絶対パスの使用と組み合わせることで、プロジェクトに含まれるファイル管理の安定性と保守性を大幅に改善できます。この記事の導入が、PHPにファイルパスを含めることのデバッグスキルをより適切に習得できることを願っています。
<?php
// サンプルコード,调试パスを含めます
echo '当前パスを含めます:' . get_include_path() . PHP_EOL;
// 添加自定义目录到パスを含めます
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/lib');
include 'myfile.php'; // ここ PHP 会在パスを含めます中寻找 myfile.php
?>