關于file_get_contents返回為空或函數(shù)不可用的解決方案
更新時間:2013年06月24日 10:27:38 作者:
本篇文章是對file_get_contents返回為空或函數(shù)不可用的解決方案進行了詳細的分析介紹,需要的朋友參考下
如果你使用file_get_contents獲取遠程文件內(nèi)容返回為空或提示該函數(shù)不可用,也許本文能幫到你!
使用file_get_contents和fopen必須空間開啟allow_url_fopen。方法:編輯php.ini,設置allow_url_fopen = On,allow_url_fopen關閉時fopen和file_get_contents都不能打開遠程文件。如果你使用的是虛擬主機可以考慮用curl函數(shù)來代替。
curl函數(shù)的使用示例:
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, ‘http://chabaoo.cn');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
利用function_exists函數(shù)來判斷php是否支持file_get_contents,否則用curl函數(shù)來代替。
PS
1、如果你的主機服務商把curl也關閉了,那你還是換個主機商吧!
2、allow_url_fopen設為off,并不代表你的主機不支持file_get_content函數(shù)。只是不能打開遠程文件而已。function_exists(‘file_get_contents')返回的是true。所以網(wǎng)上流傳的《file_get_contents函數(shù)不可用的解決方法》還是不能解決問題。
錯誤代碼:
if (function_exists(‘file_get_contents')) {
$file_contents = @file_get_contents($url);
}else{
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
應改為:
if (function_exists(‘file_get_contents')) {//判斷是否支持file_get_contents
$file_contents = @file_get_contents($url);
}
if ($file_contents == ”) {//判斷$file_contents是否為空
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
最終代碼:
function file_get_content($url) {
if (function_exists(‘file_get_contents')) {
$file_contents = @file_get_contents($url);
}
if ($file_contents == ”) {
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}
用法:
echo file_get_content(‘http://chabaoo.cn');
使用file_get_contents和fopen必須空間開啟allow_url_fopen。方法:編輯php.ini,設置allow_url_fopen = On,allow_url_fopen關閉時fopen和file_get_contents都不能打開遠程文件。如果你使用的是虛擬主機可以考慮用curl函數(shù)來代替。
curl函數(shù)的使用示例:
復制代碼 代碼如下:
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, ‘http://chabaoo.cn');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
利用function_exists函數(shù)來判斷php是否支持file_get_contents,否則用curl函數(shù)來代替。
PS
1、如果你的主機服務商把curl也關閉了,那你還是換個主機商吧!
2、allow_url_fopen設為off,并不代表你的主機不支持file_get_content函數(shù)。只是不能打開遠程文件而已。function_exists(‘file_get_contents')返回的是true。所以網(wǎng)上流傳的《file_get_contents函數(shù)不可用的解決方法》還是不能解決問題。
錯誤代碼:
復制代碼 代碼如下:
if (function_exists(‘file_get_contents')) {
$file_contents = @file_get_contents($url);
}else{
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
應改為:
復制代碼 代碼如下:
if (function_exists(‘file_get_contents')) {//判斷是否支持file_get_contents
$file_contents = @file_get_contents($url);
}
if ($file_contents == ”) {//判斷$file_contents是否為空
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
最終代碼:
復制代碼 代碼如下:
function file_get_content($url) {
if (function_exists(‘file_get_contents')) {
$file_contents = @file_get_contents($url);
}
if ($file_contents == ”) {
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}
用法:
echo file_get_content(‘http://chabaoo.cn');
您可能感興趣的文章:
- 探討file_get_contents與curl效率及穩(wěn)定性的分析
- 深入php函數(shù)file_get_contents超時處理的方法詳解
- 詳解PHP內(nèi)置訪問資源的超時時間 time_out file_get_contents read_file
- file_get_contents獲取不到網(wǎng)頁內(nèi)容的解決方法
- 比file_get_contents穩(wěn)定的curl_get_contents分享
- PHP-CGI進程CPU 100% 與 file_get_contents 函數(shù)的關系分析
- php中使用Curl、socket、file_get_contents三種方法POST提交數(shù)據(jù)
- PHP下通過file_get_contents的代理使用方法
- php file_get_contents函數(shù)輕松采集html數(shù)據(jù)
- PHP file_get_contents 函數(shù)超時的幾種解決方法
相關文章
在PHP上顯示JFreechart畫的統(tǒng)計圖方法
在JSP上的servlet能完全的顯示出JFreechart畫的統(tǒng)計圖,但是和其他語言混合運用就不能顯示了,下面為大家介紹下如何在PHP上顯示JFreechart2013-11-11PHP中文URL編解碼(urlencode()rawurlencode()
PHP中對于URL進行編碼,可以使用 urlencode() 或者 rawurlencode(),二者的區(qū)別是前者把空格編碼為 '+',而后者把空格編碼為 '%20',不過應該注意的是,在編碼時應該只對部分URL編碼,否則URL中的冒號和反斜杠也會被轉義。2010-07-07php 數(shù)組字符串搜索array_search技巧
本文給大家總結了一下PHP實現(xiàn)數(shù)組字符串搜索的幾種使用技巧,非常的簡單實用,有需要的小伙伴可以參考下2016-07-07php實現(xiàn)利用phpexcel導出數(shù)據(jù)
以下是對php中利用phpexcel導出數(shù)據(jù)的實現(xiàn)代碼進行了介紹,需要的朋友可以過來參考下2013-08-08