免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8091 | 回复: 8
打印 上一主题 下一主题

web提交方式为post的请求在FastCGI程序里取不到环境变量 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-06 09:28 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2005-09-06 09:33 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2005-09-06 11:07 |只看该作者

web提交方式为post的请求在FastCGI程序里取不到环境变量

Can you get others environment variables,such as server name ,server port...?

论坛徽章:
0
4 [报告]
发表于 2005-09-06 11:08 |只看该作者

web提交方式为post的请求在FastCGI程序里取不到环境变量

#include呢?
用这个TINY程序试试

  1. #include “fcgi_stdio.h”
  2. #include <stdlib.h>;

  3. int count;

  4. void initialize(void)
  5. {
  6.   count=0;
  7. }

  8. int main(void)
  9. {
  10. /* Initialization. */  
  11.   initialize();

  12. /* Response loop. */
  13.   while (FCGI_Accept() >;= 0)   {
  14.     printf("Content-type: text/html\r\n"
  15.            "\r\n"
  16.            "<title>;FastCGI Hello! (C, fcgi_stdio library)</title>;"
  17.            "<h1>;FastCGI Hello! (C, fcgi_stdio library)</h1>;"
  18.            "Request number %d running on host <i>;%s</i>;\n",
  19.             ++count, getenv("SERVER_HOSTNAME"));
  20.   }
  21. }
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2005-09-06 12:03 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2005-09-06 16:01 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2008-06-03 16:49 |只看该作者
fastcgi c语言写文件上传程序时,怎样取到从客户端传过来的数据(二进制的)?
我用,        fseek(stdin,0L,SEEK_END);//定位到标准输入流的开始处
           _setmode(fileno(stdin),O_BINARY); //以二进制文式读取
       
            fread(buf,len,1,stdin);//接收上传文件的全部数据,包括MIME头

  虽然取到的contentLength长度是正确的,但是从stdin中没取到数据,谁能告诉我这是为什么?

论坛徽章:
0
8 [报告]
发表于 2013-06-18 11:26 |只看该作者
BetonArmEE 发表于 2005-09-06 16:01
我搞定了,原来是写错了一个宏名导致FCGI_Accept未运行到,郁闷啊~
谢谢大家~ ^_^

问下BetonArmEE兄台,什么宏名写错了导致FCGI_Accept未运行到啊?
我现在也遇到和你类似的问题,我用mod_fcgid作为FCGI模块,web服务器是Apache2.2.21,
以CGI方式运行的时候都很OK,所有环境变量都可以取到,以FCGI方式运行的时候很多环境变量都取不到,
特别是HTTP通讯的那些一个都取不到。

我的Apache配置如下:

LoadModule fcgid_module modules/mod_fcgid.so
<IfModule mod_fcgid.c>
    AddHandler fcgid-script .fcgi .fcg .php
    FcgidInitialEnv SERVER_NAME "localhost"  #测试用
#php.ini的存放目录
    FcgidInitialEnv PHPRC "D:/WAMP/PHP"
   
# 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
   
#php-cgi每个进程的最大请求数
    FcgidMaxRequestsPerProcess 1000
   
#php-cgi最大的进程数
    FcgidMaxProcesses 5
   
#最大执行时间
    FcgidIOTimeout                 120
    FcgidIdleTimeout         120
   
#php-cgi的路径
    FcgidWrapper "D:/WAMP/PHP/php-cgi.exe" .php
    AddType application/x-httpd-php .php
</IfModule>


我的程序用CGI方式运行的时候可以取到的环境变量如下:
HTTP_ACCEPT=text/html, application/xhtml+xml, */*
HTTP_ACCEPT_LANGUAGE=zh-CNHTTP_USER_AGENT=Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)HTTP_ACCEPT_ENCODING=gzip, deflate
HTTP_HOST=localhost:8080
HTTP_DNT=1
HTTP_CONNECTION=Keep-Alive
PATH=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;C:\Program Files (x86)\Common Files\NetSarang;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;E:\imcp\bin\\bin;E:\mysqlcluster\bin;E:\imcp\bin\\bin;E:\imcp\bin\;C:\Program Files\MySQL\MySQL Server 5.5\bin;D:\Program Files (x86)\Git\cmd;D:\Program Files (x86)\Git\bin;D:\Program Files\TortoiseGit\bin;D:\Qt\4.8.3\bin;D:\WAMP\MySQL\bin;
SystemRoot=C:\Windows
COMSPEC=C:\Windows\system32\cmd.exe
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
WINDIR=C:\Windows
SERVER_SIGNATURE=
SERVER_SOFTWARE=Apache/2.2.21 (Win32) mod_fcgid/2.3.6
SERVER_NAME=localhost
SERVER_ADDR=127.0.0.1
SERVER_PORT=8080
REMOTE_ADDR=127.0.0.1
DOCUMENT_ROOT=D:/WAMP/WWW
SERVER_ADMIN=admin@rnd.zht.com
SCRIPT_FILENAME=D:/WAMP/WWW/CGI-BIN/webint.cgi
REMOTE_PORT=13751
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.1
REQUEST_METHOD=GET
QUERY_STRING=messagetype='projectmessage'
REQUEST_URI=/cgi-bin/webint.cgi?messagetype='projectmessage'
SCRIPT_NAME=/cgi-bin/webint.cgi

但是如果用FCGI方式运行,则只有如下环境变量:
PATH=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;C:\Program Files (x86)\Common Files\NetSarang;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;E:\imcp\bin\\bin;E:\mysqlcluster\bin;E:\imcp\bin\\bin;E:\imcp\bin\;C:\Program Files\MySQL\MySQL Server 5.5\bin;D:\Program Files (x86)\Git\cmd;D:\Program Files (x86)\Git\bin;D:\Program Files\TortoiseGit\bin;D:\Qt\4.8.3\bin;D:\WAMP\MySQL\bin;
SYSTEMROOT=C:\Windows
COMSPEC=C:\Windows\system32\cmd.exePATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
WINDIR=C:\Windows
SERVER_NAME=localhost
PHPRC=D:/WAMP/PHP
PHP_FCGI_MAX_REQUESTS=1000
_FCGI_SHUTDOWN_EVENT_=832

我试了将mod_fcgid模块从2.3.6升级到2.3.7也不行,修改Apache配置httpd.conf等试过各种方法都不行,
请教下BetonArmEE兄有没有什么解决方案?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2013-07-15 19:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP