PHP包含文件。显示错误文件未找到。

3

我正在使用include函数,但出现了错误,提示找不到文件。

在根目录下,我有index.php和config.php两个文件。

index.php包含config.php,并且还有其他数据。

config.php包含数据库详细信息,并且包含function/function.php文件。

有一个名为user的文件夹,其中有一个calculate.php文件。在calculate.php中,我已经包含了AJAX功能,并在AJAX调用时加载了一个文件。该文件是cal2.php,位于user文件夹中。

现在,cal2.php使用include函数包含了config.php,如下所示:

include "../config.php";

当从calculate.php加载cal2.php时,function/function.php文件未能被加载。它显示function/function.php文件未找到。

因此,文件结构如下:

  • root
  • /index.php
  • /config.php
  • /user/calculate.php
  • /user/cal2.php
  • /function/function.php

如何解决这个问题,避免cal2.php出现function.php包含错误?


你是如何在cal2.php中加载function/function.php函数的?请贴出那段代码。 - Shamim Hafiz - MSFT
1
遵循以下两个规则:1. 始终发布实际代码。2. 始终发布准确完整的错误消息。 - Your Common Sense
关于你的问题 - 很简单。只需使用现有路径即可。在你的系统中没有 /user/function/ 文件夹。 - Your Common Sense
实际上,这并不容易。完全按照OP给出的创建文件系统的说明,并且正好按照描述中使用 100% 的相对包含,不会导致出现问题。它可以百分之百地工作,而无需更改任何内容。 - Shabbyrobe
@Shabbyrobe 路径可以是相对路径或绝对路径,但首先它应该是正确的,指向现有文件。因此,OP必须首先确定该路径。静态的路径。然后再开始动态地构建它。 - Your Common Sense
3个回答

7

您需要更改config.php,使用绝对路径到functions.php。如果您有PHP 5.3或更高版本,则可以按照以下方式进行操作:

include __DIR__.'/functions/functions.php';

如果您仍在使用PHP 5.2(或更早版本),可以按照以下方式进行:

$dir = dirname(__FILE__);
include $dir.'/functions/functions.php';

__FILE__是一个魔术常量,它始终包含当前PHP文件名的值,因此调用dirname(__FILE__)将为您提供当前脚本的完整文件系统路径。


它可以帮助将函数包含到配置中,但无法将配置包含到其他所有内容中。不要使用相对路径,使用绝对路径。 - Your Common Sense
__DIR__dirname(__FILE__)是绝对路径。 - Shabbyrobe
这仍然是相对路径,傻瓜。虽然形式上是绝对路径,但它是基于当前文件的相对位置构建的。如果将该文件移动到其他位置,你的相对路径将会失效。这就是为什么应该始终使用基于某个常量的绝对路径。 - Your Common Sense

2

使用绝对路径来包含文件:

$_SERVER['DOCUMENT_ROOT'].'/function/function.php'

1
使用__DIR__dirname(__FILE__)更好,因为它不依赖于服务器环境才能工作。 - Shabbyrobe
@Shabbyrobe 这并不更好。这完全没有帮助。 - Your Common Sense
当从命令行(例如从cron)执行php脚本时,这种方法不起作用。 - Chiwda

-1

所有的问题都在这里

/user/cal2.php
/function/function.php

你需要包括这样的方式:

include('../config.php');

但是我也遇到了这个问题,我建议您在每个页面的头部包含文件。您必须在每个页面的头部包含配置。

阅读此内容,我认为它会有所帮助:

全局变量的问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接