如何将c程序转换为cgi?
how to convert c program to cgi?
我尝试 运行 一个打印 hello world 的简单 cgi 程序。
HTML:
< a href="url/cgi-bin/hello.cgi">click< /a>
c:
int main(int argc, char *argv[])
{
printf("Content-type: text/html\n\n");
printf("<html>");
printf("<head>");
printf("<title>Test</title>");
printf("</head>");
printf("<body>");
printf("<p>Hello world!</p>");
printf("</body>");
printf("</html>\n");
return 0;
}
我在终端创建cgi文件:gcc hello.c -o hello.cgi
但是当我将文件放入服务器时,出现 404 错误。
您收到 404 错误是因为您在 HTML.
中使用了相对路径(即使您尝试使用绝对路径)
你的HTML代码如下(根据评论中的link):
<a href="www.websiteamit.bugs3.com/cgi-bin/hello.cgi">click</a>
当你点击它时,浏览器认为你想去http://www.websiteamit.bugs3.com/www.websiteamit.bugs3.com/cgi-bin/hello.cgi
。当然哪个不存在,所以你得到一个 404。如果你在你的 www
前面添加 http://
,它将转到服务器上的正确路径。
但是,您的服务器未正确配置 运行 CGI 程序 - 而是将文件作为下载提供。您网站的配置严重损坏。您需要告诉网络服务器 运行 该程序作为 CGI 而不是下载它 - 通过创建 .htaccess
文件,我猜,但很难排除故障。检查 this page 如何编写一个对所有扩展名为 .cgi
的文件执行 CGI 的程序。该脚本还需要设置执行权限 - 尝试使用托管包提供的 Web SSH 控制台在脚本上设置这些权限。
我尝试 运行 一个打印 hello world 的简单 cgi 程序。
HTML:
< a href="url/cgi-bin/hello.cgi">click< /a>
c:
int main(int argc, char *argv[])
{
printf("Content-type: text/html\n\n");
printf("<html>");
printf("<head>");
printf("<title>Test</title>");
printf("</head>");
printf("<body>");
printf("<p>Hello world!</p>");
printf("</body>");
printf("</html>\n");
return 0;
}
我在终端创建cgi文件:gcc hello.c -o hello.cgi
但是当我将文件放入服务器时,出现 404 错误。
您收到 404 错误是因为您在 HTML.
中使用了相对路径(即使您尝试使用绝对路径)你的HTML代码如下(根据评论中的link):
<a href="www.websiteamit.bugs3.com/cgi-bin/hello.cgi">click</a>
当你点击它时,浏览器认为你想去http://www.websiteamit.bugs3.com/www.websiteamit.bugs3.com/cgi-bin/hello.cgi
。当然哪个不存在,所以你得到一个 404。如果你在你的 www
前面添加 http://
,它将转到服务器上的正确路径。
但是,您的服务器未正确配置 运行 CGI 程序 - 而是将文件作为下载提供。您网站的配置严重损坏。您需要告诉网络服务器 运行 该程序作为 CGI 而不是下载它 - 通过创建 .htaccess
文件,我猜,但很难排除故障。检查 this page 如何编写一个对所有扩展名为 .cgi
的文件执行 CGI 的程序。该脚本还需要设置执行权限 - 尝试使用托管包提供的 Web SSH 控制台在脚本上设置这些权限。