美好365app官方下载-beat365体育ios版下载-365bet手机客户端

Apache 教程:使用 CGI 生成动态内容

但它仍然无法正常工作! 当您尝试从 Web 访问您的 CGI 程序时,您可能会在浏览器中看到四种基本情况 您的 CGI 程序的输出 太好了!这意味着一

Apache 教程:使用 CGI 生成动态内容

但它仍然无法正常工作!

当您尝试从 Web 访问您的 CGI 程序时,您可能会在浏览器中看到四种基本情况

您的 CGI 程序的输出

太好了!这意味着一切都正常工作。如果输出正确,但浏览器没有正确处理它,请确保您在 CGI 程序中设置了正确的内容类型。

您的 CGI 程序的源代码或“POST 方法不允许”消息

这意味着您没有正确配置 Apache 以处理您的 CGI 程序。重新阅读有关 配置 Apache 的部分,并尝试找出您错过了什么。

以“禁止”开头的消息

这意味着存在权限问题。检查 Apache 错误日志 和下面有关 文件权限 的部分。

显示“内部服务器错误”的消息

如果您检查 Apache 错误日志,您可能会发现它显示“脚本标头过早结束”,可能还会伴随您的 CGI 程序生成的错误消息。在这种情况下,您将需要检查以下每个部分,以查看是什么可能阻止您的 CGI 程序发出正确的 HTTP 标头。

文件权限

请记住,服务器不是以您的身份运行的。也就是说,当服务器启动时,它以非特权用户的权限运行——通常是 nobody 或 www——因此它需要额外的权限才能执行您拥有的文件。通常,为文件提供足够的权限以便 nobody 可以执行它的方法是为每个人授予该文件的执行权限

chmod a+x first.pl

此外,如果您的程序从任何其他文件读取或写入任何其他文件,则这些文件需要具有正确的权限才能允许这样做。

路径信息和环境

当您从命令行运行程序时,您会有一些信息传递给 shell,而您无需考虑它。例如,您有一个 PATH,它告诉 shell 它可以在哪里查找您引用的文件。

当程序通过 Web 服务器作为 CGI 程序运行时,它可能没有相同的 PATH。您在 CGI 程序中调用的任何程序(例如 sendmail)都需要通过完整路径指定,以便 shell 在尝试执行您的 CGI 程序时能够找到它们。

这种情况的常见表现形式是 CGI 程序第一行中指示的脚本解释器(通常是 perl)的路径,它看起来像

#!/usr/bin/perl

确保这确实是解释器的路径。

在 Windows 上编辑 CGI 脚本时,可能会将行尾字符附加到解释器路径。确保文件以 ASCII 模式传输到服务器。如果这样做,由于无法识别的行尾字符被解释为解释器文件名的部分,可能会导致操作系统发出“找不到命令”警告。

缺少环境变量

如果您的 CGI 程序依赖于非标准 环境变量,您需要确保 Apache 传递了这些变量。

当您在环境中丢失 HTTP 标头时,请确保它们按照 RFC 2616 第 4.2 节的格式进行格式化:标头名称必须以字母开头,后面只能跟字母、数字或连字符。任何违反此规则的标头将被静默丢弃。

程序错误

大多数情况下,当 CGI 程序失败时,是因为程序本身存在问题。当您掌握了 CGI 的基本知识后,这种情况尤其如此,您不再犯上述两个错误。首先要做的是确保您的程序在通过 Web 服务器测试之前从命令行运行。例如,尝试

cd /usr/local/apache2/cgi-bin./first.pl

(不要调用 perl 解释器。shell 和 Apache 应该使用脚本第一行上的 路径信息 找到解释器。)

您首先看到程序写入的内容应该是一组 HTTP 标头,包括 Content-Type,后面跟着一个空行。如果您看到其他任何内容,Apache 将在您尝试通过服务器运行它时返回 Premature end of script headers 错误。有关更多详细信息,请参阅上面的 编写 CGI 程序。

错误日志

错误日志是您的朋友。任何出错都会在错误日志中生成消息。您应该始终首先查看那里。如果托管网站的位置不允许您访问错误日志,您可能应该将网站托管在其他地方。学会阅读错误日志,您会发现几乎所有问题都可以快速识别并快速解决。

Suexec

suexec 支持程序允许 CGI 程序在不同的用户权限下运行,具体取决于它们位于哪个虚拟主机或用户主目录中。Suexec 具有非常严格的权限检查,任何检查失败都会导致您的 CGI 程序以 Premature end of script headers 失败。

要检查您是否正在使用 suexec,请运行 apachectl -V 并检查 SUEXEC_BIN 的位置。如果 Apache 在启动时在那里找到一个 suexec 二进制文件,则 suexec 将被激活。

除非您完全了解 suexec,否则您不应该使用它。要禁用 suexec,只需删除(或重命名)由 SUEXEC_BIN 指向的 suexec 二进制文件,然后重新启动服务器。如果您在阅读了有关 suexec 的信息后,仍然希望使用它,那么运行 suexec -V 以找到 suexec 日志文件的位置,并使用该日志文件找到您违反的策略。

← 上一篇: 《王者荣耀》抢先服号申请流程详解
下一篇: 薮猫的“薮”怎么读? →

相关推荐

Meta(FB)的核心竞争力分析 根据我对公司的理解,把 Meta 的核心业务分为两块:社交网络和元宇宙。 1、社交网络 ①基本情况 Meta 的社交网络...

Meta(FB)的核心竞争力分析 根据我对公司的理解,把 Meta 的核心业务分为两块:社交网络和元宇宙。 1、社交网络 ①基本情况 Meta 的社交网络...

来源:雪球App,作者: 小贝价值投资,(https://xueqiu.com/2877235635/212717305) 根据我对公司的理解,把Meta的核心业务分为两块:社交网络和元宇宙

穿越火线:毁灭大炮为何稳坐人气榜第二?

穿越火线:毁灭大炮为何稳坐人气榜第二?

你发现没,穿越火线的毁灭大炮一直被玩家津津乐道,尽管有段时间它似乎已经退环境了。幻神狙击枪一度成为王者,其他武器都被视为弱鸡英

剪辑视频调色软件有哪些 剪辑视频软件哪个最好 剪辑视频怎么学 剪辑视频的方法和步骤 会声会影2024 会声会影视频制作教程

剪辑视频调色软件有哪些 剪辑视频软件哪个最好 剪辑视频怎么学 剪辑视频的方法和步骤 会声会影2024 会声会影视频制作教程

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自

汽车水箱多久加一次水,汽车水箱加什么水合适,汽车水箱多久加一次水加到什么位置

汽车水箱多久加一次水,汽车水箱加什么水合适,汽车水箱多久加一次水加到什么位置

汽车水箱多久加一次水,汽车水箱加什么水合适,汽车水箱多久加一次水加到什么位置汽车防冻液水壶的上刻度和下刻度是观察水箱何时需要添加

唐氏综合征“天才指挥家”舟舟四十岁了:成名又如何?

唐氏综合征“天才指挥家”舟舟四十岁了:成名又如何?

今年舟舟四十岁了。 唐氏综合征患儿,智商三十几左右、中等偏重智力障碍。 77岁的父亲胡厚培开始焦虑,舟舟今后的生活怎么办?至于“天才

蝴蝶鲤寿命一般有多长

蝴蝶鲤寿命一般有多长

蝴蝶鲤的寿命可以达到10年左右,不过它们的具体寿命会受到环境的影响。 如果饲养者可以保证它们生活的环境舒适,降低它们生病的几率,那