开发者

PHP Cannot Read External File

I am trying to read an external file, hosted on another server, but am having issues.

Here, I identify the variables:

$variable1 = "test";
$variable2 = "testing";

Here, I identify the URL to read:

$url = "http://test.com/page.php?v1=" . $variable1 . "&v2=" . $variable2;

Here, I read the external file:

$content = file($url);
$reading = $content[0];
echo $reading;

The odd thing is nothing comes out. I have tried entering the actual URL and it does work, however, when PHP tries to do it, it comes out blank.

I know it is not a fatal error as I t开发者_Go百科ried just putting some regular text in there. So,there is something wrong that just is not reading the file correctly. Furthermore, I did make sure the reading server is no blocked by the server with the file on it.

Any suggestions would be appreciated.


Furthermore, I did make sure the reading server is no blocked by the server with the file on it.

How did you make sure?


First, ensure allow_url_fopen is on in php.ini.

If it is on, try setting a user agent. The remote file may expect a valid user agent.

ini_set('user_agent', 'Your browser\'s user agent or whatever');

If it is off, try using the cURL library to request the remote file. You can use cURL to set the user agent too.


You can try PHP's function file_get_contents

echo file_get_contents($url);


In order to read files and parse them from remote URLs you should make sure that the option allow_url_fopen is enabled in your php.ini configuration.

Please note that this option is disabled by default for security reasons.

http://php.net/manual/en/filesystem.configuration.php

Should I allow 'allow_url_fopen' in PHP?


If you are using a URL as a file name, allow_url_fopen must be enabled in php.ini. I would start there.


If you are fetching a website, and it starts with something like <html>, then echoing $content[0] will not show up when viewed from a browser.

Try:

echo htmlentities($content[0]);

Or:

print_r($content);


file() loads data into an array. You then echo out only the first line of this document (echo $reading[0]). That first line is likely to be only an <html> tag or perhaps a doctype declaration.

If you're simply trying to echo out the full contents of the file, then do:

echo file_get_contents($url);

That fetches the specified URL and returns it as a single string - no line parsing, no array creation. Simply a plain string with the entire file in it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜