想要在include_once php中给出一个文件名,但带有根地址.如何去做


Want to give a file name in include_once php but with the root address. How?

我正在使用AJAX开发PHP。由于AJAX,您不能说在某个特定时间点您在哪个目录中。所以要调用文件,我不能使用固定的路径和文件名。我想要给出从根目录开始到文件的路径。它运行良好。

但是如果我想包含一个文件,问题就来了。假设我想包含一个test.php文件,如:

include_once("http://localhost/sms/test.php");

包含文件,但问题是:

<?php
   $i = 9;
   include_once("http://localhost/sms/test.php");
?>

test.php包含

<?php
  echo $i;
?>
这段代码应该给出如下输出:
9

…但它什么也没给。我知道原因:浏览器通过单独的HTTP请求请求服务器,因为路径包含"HTTP",所以服务器返回HTML输出。所以$i不存在:没有输出。

我如何调用文件包括使用他们的路径从根运行AJAX正确?

try require_once($_SERVER['DOCUMENT_ROOT'] . '/sms/test.php');

您应该永远不要在本地文件路径中使用主机名。相反,使用$_SERVER['DOCUMENT_ROOT'],如下所示:

require_once("{$_SERVER['DOCUMENT_ROOT']}/sms/test.php");

这将在文件路径的开头附加/var/www(或任何根路径)之类的内容。用require_once()代替include_once()效果更好;如果PHP找不到要包含的文件,它会提示并停止执行,而不是可能静默失败。