2010-12-06 79 views
0

響應我只是有一個過濾器在httpd.conf我的位置標籤:錯誤的產生從PerlInputFilterHandler

<Location /testproj/A> 
SetHandler modperl 
PerlInputFilterHandler MyApache2::Test 
</Location> 

測試是PerlInputFilterHandler。

如果我按照這個過濾器代碼:

package MyApache2::Test10; 

use strict; 
use Apache2::Const qw(OK); 
use Apache2::Filter(); 
use Apache2::RequestRec(); 
use Apache2::RequestIO(); 

sub handler { 
my $f = shift; 

#my $buf = ''; 
#while($f->read(my $tempbuf, 1024)) { 
# $buf = $tempbuf; 
#} 

my $r = $f->r; 
$r->content_type("text/html\n\n"); 
$r->print("welcome!!!"); 

return OK; 
} 
1; 

它產生的反應 - 換句話說,它發出「歡迎光臨!」瀏覽器。

但是如果我下面的代碼(允許註釋代碼):

package MyApache2::Test10; 

use strict; 
use Apache2::Const qw(OK); 
use Apache2::Filter(); 
use Apache2::RequestRec(); 
use Apache2::RequestIO(); 

sub handler { 
my $f = shift; 

my $buf = ''; 
while($f->read(my $tempbuf, 1024)) { 
    $buf = $tempbuf; 
} 

my $r = $f->r; 
$r->content_type("text/html\n\n"); 
$r->print("welcome!!!"); 

return OK; 
} 

1; 

這是行不通的。 「歡迎!!!」不會去瀏覽器 - '404'。

你能在這裏提出一些建議嗎?

非常感謝!

+0

難道你在位置節有PerlInputFilterHandler MyApache2 :: Test,但你的包實際上是包MyApache2 :: Test10; ? – 2011-06-22 13:25:56

回答

0

您正在從代碼中省略use warnings; - 將它放入並且您將在錯誤日誌中獲得有關失敗代碼的更多信息。很明顯,有關讀取輸入緩衝區的內容不起作用。

+0

即使我替換使用嚴格;使用警告;我得到相同的日誌,所以它沒有幫助。不管怎麼說,還是要謝謝你! – 2010-12-07 11:05:15