簡體   English   中英

為什么我的Perl CGI腳本不起作用?

[英]Why doesn't my Perl CGI script work?

我真的不知道如何運行Perl文件。 我已將.pl上傳到cgi-bin,然后將chmod加載到755。然后,當我運行文件時,我僅收到500個內部服務器錯誤。

**/cgi-bin/helloworld.pl**


#!/usr/bin/perl

print 'hello world';

關於我在做什么錯的任何想法嗎?

閱讀官方的Perl CGI常見問題解答

這將回答這個問題,以及您可能還有其他許多問題。

例如: “我的CGI腳本從命令行運行,但沒有從瀏覽器運行。(500服務器錯誤)”

希望這可以幫助!

您可能需要類似

print "Content-type: text/html\n\n";

在您的打印對帳單之前。 看看http://httpd.apache.org/docs/2.0/howto/cgi.html#troubleshoot

這將有助於您了解所使用的服務器以及服務器日志中顯示的確切錯誤消息。 我猜想,如果您使用的是Apache,則會看到類似“腳本頭過早結束”的信息。

研究使用CGI :: Carp將致命錯誤輸出到瀏覽器。 use CGI::Carp qw(fatalsToBrowser);

另外,請務必使用CGI模塊輸出任何所需的信息,例如headers / html / whatever。 打印所有內容是錯誤的方法。

編輯:您也絕對可以檢查某種錯誤日志。

也許您需要我的Perl CGI疑難解答腳本

首先,找出在該系統上執行perl的路徑,並確保shebang行正確。 提供有關系統和Web服務器的更多信息也將有助於其他人進行診斷。

然后,嘗試:

#!/path/to/perl/binary

use strict;
use warnings;

$| = 1;

use CGI qw( :default );

print header('text/plain'), "Hello World\n";

確保可以從Shell提示符下運行腳本,而無需通過Perl調用它。 換句話說,您應該能夠轉到cgi-bin目錄並鍵入:

./helloworld.pl

並獲得輸出。 如果那不起作用,請修復該問題。 在查看輸出時,第一行必須是:

Content-Type: text/html

(或text/plain或其他有效的MIME類型。)

如果不是這種情況,請修復該問題。

然后,在打印頁面正文之前,您必須有一個空行。 如果沒有空行,則您的腳本將無法用作CGI腳本。 因此,您的總輸出應如下所示:

Content-Type: text/html

hello world

如果您可以運行您的腳本,而這就是輸出,則說明發生了一些奇怪的事情。 如果Apache沒有將錯誤記錄到某個地方的error_log文件中,則可能是存在一些問題。

您是否啟用Apache將.pl文件作為CGI腳本進行服務器處理? 檢查您的Apache配置文件,或者(快速但不能保證測試)嘗試將文件擴展名更改為.cgi 另外,請確保您的shebang行( #! )位於最頂部。 最后,如果您的服務器是Linux,請檢查行尾是否為Unix。 是的,從命令行對其進行測試,並use strict; 以獲得有關潛在錯誤的更好反饋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM