PHP包括未包含的路径子文件夹文件

时间:2011-06-03 12:21:05

标签: php

我有一个PHP包含路径为/ usr / share / php的站点 在这条路径中,我有一个包含一些实用程序文件的子文件夹,例如在/ usr /共享/ PHP / utils的。 my_session.php是这些实用程序文件之一。

我的应用程序调用

require ("my_session.php");

即使该文件实际位于utils文件夹中,也可以正常工作。

我正在尝试在另一个安装中复制此站点,我收到错误:

Failed opening required 'my_session.php' (include_path='.:/usr/share/php)

我的问题是:

php包含路径还应该包含include路径中子文件夹中的文件吗? 这似乎是我原始网站上的情况,我不知道为什么第二个网站上的行为似乎有所不同。

3 个答案:

答案 0 :(得分:4)

根据PHP文档,当您尝试包含文件时,仅检查include_path指令中列出的路径。 PHP不应该检查它们的子文件夹。

答案 1 :(得分:2)

我的猜测是因为您使用require相对路径而失败。

您的include_path定义为.:/usr/share/php。这意味着require('my_session.php')执行时只会检查两个文件夹:

  • 当前路径
  • 文件夹/usr/share/php

我不知道您的文件夹结构,所以让我们想象一下:

my_project
- app
-- index.php
- lib
-- my_session.php

现在,如果my_project/app/index.php尝试require('my_session.php')这将失败,因为执行require时的当前文件夹为my_project/app/并且my_session.php相对于my_project/app/没有相应的文件条目(相对于my_project/lib/而言)。

长话短说:尝试使用绝对路径而不是相对路径,例如。

require('/var/www/html/my_project/lib/my_session.php');

编辑:删除及其子文件夹,这是错误的。我脑子里的__autoload太多了^^

答案 2 :(得分:0)

两种解决方案:

/usr/share/php/utils添加到您的include_path。

使用require ("utils/my_session.php");

添加您的文件