关于php-fpm通讯时没有REQUEST_METHOD的问题
nginx是通过fastcgi协议来和php通讯的!而php-fpm就扮演了这样的角色
fastcgi协议 中文版http://blog.chinaunix.net/uid-380521-id-2412484.html
英文版 http://www.fastcgi.com/drupal/node/6
fastcgi通讯的顺序
大概是这样
{FCGI_BEGIN_REQUEST, 1, {FCGI_RESPONDER, 0}}
{FCGI_PARAMS, 1, "\013\002SERVER_PORT80\013\016SERVER_ADDR199.170.183.42 ... "}
{FCGI_PARAMS, 1, ""}
{FCGI_STDIN, 1, ""}
{FCGI_STDOUT, 1, "Content-type: text/html\r\n\r\n<html>\n<head> ... "}
{FCGI_STDOUT, 1, ""}
{FCGI_END_REQUEST, 1, {0, FCGI_REQUEST_COMPLETE}}
factcgi传输数据是的一些标志
#define FCGI_BEGIN_REQUEST 1 //开始开传输
#define FCGI_ABORT_REQUEST 2 //中断传输
#define FCGI_END_REQUEST 3 //结束输出
#define FCGI_PARAMS 4 //输出环境变量
#define FCGI_STDIN 5 //输入
#define FCGI_STDOUT 6 //接受数据 fastcgi 返回的数据
#define FCGI_STDERR 7 //接受到错误 fastcgi返回的信息x
今天写了一个dome 是通过fastcgi协议来和php通讯!,
如果在FCGI_PARAMS值传入下面参数,出现了一个很奇怪的问题
char name[] = "SCRIPT_FILENAME"; //让具体脚本执行
char value[] = "/var/www/f.php";
/var/www/f.php的代码
<?php
echo "Hollo World!\n";
file_put_contents("/tmp/php/test.log", "test\n" ,FILE_APPEND);
结果:test.log 没有写入数据,但是返回如下数据
read: Success
X-Powered-By: PHP/5.3.9
Content-type: text/html
read: Success
查看php-fpm的请求日志
127.0.0.1 - 05/Apr/2014:23:33:08 +0800 - - 200 /var/www/f.php
状态是200,说明成功。 但是前面有两个 - -
这个两个的位置是我在php-fpm.conf 加入的 %{REQUEST_METHOD}e、%{SERVER_PROTOCOL}e 这个两个环境变量
REQUEST_METHOD用来表示请发的方法,SERVER_PROTOCOL用来表示请求的协议
一个很奇怪的问题出现了
http状态是200,但是php文件根本没有执行
在传递FCGI_PARAMS时,加入了下面2对参数就正常了
name = "REQUEST_METHOD";
value = "GET"; name = "SERVER_PROTOCOL";
value = "HTTP/1.1";
加入REQUEST_METHOD、SERVER_PROTOCOL之后的
//fastcgi的返回信息
X-Powered-By: PHP/5.3.9
Content-type: text/html Hollo World! //php-fpm的log
127.0.0.1 - 05/Apr/2014:23:35:08 +0800 GET HTTP/1.1 200 /var/www/f.php
//test。log也出现了test
但是无法解释,在web server 传递给factcgi数据时
其FCGI_PARAMS项里面如果REQUEST_METHOD。
则php-fpm为啥不执行SCRIPT_FILENAME文件,但是日志记录是状态为什么会是200并返回如下的数据呢
X-Powered-By: PHP/5.3.9
Content-type: text/html
关于php-fpm通讯时没有REQUEST_METHOD的问题的更多相关文章
- android与服务端通讯时使用到的GZIP压缩及解压
为了减小android项目与服务端进行通讯时的数据流量,我们可以使用GZIP对服务端传输的数据进行压缩,在android客户端解压.或在客户端压缩,在服务端解压.代码如下: android客户端的GZ ...
- 《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。附小文:招.NET开发,结果他转JAVA了,一切都是为了生活
参考文章: 1.SuperIO通讯框架介绍,含通信本质 2.C#跨平台物联网通讯框架ServerSuperIO(SSIO) 一.感慨 上大学的时候,没有学过C#,花了5块钱在地坛书市买了一本教程,也就 ...
- 【开源】C#跨平台物联网通讯框架ServerSuperIO(SSIO)
[连载]<C#通讯(串口和网络)框架的设计与实现>-1.通讯框架介绍 [连载]<C#通讯(串口和网络)框架的设计与实现>-2.框架的总体设计 目 录 C#跨平台物联 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 7.自控通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 8.单例通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 开源跨平台IOT通讯框架ServerSuperIO,集成到NuGet程序包管理器,以及Demo使用说明
物联网涉及到各种设备.各种传感器.各种数据源.各种协议,并且很难统一,那么就要有一个结构性的框架解决这些问题.SSIO就是根据时代发展的阶段和现实实际情况的结合产物. 各种数据信息,如下图 ...
- 【重大更新】开源跨平台物联网通讯框架ServerSuperIO 2.0(SSIO)下载
更新具体细节参见:[更新设计]跨平台物联网通讯框架ServerSuperIO 2.0 ,功能.BUG.细节说明,以及升级思考过程! 声明:公司在建设工业大数据平台,SSIO正好能派上用场,所以抓紧时间 ...
- [更新设计]跨平台物联网通讯框架ServerSuperIO 2.0 ,功能、BUG、细节说明,以及升级思考过程!
注:ServerSuperIO 2.0 还没有提交到开源社区,在内部测试!!! 1. ServerSuperIO(SSIO)说明 SSIO是基于早期工业现场300波特率通讯传输应用场景发展.演化而来. ...
随机推荐
- bzoj2325 [ZJOI2011]道馆之战
Description 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中的每一个冰块都只能经过一次.当一个冰地上的所有冰块都被经过之后,到下一个 ...
- cf493D Vasya and Chess
D. Vasya and Chess time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- HDU4893--Wow! Such Sequence! (线段树 延迟标记)
Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- Dynamic Binding & Static Binding
Reference: JavaPoint BeginnerBook What is Binding Connecting a method call to the method body is kno ...
- Jsensation | 氪加
Jsensation | 氪加 www.jsensation.com
- ZooKeeper编程指导
简介 对于想要利用ZooKeeper的协调服务来创建一个分布式应用的开发人员来说,这篇文章提供了指导.包含了一些概念和实际性操作的信息. 这篇文章的前四个章节介绍了各种ZooKeeper的概念,这对理 ...
- DL,DT,DD,比传统table更语义,解析更快的table列表方式
使用dl,dt,dd替代传统的table布局 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...
- Java中判断集合类为空的方法
*****需要引入Spring的核心Jar包***** 工具类: org.springframework.util.CollectionUtils 方法: public static boolean ...
- Fedora24安装常用软件方法
# 添加chrome源 cd /etc/yum.repos.d/ # 下载google-chrome.repo并保存# wget http://repo.fdzh.org/chrome/google ...
- CSS background 属性 总结
CSS background 属性总结