【问题标题】:Full URL not working with php include完整的 URL 不适用于 php 包括
【发布时间】:2012-11-13 21:56:56
【问题描述】:

所以,我试图插入一个包含 php 的文件,但由于某种原因,它不适用于完整的 URL。

这行得通:

<?php include 'menu.html' ?>

但这不是:

<?php include 'http://domainname.com/menu.html' ?>

有什么想法吗?

【问题讨论】:

  • 服务器是否在 Windows 上运行?如果是这样,请注意warning“PHP 4.3.0 之前的 Windows 版本不支持通过此函数访问远程文件,即使启用了 allow_url_fopen。”

标签: php php-include


【解决方案1】:

include 旨在包含和评估指定的 PHP 文件。如果你在本地获取它,它可以像 PHP 一样被处理——如果你通过一个完整的 URL 获取它,你将得到生成的 HTML(理论上......你可能只会得到一个错误)。

Supporting Docs

include 'menu.php' //Internally process a PHP file to generate HTML

file_get_contents('http://domainname.com/menu.php'); //Fetch resutling HTML

【讨论】:

  • 啊啊啊,明白了。行。是的,我不确定是那个还是别的什么
【解决方案2】:

检查 php.ini -

allow_url_include

但我不得不说,如果你没有非常好的理由,请不要使用它。这是最严重的 php 弱点之一,严重的安全威胁。

【讨论】:

  • 为什么这是安全威胁?
  • 因为谁知道在哪里可以执行任何事情
【解决方案3】:

您的php.ini 是否允许您通过include 使用远程文件?

如果它在您自己的域上,那么要求绝对 URL 是没有意义的,因为这会导致服务器打开与自身的连接以通过 HTTP 检索文件,而直接文件操作会简单得多。

【讨论】:

  • 嗯,就是这样。在我之前设计该网站的家伙认为,将博客和网站(都是 wordpress)放在两个不同的安装和 URL 上会更好。然后他在不使用 wordpress 菜单功能的情况下将整个菜单设为静态。让我大吃一惊。无论如何,只是寻找一个简单的解决方案来从一个文件更新两个地方的导航。
【解决方案4】:

不要使用绝对网址。相反,请尝试从根目录链接。 像这样:

$path = $_SERVER['DOCUMENT_ROOT']."/layer1/layer2/layer3/";
include($path."file.php");

【讨论】:

    【解决方案5】:

    包含标签用于引用其他 PHP 脚本文件。如果它不是您要处理的脚本,您可能需要考虑使用:

    $FileContents = file_get_contents("http://www.domainname.com/menu.html");
    

    【讨论】:

      【解决方案6】:

      allow_url_fopenallow_url_include 之类的声音或两者都已在 php.ini 中设置为 0(禁用)。

      不过,PHP 脚本中的 HTML 不应该是 included。其他答案似乎也解决了这个问题。

      【讨论】:

      • 我将它与 .htaccess 文件一起使用,因为其余页面都是 .html 文件。
      猜你喜欢
      • 2017-01-23
      • 2014-03-07
      • 1970-01-01
      • 2017-01-22
      • 2017-03-08
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多