2014-10-17 78 views
0

我有一個小的代碼,並試圖進入網絡。在Perl腳本中顯示圖像

#!/usr/bin/perl 

use strict; 
use warnings; 
use CGI; 

my $cgi = CGI->new(); 

print $cgi->header, 
     $cgi->start_html('Login Page'); 


print $cgi->img({ -src => "karvy.jpeg" ,align=>'LEFT' }); 

print $cgi->end_html; 

每當我瀏覽這個節目到web.The圖像不顯示那裏,得到一個錯誤

enter image description here

的httpd日誌

root]# tail -f /var/log/httpd/error_log 

[Sat Oct 18 07:54:46 2014] [error] Unrecognized character \\xFF in column 154 at /var/www/perl/karvy.jpeg line 1.\n 

回答

2

karvy.jpeg低於在cgi目錄中,所以它被解釋爲cgi腳本而不是jpeg。當login3.pl生成的網頁加載到瀏覽器時,它會嘗試從同一個目錄中獲取karvy.jpeg,因爲它是一個jpeg圖像而不是任何類型的腳本,所以web服務器很混亂

+0

似乎合理,但是當我嘗試從'Options + ExecCGI'和'SetHandler cgi-script'加載一個目錄的圖像時,我得到了一個完全不同的錯誤:'(13)Permission denied:exec of'/ var/www/html/image_test /foo.jpg'失敗'。向圖像添加執行權限會導致(8)Exec格式錯誤:'/var/www/html/image_test/foo.jpg'的失敗'失敗。這在Apache v2.2.15上,所以對於不同的版本,錯誤可能不同? – ThisSuitIsBlackNot 2014-10-17 15:28:21

+0

如果您使用的是Apache,您需要在圖像所在目錄的apache配置中設置權限,可能需要使用部分。大多數Apache配置已經有這樣的東西已經設置 – Vorsprung 2014-10-17 15:41:32

+0

這正是我所做的(使用''部分)。你當然可以用'ScriptAlias/image_test /「/ var/www/html/image_test /」'做同樣的事情,但是錯誤信息是一樣的。你是否重現了OP的錯誤? (並不是說你錯了,只是好奇你是否可以,因爲我不能這樣做,想知道圖像文件本身的差異是否會導致不同的錯誤,或者類似的問題。) – ThisSuitIsBlackNot 2014-10-17 15:51:03