3

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

这有效:

<?php include 'menu.html' ?>

但这不会:

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

有任何想法吗?

4

6 回答 6

9

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

支持文件

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

或者

file_get_contents('http://domainname.com/menu.php'); //Fetch resutling HTML
于 2012-11-13T21:59:53.583 回答
8

检查 php.ini -

allow_url_include

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

于 2012-11-13T22:01:30.100 回答
7

您是否php.ini允许您使用远程文件include

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

于 2012-11-13T21:59:03.667 回答
2

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

$path = $_SERVER['DOCUMENT_ROOT']."/layer1/layer2/layer3/";
include($path."file.php");
于 2018-04-28T12:25:15.483 回答
1

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

$FileContents = file_get_contents("http://www.domainname.com/menu.html");
于 2012-11-13T22:04:22.900 回答
0

听起来像allow_url_fopenallow_url_include两者都被设置为 0(禁用)php.ini

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

于 2012-11-13T22:00:50.303 回答