我如何知道PHP中将使用哪个包含路径?

时间:2010-05-05 15:56:33

标签: php smarty include-path phpinfo php-ini

当我运行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模板引擎的人来说,我确信这听起来非常熟悉。 / p>

其中一个PHP文件包含以下内容:

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搜索要包含的文件的顺序吗?

1 个答案:

答案 0 :(得分:1)

全局值基本上是php.ini中设置的值。本地值是当前使用的值。本地值完全覆盖主值。

根据手册,PHP按照include_path设置中指定的顺序检查路径:http://php.net/manual/en/ini.core.php#ini.include-path