我的div里面有一个php要求
require('inc/coreturni/list.php');
再次需要数据库连接
require('inc/connect.inc.php');
当我加载页面时它们都起作用。
但是如果我尝试刷新div,则在点击事件之后刷新第一个包含文件,使用jquery load()
我收到以下路径错误:
警告:require(inc / connect.inc.php):无法打开流:第2行的C:\ xampp \ htdocs \ taximat \ inc \ coreturni \ list.inc.php中没有此类文件或目录
致命错误:require():在C:\ xampp \ htdocs \ taximat \ inc \中打开所需的'inc / connect.inc.php'(include_path ='。; C:\ xampp \ php \ PEAR')失败第2行的coreturni \ list.inc.php
为什么路径应该不同?我怎么能解决它?
答案 0 :(得分:3)
您的错误解释了所有内容:
警告:require( inc / connect.inc.php ):无法打开流:没有 文件或目录 第2行 C:\ xampp \ htdocs \ taximat \ inc \ coreturni \ list.inc.php
致命错误:require():无法打开所需的' inc / connect.inc.php ' (include_path ='。; C:\ xampp \ php \ PEAR')in 第2行 C:\ xampp \ htdocs \ taximat \ inc \ coreturni \ list.inc.php
请注意它在该目录中找不到inc/connect.inc.php
:
C:\xampp\htdocs\taximat\inc\coreturni
这是因为您的require
语句指的是相对路径。因此,当加载文件list.inc.php
时,require
假设inc/connect.inc.php
位于C:\xampp\htdocs\taximat\inc\coreturni
。这就是失败的原因。
您应该像这样在应用中设置基本路径。请注意,在这种情况下我不清楚正斜杠或反斜杠语法,因为我主要在Mac& Unix系统和错误显示了Windows路径,但PHP显示的是Unix路径。
$BASE_PATH='/xampp/htdocs/taximat/inc/coreturni/';
并且要求所有这样的文件:
require($BASE_PATH . 'inc/coreturni/list.php');
就像这样:
require($BASE_PATH . 'inc/connect.inc.php');
无论在何处调用文件,require
都将使用文件的绝对路径。由于$BASE_PATH
是您设置的一次性变量,您可以在主配置文件中设置它而不用担心它。要使代码可移植,只需根据系统设置更改$BASE_PATH
。
答案 1 :(得分:1)
首次显示页面时,您的路径如下:
page.php
inc/
coreturni/
list.php
connect.php
换句话说,从require
看,所有page.php
语句都是相对的。
但是,当您直接使用AJAX请求list.php
时,它看起来更像是这样:
list.php
../
connect.php
现在,require
应该是../connect.php
。
<强>解决方案强>
解决此问题的一种方法是根据当前正在处理的文件(即list.php
)计算绝对路径,如下所示:
require dirname(__DIR__) . '/connect.php';
dirname(__DIR__)
构造将始终生成文件系统上比当前脚本更高的目录。