我为Windows和Linux开发了Win32 C++ cgi应用程序,并从头开始。
我将CgiCC用作lib,将Visual Studio 2010用作IDE。
我该如何调试?当我实例化我的cgicc类时,该程序将保留并等待CGI输入。
如何为CGI输入设置环境?
我设置了一些环境变量,例如QUERY_STRING。
但是我不知道如何提供在Web服务器上运行时CGI应用程序将获得的值。
编辑:
我快到了
之后,我可以像这样从输入中读取一些内容:
cgicc::Cgicc cgi;
string u = cgi("user");
但是我在执行此操作时遇到异常(从未分配的内存中读取以及类似的异常):
vector<FormFile, allocator<FormFile>> files = cgi.getFiles();
如果正确加载,总会以某种方式出现。
最佳答案
CGI应用程序通过环境变量和标准输入接收其输入,因此您可以轻松地复制Web服务器为CGI任务设置的环境。
就环境变量而言,here是CGI协议(protocol)中一部分环境变量的列表。我建议您通过捕获生产Web服务器为工作中的cgi应用程序提供的环境,手动设置或更好地设置所有这些设置。由于环境变量是由子进程继承的,因此,如果您在Windows命令提示符下的环境中进行设置,然后从同一窗口调用Visual Studio IDE,则当CGI应用程序在调试器中启动时以及在调试器中启动时,这些变量将可用。您无需调试即可运行它。
在您的情况下,由于要使用文件上传表单,因此获取标准输入替换可能会有些复杂。 This site包含一个模板,可以让您开始使用multipart / form-data格式。通过表格上传文件的官方文档是RFC 1867。
我希望这有帮助。
关于c++ - 如何调试CgiCC应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7285351/