(请耐心等待,这确实与include有关。)我正在等待域名转移,并且我正在尝试提前在新的托管服务上进行设置。我意识到在旧网站上所有的路径名都是绝对的,因此新主机上的所有链接都指向旧主机上的页面。我决定让它们都是相对的(对于未来可能的动作)。我第一次这样做了:
的index.php
include ('./header.php');
的header.php
include "./panel.php";
panel.php
Contents of panel.
这样可行,我的页面会显示:
小组的内容。
然后我决定为域设置一个变量,因为我想从子目录中的文件中包含这个头文件,我可以使用域变量来创建一个绝对路径。现在我有一个临时域名,我可以在转移到来时更改为真正的域名。所以我将header.php改为:
$domain="http://tempdomain.com"; //I can change this after the transfer
$panel=$domain."/panel.php";
echo $panel;
if ((include $panel) !== 1)
{
echo "<br>include failed";
}
我得到的是:
http://tempdomain.com/panel.php
包括失败
我查看了包含语法的各种网站,但我在代码中找不到任何错误。所有这些文件都在/目录中。有什么想法吗?
答案 0 :(得分:1)
当您加入时,您必须提供结构化目录,而不是网址。
您的托管服务器路径可能是home / public / www / htdocs / your_directory_name / panel.php之类的东西。然后它会工作。
答案 1 :(得分:1)
答案 2 :(得分:0)
首先,必须在allow_url_fopen
中设置php.ini
标志。否则远程include()无法完成。运行var_dump(ini_get("allow_url_fopen"));
以查看是否是这种情况。
其次,“PHP 4.3.0之前的Windows版本不支持通过此功能访问远程文件,即使启用了allow_url_fopen也是如此。” - 请参阅PHP docs
第三,您的远程PHP脚本必须生成有效的PHP代码作为输出。如果你通过http包含(),那么不脚本本身,但它的输出将被包括在内。