亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB服務 > 正文

php服務nginx不能使用file_get_contents的解決方法

2020-03-22 18:24:47
字體:
來源:轉載
供稿:網友
在Windows環境下搭建了一個本地開發服務環境,使用Nginx做服務,但是在使用file_get_contents()獲取本地的鏈接時出現了錯誤,下面的文章將給大家介紹關于這個問題的解決方法。

一、問題說明

在Windows環境下搭建了一個本地開發服務環境,使用Nginx做服務,但是在使用file_get_contents()獲取本地的鏈接時http://127.0.0.1/index.php,出現了這樣的錯誤:

file_get_contents(http://127.0.0.1/index.php) [ a href= function.file-get-contents function.file-get-contents /a ]: failed to open stream: HTTP request failed!

本地電腦php環境為:nginx+php+mysql;于是找到這篇文章做個筆記,記錄下!

這兩天一直在搞windows下nginx+fastcgi的file_get_contents請求。我想,很多同學都遇到當file_get_contents請求外網的http/https的php文件時毫無壓力,比如echo file_get_contents(‘http://www.baidu.com’) ,它會顯示百度的頁面。但當你請求localhost/127.0.0.1本地網絡的php服務時卻一直是timeout,無論你將請求時間和腳本運行時間多長都無法返回數據,如file_get_contents(‘http://localhost/phpinfo.php’) 。然而當你嘗試請求html這樣的靜態文件時卻完全沒有問題。是什么原因呢?!

首先,我們知道file_get_contents/curl/fopen打開一個基于tcp/ip的http請求時,請求數據發送到nginx,而nginx則委托給php-cgi(fastcgi)處理php文件,一般情況fastcgi處理完一個php請求后會馬上釋放結束信號,等待下一個處理請求(當然也有程序假死,一直占用資源的情況)。打開nginx.conf,我們看到下面這一行:

location ~ .php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME d:/www/htdocs$fastcgi_script_name; include fastcgi_params;}

上面已經清楚地看到,所有使用php結尾的文件都經過fastcgi處理,而在php.ini的配置文件中也有一句:

cgi.force_redirect = 1

表明,所有php程序安全地強制轉向交給cgi處理。

但在windows中,本地127.0.0.1:9000怎樣與php-cgi聯系的呢?!答案是增加一個php-cgi進程,用它來監聽127.0.0.1:9000。通過控制器命令:

RunHiddenConsole.exe D:/www/php/php-cgi.exe -b 127.0.0.1:9000 -c C:/WINDOWS/php.ini

我們就可以在啟動windows時,開啟一個php-cgi.exe進程監聽來自127.0.0.1:9000 的請求。在dos命令下打開netstat –a就可以看到本地計算機下的9000端口處于listening狀態(也就是空置,如果沒有發送任何請求的話)。

好了,該說說在php中使用file_get_contents()、curl()、fopen()函數訪問localhost時為什么不能返回結果。我們再來試驗在index.php中加入file_get_contents(‘http://127.0.0.1/phpinfo.php’) 語句向phpinfo.php發送一個請求,這時瀏覽器中的狀態指示一直在打轉,表示它一直在工作中。打開Dos中的netstat命令,可以看到本地的9000端口的狀態為:ESTABLISHED,表示該進程在聯機處理中。實際上,這里我們已經同時向nginx發送了兩個基于http的php請求,一個是解析index.php,而另一個是phpinfo.php,這樣矛盾就出來了,因為我們的windows系統只加載了一個http進程,因此,它無法同時處理兩個php請求,它只能先處理第一個請求(index.php),而index.php卻又在等待phpinfo.php處理結果,phpinfo.php沒人幫它處理請求,因為它一直在等待index.php釋放結束信號,因此,造成了程序的阻塞狀態,陷入了死循環。所以我們就看到了瀏覽器的狀態指示一直在打轉。Curl()與fopen函數的原因也相同。

二、解決方法

找到了原因,我們也就有了解決辦法。

一是,向系統增加一個http請求,當一個php-cig內要加載另一個請求時,它能夠分配其它http處理額外的php請求。這時需給另一個http sever分配不同的端口,比如8080。nginx的案例如下:

http {  server {  listen 80;  server_name 127.0.0.1;  location / {  index index.php;  root /web/www/htdocs;  server {  listen 8080;  server_name 127.0.0.1;  location / {  index index.html;  root /web/www/htdocs;  include /opt/nginx/conf/vhosts/php.conf; }

這樣,端口80與8080可以分別處理不同的程序,比如:
test.php

 echo file_get_contents( http://localhost:8080/phpinfo.php 

當然,在*unix下有更多選擇,比如fork。

另外提醒下,網上有人說,通過去掉地址中的http://協議標記,而使用相對地址就規避函數的檢查,實際情況是不是這樣呢?!當在index.php中使用file_get_contents(‘phpinfo.php’); 時,我們可以看到函數輸出了phpinfo.php的源代碼,相當于file_get_contents(‘file:c:wwwphpinfo.php’); ,它實際上只是讀取你的文本內容,因為file_get_contents()函數首先是處理file協議的,而curl則直接報錯無法解析。因此這些人純粹是不學無術的騙子。

還有人提出修改hosts文件,增加localhost www.xxx.com影射關系,函數通過www.xxx.com訪問本地php,這其實也是不治本的偏方,因為這只是方便計算機的dns解析,最終www.xxx.com交給127.0.0.1,而后者交給唯一http,還是阻塞。

相關推薦:

file_get_contents函數不能使用的解決方法

PHP連接Nginx服務器并解析Nginx日志的方法

以上就是php服務nginx不能使用file_get_contents的解決方法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品在线第一页| 欧洲美女7788成人免费视频| 欧美大片大片在线播放| 亚洲免费伊人电影在线观看av| 欧美风情在线观看| 亚洲a在线观看| 91夜夜未满十八勿入爽爽影院| 色综合久久天天综线观看| 欧美日韩亚洲系列| 美日韩精品视频免费看| 亚洲aⅴ男人的天堂在线观看| 欧美日韩第一视频| 操91在线视频| 国产一区二区三区在线免费观看| 久久天天躁狠狠躁老女人| 久久色在线播放| 亚洲另类激情图| 国产精品91一区| 欧美高清不卡在线| 91在线观看免费| 日韩视频中文字幕| 日韩视频永久免费观看| 狠狠干狠狠久久| 在线视频欧美性高潮| 在线观看欧美日韩国产| 亚洲欧美日本精品| 亚洲人成电影在线观看天堂色| 国产成人精品a视频一区www| 91综合免费在线| 性欧美暴力猛交69hd| 久久伊人色综合| 成人激情视频在线播放| 伊人久久免费视频| 久久99久久久久久久噜噜| 日韩不卡中文字幕| 国产成人在线精品| 91精品久久久久久| 欧美激情视频一区二区三区不卡| 亚洲精品日韩在线| 国产精品一区二区久久国产| 国产日韩欧美91| 日韩在线观看网站| 在线观看视频亚洲| 亚洲男人的天堂在线播放| 欧美日韩国产黄| 日本一区二区三区四区视频| 精品动漫一区二区| 日本一欧美一欧美一亚洲视频| 亚洲精品xxxx| 81精品国产乱码久久久久久| 91av国产在线| 欧美色视频日本版| 亚洲天堂成人在线视频| 7777免费精品视频| 色噜噜狠狠狠综合曰曰曰88av| 亚洲精美色品网站| 国产欧美精品在线| 亚洲精品中文字幕av| 色悠久久久久综合先锋影音下载| 亚洲跨种族黑人xxx| 亚洲国产精品电影在线观看| 97视频在线观看播放| 中文字幕免费精品一区| 精品欧美国产一区二区三区| 日韩欧美在线国产| 欧美中文字幕视频| 精品国产成人在线| 精品伊人久久97| 色琪琪综合男人的天堂aⅴ视频| 国产精品久久久久av免费| 国产在线精品播放| 日本一区二三区好的精华液| 欧美性视频网站| 精品露脸国产偷人在视频| 亚洲精品日产aⅴ| 日韩欧美大尺度| 亚洲毛茸茸少妇高潮呻吟| 亚洲精品国产精品久久清纯直播| 国内外成人免费激情在线视频| 国产精品免费观看在线| 中文字幕欧美国内| 国产成人精品电影久久久| 亚洲一区二区久久| 国产午夜精品一区理论片飘花| 欧美大尺度激情区在线播放| 欧美视频在线看| 91高潮精品免费porn| 欧美电影在线播放| 国产精品久久不能| 久久激情五月丁香伊人| 亚洲精品欧美极品| 成人亚洲综合色就1024| 国产精品第一区| 黄色精品一区二区| 亚洲欧美国产高清va在线播| 国产精品一区二区三区久久久| 国产视频久久网| 久久亚洲综合国产精品99麻豆精品福利| 欧美大尺度激情区在线播放| 色偷偷噜噜噜亚洲男人的天堂| 亚洲美女av电影| 国产精品视频公开费视频| 一本色道久久88综合亚洲精品ⅰ| 亚洲精品aⅴ中文字幕乱码| 日韩一区视频在线| 欧美激情xxxx| 亚洲欧美资源在线| 日本不卡免费高清视频| 久久精品小视频| 久久久久久久久久久av| 福利一区福利二区微拍刺激| 日韩av在线最新| 国产精品wwwwww| 欧美激情在线观看| 2023亚洲男人天堂| 海角国产乱辈乱精品视频| 欧美精品在线观看| 久久久精品久久久久| 精品国产鲁一鲁一区二区张丽| 91免费看片网站| 日韩电影免费在线观看中文字幕| 深夜福利亚洲导航| 狠狠久久五月精品中文字幕| 亚洲欧洲视频在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲欧美在线一区| 国产精品久久久av久久久| 一区二区在线免费视频| 欧美精品xxx| 亚洲国产精品视频在线观看| 国产精品久久久精品| 国产亚洲欧洲黄色| 日韩国产精品视频| 亚洲人成网站在线播| 色与欲影视天天看综合网| 欧美在线观看网址综合| 亚洲福利视频专区| 色中色综合影院手机版在线观看| 久久精品亚洲热| 91福利视频网| 91精品国产777在线观看| 91精品国产自产在线老师啪| 日韩成人性视频| 日本亚洲欧美成人| 91免费国产视频| 免费不卡欧美自拍视频| 亚洲最大福利视频| 一区二区成人精品| 国产精品h在线观看| 国产一区二区三区三区在线观看| 亚洲国产欧美一区二区丝袜黑人| 亚洲欧美精品一区二区| 高清日韩电视剧大全免费播放在线观看| 欧美色视频日本高清在线观看| 一道本无吗dⅴd在线播放一区| 亚洲网站在线观看| 欧美激情手机在线视频| 日韩在线中文字| 亚洲欧美中文日韩在线v日本| 亚洲国产精品专区久久| 亚洲精品美女网站| 亚洲bt欧美bt日本bt| 欧洲午夜精品久久久| 欧美激情精品久久久久久免费印度|