nginx的perl cgi支持修改
来源:互联网 发布:java scanner读取多行 编辑:程序博客网 时间:2024/05/16 18:39
网上关于nginx支持perl cgi的文章不少。
不过多半是方法1
即基于
的修改实现
它的特点是用到了ProcManager模块
use FCGI;
use Socket;
use FCGI::ProcManager;
还有
require 'syscall.ph';
网上还有另外一种实现方式
http://blog.haohtml.com/archives/10909
这两种方式其实大同小异,代码也可能有互相借鉴。
感觉方式2虽然长点,但是更好理解。
但是部署后发现,这种方式只支持get方式,post方式无法获得参数
排查源码发现,问题出在这里
#open $cgi_app, '-|', $req_params{SCRIPT_FILENAME}, $stdin_passthrough or print("Content-type: text/plain\r\n\r\n"); print "Error: CGI app returned no output - Executing $req_params{SCRIPT_FILENAME} failed !\n"; # addlog($logfile, "Error: CGI app returned no output - Executing $req_params{SCRIPT_FILENAME} failed !");
根据cgi post方式的定义,参数是通过stdin传递给cgi程序的,而作者这么写,实际是把参数放到了cgi程序的命令行参数,
修改为
open $cgi_app, '-|', "echo '$stdin_passthrough' | '$req_params{SCRIPT_FILENAME}'" or print("Content-type: text/plain\r\n\r\n"); print "Error: CGI app returned no output - Executing $req_params{SCRIPT_FILENAME} failed !\n"; # addlog($logfile, "Error: CGI app returned no output - Executing $req_params{SCRIPT_FILENAME} failed !");
测试通过。也可以支持中文参数
注意,'$stdin_passthrough'要加'',防止htnl参数中&的歧义.
顺便吐下槽
这些开源作者注释也不规范(方法1的转载很多人都把注释头去掉了,很不好)
#!/usr/bin/perl
#
# author Daniel Dominik Rudnicki
# thanks to: Piotr Romanczuk
# email daniel@sardzent.org
# version 0.4.3
# webpage http://www.nginx.eu/
#
# BASED @ http://wiki.codemongers.com/NginxSimpleCGI
#
#
缺少修改日期,http://www.nginx.eu/也连不上
所以也不知道那个版本更新更好。
只是这个方法用到的模块更少,也没用到ph,感觉安装起来更简单些。
- nginx的perl cgi支持修改
- Nginx fastcgi perl (pl、cgi)支持
- nginx支持CGI
- 让Nginx支持CGI
- centos7 nginx支持cgi
- 配置nginx 运行CGI(Perl-cgi)
- nginx支持perl的fastcGI功能
- perl的cgi程序
- cgi perl写的
- CentOS下Nginx支持CGI
- 在Nginx安装perl fast-cgi
- 修改nginx和php-cgi的进程数
- WEB SERVER如何支持CGI/PHP/Perl ___ 程序的核心内容(2)
- WEB SERVER如何支持CGI/PHP/Perl ___ 程序的核心内容(1)
- [转载]配置 Nginx 支持 CGI
- Linux下配置nginx支持.cgi
- 配置修改Nginx支持ThinkPHP的PATHINFO
- perl cgi
- Android中设置控件可见与不可见详解
- 目录
- Android中日期格式的處理方法
- 【Div+CSS笔记】 0x02 css入门
- Windows Hardware Certification Kit硬件驱动数字签名测试方法
- nginx的perl cgi支持修改
- hdu1257最少拦截系统
- ListView添加底部按钮的方法
- 读取列名
- Windows下编译安装OpenEXR(x86版本)
- 判断txt文件字符集
- HDFS学习随笔
- 杭电46道DP总结
- c++中栈,队列的函数操作