1

(请耐心等待,这确实与包含有关。)我正在等待域转移并尝试提前在新的托管服务上设置它。我意识到在旧网站上所有的路径名都是绝对的,所以我在新主机上的所有链接都指向旧主机上的页面。我决定让它们都是相对的(也用于未来可能的移动)。我第一次这样做是这样的:

索引.php

include ('./header.php');

头文件.php

include "./panel.php";

面板.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
包含失败

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

4

3 回答 3

1

包含时,您必须提供结构化的目录,而不是 url。

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

于 2013-03-16T13:20:49.947 回答
1

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

于 2013-03-16T13:41:56.963 回答
0
  • 首先,allow_url_fopen标志必须设置在php.ini. 否则远程 include() 无法完成。跑var_dump(ini_get("allow_url_fopen"));看看是不是这样。

    • 其次,“PHP 4.3.0 之前的 Windows 版本的 PHP 不支持通过此函数访问远程文件,即使启用了 allow_url_fopen 也是如此。” - 见PHP 文档

    • 第三,您的远程 PHP 脚本必须生成有效的 PHP 代码作为输出。如果您通过 http 包含(),则不会包含脚本本身,而是包含其输出。

于 2013-03-16T13:58:13.217 回答