今天有位女同学过来问怎么调她写的CGI脚本,因为种种原因, 开发机上启不了httpd服务器,跟我说里面的perl代码她都已经测试过了,没问题,但是build没出来,等不及了,问我怎么手工调试。本来觉得实在太简单,没什么好说的,但是既然有人不知道,就总结一下,万一用上了呢?
想了一下,自己的调试方法也很原始,只有三板斧
1.使用curl
CGI本来是从Java代码调用过来的,但是为了调试几个小CGI而启动笨重无比的JavaEE容器就显得有点那么不太划算,最好的办法就是用curl,完全模拟了http request。首先你要拿到完整的url,八仙过海,各显神通,不管通过什么方式,你要用curl必须知道url是什么,然后就是在命令行中用curl + url。
curl的参数很多,支持HTTP、HTTPS、FTP等协议,HTTP支持GET、POST等。到目前为止,我遇到的各种HTTP请求,用curl都能模拟,举个简单的例子
curl -k https://localhost:8002/cgi-bin/test?path=%2Fvar%2Flog\&time=1420956483378
因为httpd使能了HTTPS,所以加了参数-k,然后是url,注意有可能需要转义,特别是‘&’, 但是不一定需要URI escape。具体使用时如果碰到问题,看一下错误信息或者日志就清楚参数是否正确传入了。
2.支持使用perl命令行
如果实在没有htt