gpt4 book ai didi

c++ - Luci 无法启动请求的 CGI 程序 :/www/cgi-bin/sample. cgi: Exec error

转载 作者:行者123 更新时间:2023-11-27 23:54:46 61 4
gpt4 key购买 nike

我试图在 uhttpd 服务器 上执行 Cgi-Cpp 程序,该服务器运行 OpenWRT 安装。 Cgi 文件是 /www/cgi-bin/sample.cgi 并且也有执行权限。我正在尝试使用 HTML 文件访问此 Cgi。这是我的 sample.cgi 文件:

#include <iostream>
#include <vector>
#include <string>
#include <stdio.h>
#include <stdlib.h>

#include <cgicc/CgiDefs.h>
#include <cgicc/Cgicc.h>
#include <cgicc/HTTPHTMLHeader.h>
#include <cgicc/HTMLClasses.h>

using namespace std;
using namespace cgicc;

int main () {
Cgicc formData;

cout << "Content-type:text/html\r\n\r\n";
cout << "<html>\n";
cout << "<head>\n";
cout << "<title>Using GET and POST Methods</title>\n";
cout << "</head>\n";
cout << "<body>\n";

form_iterator fi = formData.getElement("first_name");

if( !fi->isEmpty() && fi != (*formData).end()) {
cout << "First name: " << **fi << endl;
}else{
cout << "No text entered for first name" << endl;
}
cout << "</body>\n";
cout << "</html>\n";

return 0;
}

当我点击 HTML 中的提交按钮时出现错误:

unable to launch the requested CGI program: /www/cgi-bin/sample.cgi: Exec error

我错过了什么?所有权限都在那里设置。有什么建议吗?

最佳答案

确保您正在正确构建程序。首先打开一个终端窗口并 cd 到/www/cgi-bin。现在使用

ls -l 

列出目录中的程序。你应该在那里看到你的 sample.cpp 文件。如果它不在那里,请将它移到那里。如果您不再有 sample.cpp 文件,请使用您最初发布的代码创建一个文本文件。你可以使用像 nano 这样的文本编辑器来做到这一点。

nano sample.cpp

输入或粘贴您的源文件。然后按 ctrl-x 保存并退出程序。确保你告诉 nano 保存程序而不仅仅是退出。

接下来删除现有的 sample.cgi。不要删除 sample.cpp。

使用此命令将源代码 (sample.cpp) 构建为二进制可执行文件:

g++ sample.cpp -o sample.cgi

“-o”是字母“o”,而不是数字“0”。如果构建抛出编译错误,请修复错误并重复,直到成功构建程序。您现在将拥有一个二进制文件“sample.cgi”。

确保“sample.cgi”是可执行的。如果不是,则使用

使其可执行
sudo chmod a+x sample.cgi

确保您可以先从命令行执行 sample.cgi。如果您不能这样做,那么服务器也将无法做到。然后输入

"./sample.cgi". 

执行应用程序后,您应该会在终端窗口中看到从应用程序发送的 html。

如果您需要进一步的帮助,请告诉我们。

关于c++ - Luci 无法启动请求的 CGI 程序 :/www/cgi-bin/sample. cgi: Exec error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43344041/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com