在windows中开发LNMP项目时,会遇到同一台机器上有多个套php代码,如果直接用php通过curl访问其他项目时会提示超时。
经过尝试,可以用如下方式解决!
先查看nginx日志时看到如:
192.168.1.189 - - [17/Oct/2016:14:34:17 +0800] "GET /proxy/data/10002?asjdflasjkld=a12&sign=4033d03c16083e054f118a46247554653473fde0 HTTP/1.1" 499 0 "-" "-"
搜了下是nginx取消了请求,原因是请求超时,即访问php时发生了"死锁"的问题(我自己的话)。要解决此问题请参考如下配置:
假设本地hosts文件类似:
127.0.0.1 a.com
127.0.0.1 b.com
从a.com 访问 b.com
nginx配置如下,注意红字部分:
server{
listen 80;
server_name a.com;
location / {
rewrite ^(.*)$ /index.php?$1 break;
index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server{
listen 8001;
server_name b.com;
location / {
rewrite ^(.*)$ /index.php?$1 break;
index index.php;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
这样两个项目(端口80和8001)分别连接php-cgi的9000及9001端口。注意:nginx可以都设成80,但php必须分开。
原因,windows下phpcgi没有多线程!linux中cgi启动时可以配置线程数的,所以没问题。(内因不研究了,问百度)
解决思想:
1.a.com启动后连接了9000端口,b.com启动后连接9001端口,二者不会导致cgi资源被占用而产生的超时问题。
2.在php中调用curl时需要配置 CURLOPT_HTTPHEADER
$url = 'http://127.0.0.1:8001'; // b的域名 $ch = curl_init($url); curl_setopt_array( $ch, array( CURLOPT_HTTPHEADER=>array( "Host: b.com" ), // 其他参数 ) ); $ret = curl_exec($ch); // 处理结果
如此这般即可解决本地hosts映射后,curl能顺利找到相关网站的问题!
启动和停止phpcgi的cmd.zip文件请参考附件。
RunHiddenConsole这个大家可以看看,这个在用非集成环境(如phpStudy)时用于隐藏nginx的命令窗口。
相关推荐
本篇文档将详细介绍如何在`CentOS`系统上安装`PHP`、`MySQL`和`Nginx`,以及可能遇到的常见错误。 首先,安装`Nginx 0.8.15`和`PHP 5 (FastCGI)`需要确保系统中拥有必要的依赖库。对于`CentOS`系统,可以使用`yum`...
8. **日志管理**:Nginx和PHP都有自己的日志系统,分别记录访问日志和错误日志,这对于排查问题和分析网站性能非常有用。 9. **性能优化**:Nginx可以通过缓存、负载均衡、GZIP压缩等方式提高性能。而PHP5.6也有...
同时,需要安装一些必要的PHP扩展,例如php-curl、php-mysql等,以支持常见的Web开发功能。 3. **配置PHP-FPM**:在PHP安装目录下,创建`php-fpm.conf`文件,配置FastCGI监听端口和工作模式。PHP-FPM(PHP FastCGI ...
- 配置编译选项,包括Nginx模块支持:`./configure --prefix=/usr/local/php --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php/conf.d --enable-fpm --with-fpm-user=nginx --with-fpm-...
在安装和配置过程中,如果遇到错误,可以通过查看错误日志、查阅PHP官方文档或在线社区来解决问题。对于DLL文件的处理,理解Windows的系统路径和依赖关系也是很重要的。记住,安全第一,不要随意修改系统文件,以免...
自动化部署是现代IT环境中提高效率和减少错误的关键环节。在“mysql5.5+php+nginx脚本自动化部署”场景中,这个过程旨在通过脚本简化在CentOS、Ubuntu等Linux操作系统上安装和配置这些组件的过程。以下是该自动化...
`./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-jpeg-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysql --with...
在本教程中,我们将深入探讨如何在Linux环境中源码安装MySQL、MySQL主从复制、Nginx、Nginx负载均衡、Redis、PHP、phpredis以及Tomcat。这些技术是构建高效、可扩展的Web应用架构的基础。让我们逐一了解安装过程。 ...
- 使用`curl`或浏览器访问测试页面,确保Nginx能正确转发请求给PHP-FPM处理。 7. **phpcms.conf**: 这个文件可能是Nginx针对名为phpcms的网站的特定配置文件。内容可能包括对网站根目录的定义、URL重写规则、...
文章标题“PHP脚本监控Nginx 502错误并自动重启php-fpm”提出了一种解决方案,旨在通过PHP脚本监控Nginx是否产生了502错误,并在检测到此类错误时自动执行重启PHP-FPM进程池的操作。这种自动化监控和处理流程极大地...
使用`nginx -t`检查配置文件是否有错误。 6. 测试: 在/var/www/html目录下创建一个简单的PHP文件,如info.php,包含`<?php phpinfo(); ?>`。访问NanoPC-T2的IP地址,你应该能看到PHP信息页面。 至此,你已经在...
在 CentOS7 系统中,部署一个功能完备的 Web 服务通常涉及到两个关键组件:Nginx 和 PHP。本文将详细介绍如何在 CentOS7 上安装和配置 Nginx 以及 PHP,...如果遇到任何问题,检查 Nginx 和 PHP 的日志文件以排查错误。
8. **检查和调试**:使用`nginx -t`检查配置文件是否有语法错误,通过`curl localhost`或浏览器访问本地Nginx服务器,确认服务正常运行。 9. **监控和维护**:可以使用`nginx -s reload`命令重新加载配置,`nginx -...
3. **测试配置文件**:修改完配置文件后,使用命令`sudo nginx -t`测试配置文件是否有语法错误。 4. **重启Nginx**:配置无误后,通过命令`sudo systemctl restart nginx`重启Nginx服务使配置生效。 #### 三、PHP...
配置完成后,我们需要测试配置文件是否有语法错误,并尝试启动Nginx服务。 ```bash /usr/local/nginx/sbin/nginx -t /etc/init.d/nginx start netstat -lntp | grep 80 ``` 以上命令分别用于检查Nginx配置文件的...
在安装过程中,如果遇到任何错误,查阅日志文件(通常是`/var/log/nginx/error.log`)可以帮助定位问题。 在安装Nginx时,了解其工作原理、配置语法以及如何与其他服务(如PHP-FPM、MySQL等)集成也是至关重要的。...
在PHP开发过程中,有时会遇到“Fatal error: Call to undefined function curl_init()”这样的错误提示,这通常是由于PHP的cURL扩展未正确安装或配置导致的。本文将深入讲解这个问题的解决方案,以及如何配置PHP环境...