Full URL not working with php include

2020-02-02 00:18发布

问题:

So, I am trying to insert a file with a php include, but for some reason it doesn't work with the full URL.

This works:

<?php include 'menu.html' ?>

But this does not:

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

Any ideas?

回答1:

check php.ini -

allow_url_include

but I have to say, if you don't have really really good reason, please don't use it. It's one of the worst php weaknesses, serious security threat.



回答2:

Does your php.ini allow you to use remote files with include?

If it's on your own domain then it makes no sense to require the absolute URL, as this would cause the server to open a connection to itself to retrieve the file via HTTP when a direct file operation would be so much simpler.



回答3:

include is meant to include and evaluate a specified PHP file. If you fetch it locally, it can be processed like PHP - if you fetch it through a full URL, you will get the resulting HTML (in theory ... you may get only an error).

Supporting Docs

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

or

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


回答4:

An include tag is meant to be used to reference other PHP script files. If it is not a script that you are going to be processing, you might want to look into using:

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


回答5:

Don't use absolute urls. Instead, try linking from the root directory. Like this:

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


回答6:

Sounds like allow_url_fopen or allow_url_include or both have been set to 0 (disabled) in php.ini.

HTML should't be included in a PHP script, though. Other answers seem to address that issue as well.