php: file_get_contents()与CLI一起工作,但在服务器上(在页面中)调用时不起作用


php: file_get_contents() work with CLI, but does not work when called on server (in page)

我有点困惑。

我正在使用比特。PHP API来缩短一些url。这在本地主机上工作得很好-但是当我在服务器上尝试时(php在Apache中运行),file_get_contents()返回一个空字符串。

我检查了apache日志,没有看到apache的任何警告/错误,所以我在CL中尝试了相同的命令(使用PHP CLI):

>php -a
php > $long_url = some_url_encoded_string;
php > echo file_get_contents($long_url);
{"errorCode": 0, "errorMessage": "", "results": {"http://www.example.html": {"userHash": "abc", "shortKeywordUrl": "", "hash": "xyz", "shortCNAMEUrl": "http://bit.ly/foobar", "shortUrl": "http://bit.ly/foobar"}}, "statusCode": "OK"}

有人知道是什么导致了这种行为吗?

这可能与PHP配置有关。许多服务器有不同的php。inis用于CLI和Apache。检查/etc/php5/,看看是否有多个配置。具体来说,您应该查找allow_url_fopen.

编辑:实际上,Ubuntu默认自带。ini文件位于/etc/php5/apache2/php.ini