PHP本地環境兩個項目互相訪問CURL解決方案
1.為什么本地環境中不能直接互相訪問
在解釋這個問題之前,先了解請求的一個過程; 附上如下圖:
當你使用域名localhost:80/kongzhiqi/jiekou
向本地服務器發起一次請求的時候,請求會從端口號80進入服務器,緊接着服務器會占用的CGI,默認占用CGI的端口為9000,主要目的是將動態語言php解析並與http分離,在解析php程序的時候發現程序含有curl發出請求,新的請求中默認也是占用CGI程序且為9000端口,而此刻CGI已經被這次請求所占用,所以程序中發出的curl請求根本無法執行,在整個請求過程中設置的keep-alive方式,所以服務器那邊已經出現curl不能執行的問題,但是瀏覽器還一直傻傻等着,所以就會出現使用瀏覽器一直轉圈圈、卡死或者返回false等情況;
所以從本質上講,出現這個問題,就是因為CGI已經被占用中,又請求它所以導致出現等待或false的情況的,所以解決就是多啟用一個CGI程序,並重新設置一個進入CGI的端口號;
2.開始解決這個問題
①第一步:打開這個你服務器的配置文件vhost (我這里是nginx)
修改前:
server {
listen 80; //這個地方是進入服務器的端口號80 不需要改這個端口號
server_name www.ci.com;
root "E:\TestSservice\CodeIgniter-3.1.11";
location / {
index index.html index.htm index.php;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;//這個是CGI 端口號 需要重新設置一個 比如90001等 任意就好
fastcgi_index index.php;
include fastcgi_params;
}
}
修改后
server {
listen 80;
server_name www.ci.com;
root "E:\TestSservice\CodeIgniter-3.1.11";
location / {
index index.html index.htm index.php;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9001;//將這個項目的要使用的CGI模塊設置 90001端口號
fastcgi_index index.php;
include fastcgi_params;
}
}
注意事項:如果是phpstudy軟件 需要重啟一下
②第二步:打開配置的90001端口的CGI
到你安裝的php的根目錄下,找到你正在用的PHP文件夾,可以看到里面有cgi程序,如下圖:
以命令行cmd的方式打開這個軟件,不要雙擊,因為要定義這個cgi端口號:端口號就是上述文件定義的端口號;
指令為
php-cgi.exe -b 127.0.0.1:9001 -c php.ini
意思為:執行php-cig程序 並設置端口號為 127.0.0.1:90001 並執行php.ini文件
第三步:刷新瀏覽器再次訪問,就可以看到結果了!