PHPで使用されるパスを含めるパスをどのように知ることができますか?
-
03-10-2019 - |
質問
走るとき phpinfo()
そして、それを見てください Configuration
カテゴリアンダー PHP Core
, 、題された指令が表示されます include_path
, 、ローカル価値とマスター価値を備えています。
この場合、私のローカル価値はに設定されています
.: ./include: ../include: /usr/share/php: /usr/share/php/smarty: /usr/share/pear
そして、私のマスター価値はに設定されています
.: /usr/share/php: /usr/share/pear: /usr/share/php/pear: /usr/share/php/smarty
私がこれがどのように機能するかを学ぼうとしている理由は、私がタイトルを付けているシステムにファイルがあるためです Smarty.class.php
, 、Smartyテンプレートエンジンを使用している人には非常に馴染みのあるように聞こえます。
PHPファイルの1つには、以下が含まれています。
require_once("Smarty.class.php"); require_once("user_info_class.inc");
ファイル user_info_class.inc
Includeを作成するファイルと同じディレクトリにあります。これは私にとって完全に理にかなっており、私が常にファイルを参照した方法です。 Smarty.class.phpファイルを開きたいと思って、同じディレクトリにあると想定していましたが、そうではありませんでした。
少し掘り下げた後、私はそれらを発見しました php_ini
変数、そして最終的にディレクトリ内のファイルを見つけることができました usr/share/php/smarty/
.
したがって、インクルードを作成すると、ローカル値とマスター値の間の何らかの順序に従うように思われます。 include_path
.
私の控除がこれまでに正しかったと仮定すると、誰かがファイルを含めるファイルを検索する順序を説明できますか?
解決
グローバル価値は、基本的にPHP.iniで設定されているものです。ローカル価値は現在使用されているものです。ローカル値はマスター値を完全に上書きします。
マニュアルによると、PHPは、include_pathの設定で指定されている順にパスをチェックします。 http://php.net/manual/en/ini.core.php#ini.include-path