[英]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';
關於我在做什么錯的任何想法嗎?
您可能需要類似
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.