include语句使用文件名中的变量

时间:2013-03-16 12:59:12

标签: php variables include filenames

(请耐心等待,这确实与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
包括失败

我查看了包含语法的各种网站,但我在代码中找不到任何错误。所有这些文件都在/目录中。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

当您加入时,您必须提供结构化目录,而不是网址。

您的托管服务器路径可能是home / public / www / htdocs / your_directory_name / panel.php之类的东西。然后它会工作。

答案 1 :(得分:1)

改造包括也是可能的 如果 1.服务器的php.ini应该允许它。 2.包含的文件不应在包含之前进行预先处理。这意味着它必须返回未处理的代码:)

答案 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包含(),那么脚本本身,但它的输出将被包括在内。