问题
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 include
d in a PHP script, though. Other answers seem to address that issue as well.
来源:https://stackoverflow.com/questions/13369529/full-url-not-working-with-php-include