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

第三步:刷新浏览器再次访问,就可以看到结果了!

posted @ 2020-03-03 16:16  锐庆  阅读(1369)  评论(0编辑  收藏  举报