PHP本地兩個項目CURL互相訪問(已解決)


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文件

第三步:刷新瀏覽器再次訪問,就可以看到結果了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM