file_get_contents()
由于某种原因返回空字符串。
<?php
$value = file_get_contents("http://foo.com/somefile.txt");
echo $value;
?>
allow_url_fopen = On
allow_url_include = On
69.00000000
通常file_get_contents("http://foo.com/somefile.txt")
返回一个空字符串时,是由于以下两个原因之一
somefile.txt
是一个空文件php.ini
有allow_url_include = Off
$value
现在应该是69.00000000
,但是函数什么也不返回。
为什么函数调用后$value
为空?
答案 0 :(得分:1)
有两种不同的“空”。该文件实际上是0字节长(空字符串),或者是the call failed,并且返回值为FALSE。引用文档:
失败时,file_get_contents()将返回FALSE。
现在,我不知道您的通话为什么失败,但是它可能已经记录在网络服务器错误日志中,或者您可以将其转换为异常以自己记录。
在development system上建议的第三种替代方法是在php.ini中设置display_errors
以使问题可见:
display_errors on
这包括输出中的错误,以便您可以在浏览器中看到它们。
答案 1 :(得分:1)
try this:
checkRemote("http://foo.com/somefile.txt");
function checkRemote($url)
{
if(!checkRemoteLink($url)){
echo 'bad link!';
} else if(!checkRemoteFile($url)){
echo 'bad file!';
} else echo 'trouble!';
}
function checkRemoteLink($url)
{
$file_headers = @get_headers($url);
if (!$file_headers || $file_headers[0] == 'HTTP/1.1 404 Not Found') {
return false;
} else {
return true;
}
}
function checkRemoteFile($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if (curl_exec($ch) !== FALSE) {
return true;
} else {
return false;
}
}