1

自从我遇到这个网站以来已经有一段时间了。到目前为止,我一直在查看不同用户提出的问题,并使用评论者提供的技巧来解决我的问题和代码问题。遗憾的是,我无法找到与当前问题相关的帖子,因此我发布了我的第一个帮助线程。

我在我的应用程序中使用和“include.php”文件,其中包含我项目的所有相关文件。该文件位于子目录“includes”中,因此其路径为“includes/include.php”。自从我开始编码,直到我最后决定开始在我的代码中使用 JQuery,一切都很好。由于我对这两种语言都很陌生,因此在尝试将某个 PHP 文件加载到我的一个 HTML div 中时遇到了一个烦人的问题。我不会花时间向您口头解释问题所在,而是直接向您展示。

在我的 PHP 文件的顶部,我使用下一个代码来包含我的主要包含文件:

require_once "/includes/include.php";

我的“包含”文件的内容只是包括其余文件,如下所示:

require_once 'user.php';
require_once 'db.php';

这些文件一切正常。现在我有一个不同的包含文件,一个脚本文件,我在我的代码中间使用它来发布某个 HTML 脚本。我使用下一个代码将其加载到我的主 PHP 文件中:

<?php include '/includes/script_files/loadAdminMessageClass.php'; ?>

到目前为止一切正常。当我尝试使用 JQuery 刷新某个 div 并将相同的“loadAdminMessageClass”文件重新加载到该 div 时,问题就开始了。这是我用来重新加载 div 的代码行:

$('#div_adminMessage').load('/includes/script_files/loadAdminMessageClass.php');

问题从这里开始。从现在开始,第一个“loadAdminMessageClass”中的“require_once '/includes/include.php' 行不起作用。重新加载过程后,我的 div 中出现下一个错误:

警告:require_once(/includes/include.php) [function.require-once]:无法打开流:第 8 行的 C:\wamp\www\includes\script_files\loadAdminMessageClass.php 中没有这样的文件或目录

致命错误:require_once() [function.require]:在 C:\wamp\www\includes\script_files\loadAdminMessageClass 中打开所需的 '/includes/include.php' (include_path='.;C:\php5\pear') 失败.php 在第 8 行

我多年来一直在寻找这个问题,但没有什么能像我所寻求的答案一样。好像当我从 JQuery 调用“loadAdminMessageClass.php”文件时,它不会以应有的方式处理“require_once”调用。

--

我很高兴能对我的这个问题作出回应。谢谢。

4

2 回答 2

3

我真的很惊讶这条线有效:

require_once "/includes/include.php";

这是指服务器文件系统的根目录。您错误地假设 PHP 在构建包含路径时尊重您网站的文档根目录。

您必须明确检索$_SERVER['DOCUMENT_ROOT']以找出网站正在运行的位置(类似/var/www/mywebsite/home/user/public_html通常),然后从那里构造路径:

define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
require_once ROOT_PATH.'/includes/include.php';
于 2013-05-31T13:11:05.310 回答
1

你应该试试这个

require_once dirname(__FILE__) . '/includes/include.php';
于 2013-05-31T13:14:13.727 回答