在JQuery调用之后,PHP包含文件表现得很奇怪

时间:2013-05-31 13:06:46

标签: php include

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

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

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

require_once "/includes/include.php";

我的'include'文件的内容只包含其余的文件,如下所示:

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 \中打开所需的'/includes/include.php'(include_path ='。; C:\ php5 \ pear')失败第8行的script_files \ loadAdminMessageClass.php

我一直在寻找这个问题多年,没有什么比我想要的答案更好。好像当我从JQuery调用'loadAdminMessageClass.php'文件时,它不会按照它应该的方式处理'require_once'调用。

-

我很高兴能回应我的这个问题。感谢。

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分:1)

你应该尝试这个

require_once dirname(__FILE__) . '/includes/include.php';