获得以下错误
无法打开'./admin/main.inc'以包含(include_path ='。:/ usr / local / php5_3 / lib / php')
包含include的文件位于/admin
目录中。相同的网站在我试过的其他2个主机上工作正常,但在那个(godaddy)它不起作用并抛出错误。
如果我将路径更改为../admin/main.inc
它可以正常工作,但我无法负担更改所有包含在脚本中的文件,所以我在这里寻求帮助。如果你可以告诉我解决这个问题,或者至少我应该说什么来支持他们可以修复它?
我在互联网上找到的所有内容都是“主机上的PHP未配置为包含当前目录”
更新
好的,现在我让它运转了,但......这就是情况。名为/ admin的文件夹有index.php和forgot.php(忘记了密码)。这两个文件都包含/admin/main.inc这里是index.php include
`include_once "../admin/main.inc";`
这是遗忘.php包括
`include_once "./admin/main.inc";`
您看到一个文件使用../和另一个./并且它们都包含相同的文件。这里是main.inc
`session_start();
require_once '../class/class_db.php';
require_once '../class/class_wwf.php';
require_once '../class/class_other.php';
require_once '../admin/class/class_auth.php';`
所以这个想法是,如果它保持这种方式,index.php工作正常,但forget.php返回无法包含,没有这样的文件......
如果我将main.inc更改为使用./ index.php停止工作并且忘记了.php工作...
答案 0 :(得分:2)
如果你能告诉我解决这个问题,或者至少应该说些什么来支持,以便他们可以修复它?我在互联网上找到的所有内容都是“主机上的PHP未配置为包含当前目录”
首先要解释您所面对的问题:您的收件人从./
或../
开始。这些包含的路径是相对于当前工作目录的。
那是通常正在请求的php文件所在的目录,但从技术上讲这是独立的。
所以从技术上讲,你在这里有工作目录的隐藏依赖关系。如果您不想更改包含路径,请更改工作目录。
但是,通常更容易进行搜索并替换多个文件并将./
开头替换为__DIR__ . '/
,即表示当前文件目录的magic __DIR__
constant ,它独立于工作目录设置。
我在互联网上找到的所有内容都是“主机上的PHP未配置为包含当前目录”
这通常意味着不同的东西,实际上甚至不是你的托管人的情况。在您的主机上, 配置为包含当前目录:
... include_path ='。:/ usr / local / php5_3 / lib / php'
包含路径中的第一个点是当前工作目录。
答案 1 :(得分:0)
如果它适用于..那么您可以使用父目录动态扩展默认包含路径:
set_include_path(get_include_path() . PATH_SEPARATOR . '../');
(必须在include语句之前,最好在脚本开头的某个地方,php必须有权读取这个目录。)
编辑:似乎文件名开头的./有效地阻止了这个,所以你可以尝试:
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__DIR__));
...或从包含文件名中删除所有./,您的应用程序应该没有这些。