日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > php fopen 函數(shù)不能獲取遠程地址內(nèi)容

php fopen 函數(shù)不能獲取遠程地址內(nèi)容

來源:程序員人生   發(fā)布時間:2014-02-12 18:16:33 閱讀次數(shù):2705次

fopen函數(shù)在php中多半是用于讀寫文件了,但有時也用于獲取遠程服務器的文件,但我們在使用fopen讀取遠程文件時需要開啟allow_url_fopen才可以哦。

解決過程,首先排除了DNS的問題,因為除了這幾個函數(shù),其他一切工作正常。雖然是帶域名的URL才有問題,但gethostbyname() 這個函數(shù)卻可以得到正確返回。 然后想到的是php.ini 的配置問題——但發(fā)現(xiàn)allow_url_fopen 已經(jīng)打開。 之后尋求Google幫忙,有人提及是SELINUX的問題。可我壓根沒有打開SELINUX。繼續(xù)Google之,發(fā)現(xiàn)了StackOverflow的這篇,代碼如下:

  1. $file = fopen('http://www.phpfensi.com/''rb'); 
  2. var_dump(stream_get_meta_data($file)); 
  3. /* 

輸出結果:

  1. array(10) { 
  2.   ["wrapper_data"]=> 
  3.   array(2) { 
  4.     ["headers"]=> 
  5.     array(0) { 
  6.     } 
  7.     ["readbuf"]=> 
  8.     resource(38) of type (stream) 
  9.   } 
  10.   ["wrapper_type"]=> 
  11.   string(4) "cURL" 
  12.   ["stream_type"]=> 
  13.   string(4) "cURL" 
  14.   ["mode"]=> 
  15.   string(2) "rb" 
  16.   ["unread_bytes"]=> 
  17.   int(0) 
  18.   ["seekable"]=> 
  19.   bool(false
  20.   ["uri"]=> 
  21.   string(23) "http://www.phpfensi.com/" 
  22.   ["timed_out"]=> 
  23.   bool(false
  24.   ["blocked"]=> 
  25.   bool(true
  26.   ["eof"]=> 
  27.   bool(false
  28. }*/ 

要使用fopen、getimagesize或include等函數(shù)打開一個url,需要對php.ini進行設置,通常設置allow_url_fopen為on允許fopen url,設置allow_url_include為on則允許include/require url,但在本地測試環(huán)境下卻不一定管用

  1. allow_url_fopen = on 
  2. Whether to allow the treatment of URLs (like http:// or ftp://) as files. 
  3. allow_url_include = on 
  4. Whether to allow include/require to open URLs (like http:// or ftp://) as files. 

在本地wamp測試環(huán)境中,這樣設置以后,fopen可以正常打開遠程地址,但遇到本地的地址卻會報錯,例如代碼如下:

fopen("http://localhost/myfile.php", "r"); 

就會在超過php.ini中設置的腳本最長執(zhí)行時間后報錯,告知文件不存在等。這在在線服務器上是不會出現(xiàn)的,但如果將localhost替換成127.0.0.1,卻可以正常工作。

從狀況看,問題出在DNS解析上,按理說localhost已經(jīng)自動被映射到127.0.0.1,實際上訪問http://localhost和訪問http://127.0.0.1也到達同一個地址。

解決的方法就是檢查一下Windows的host文件,通常位于system32目錄下,一個系統(tǒng)盤是C盤的host路徑如下所示

C:/Windows/System32/drivers/etc/hosts

打開hosts文件,用記事本或者notepad++等工具,將下面的127.0.0.1前面的#去掉即可,代碼如下:

  1. # localhost name resolution is handled within DNS itself.  
  2. #   127.0.0.1       localhost 

將url視為文件有什么用,比如給include的文件傳值,可以這樣

在example.inc.php中

  1. var_dump($_GET['foo']);     
  2. var_dump($_GET['bar']);  
  3. ?> 

運行結果:string(1) "1" string(1) "2"

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品178页 | 色综合色综合色综合色综合 | 日韩午夜在线视频 | 在线观看国产精品视频 | 国产精品伦一区二区三级视频 | 男女视频网站 | 久久久久国产精品一区二区 | 91超碰免费 | 国产亚洲视频在线观看 | 日韩1区 | 午夜精品久久久久久久白皮肤 | 久久久久免费精品 | 婷婷丁香社区 | 日本免费三区 | 亚洲国产高清在线 | 欧美成人第一页 | 国产三级精品片 | 国产一区二区成人 | 91久久精品视频 | 日韩免费一区二区 | 99热综合| 欧美日韩一区二区视频在线观看 | 久久手机视频 | 国产二区免费视频 | 久久国产区 | 国产日韩精品久久 | 91久久久久久久久久久久久 | 欧美午夜激情视频 | 日本精品黄色 | 国产黄色一区 | 久久精品99久久 | 国产精品久久久久久久久免费看 | 在线观看中文字幕一区 | 亚洲三级网站 | 中文字幕一区二区视频 | 国产视频二区 | 免费人成网ww44kk44 | 99精品电影 | 久久伊人国产视频 | 国产高清视频一区二区 | 国产精品久久久久久影视 |