-1

收到以下错误

未能打开 './admin/main.inc' 以包含 (include_path='.:/usr/local/php5_3/lib/php')

包含的文件在/admin目录中。同一个站点在我尝试过的其他 2 个主机上运行良好,但在那个(老爹)主机上它不起作用并抛出错误。如果我改变../admin/main.inc它的路径,但我不能改变所有包含在脚本中的文件,所以我在这里寻求帮助。如果你能告诉我解决这个问题,或者至少我应该说什么来支持,以便他们可以解决它?

我在互联网上发现的只是“您主机上的 PHP 未配置为包含当前目录”

更新:

好的,现在我开始工作了,但是……情况就是这样。文件夹名为 /admin 有 index.php 和 forgot.php(忘记密码)。两个文件都包含 /admin/main.inc 这里是 index.php 包含

`include_once "../admin/main.inc";`

这是forgot.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 工作正常但 forgot.php 返回失败包含,没有这样的文件......

如果我将 main.inc 更改为使用 ./index.php 停止工作并且 forgot.php 工作......

4

2 回答 2

2

如果你能告诉我解决这个问题,或者至少我应该说什么来支持,以便他们可以解决它?我在互联网上发现的只是“您主机上的 PHP 未配置为包含当前目录”

好的,首先解释一下您面临的情况:您的包含以./or开头../。这些包含的路径是相对于当前工作目录的。

通常是被请求的 php 文件所在的目录,但是,从技术上讲,这是独立的。

所以从技术上讲,你在这里有工作目录的隐藏依赖。如果您不想更改包含路径,请更改工作目录。

但是,通常更容易对多个文件进行搜索和替换并将./开头替换为__DIR__ . '/,这是表示当前文件目录的魔术__DIR__常量,它与工作目录设置无关。


我在互联网上发现的只是“您主机上的 PHP 未配置为包含当前目录”

这通常意味着不同的东西,实际上这甚至不是你的主机的情况。在您的主机上,它配置为包含当前目录:

... include_path='.:/usr/local/php5_3/lib/php'

包含路径中的第一个点当前工作目录。

于 2013-08-31T23:13:14.800 回答
0

如果它与 .. 一起使用,那么您可以使用父目录动态扩展默认包含路径:

set_include_path(get_include_path() . PATH_SEPARATOR . '../');

(它必须在 include 语句之前,最好是在脚本开头的某个地方,并且 php 必须有权读取此目录。)

编辑:似乎 ./ 在文件名的开头有效地阻止了这个,所以你可以尝试:

set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__DIR__));

...或从包含文件名中删除所有 ./ ,您的应用程序应该在没有这些的情况下工作。

于 2013-08-31T23:21:01.383 回答