我試圖讓mod_perl在我的apache安裝上工作以便使用perlhandler。通過軟件包「Apache2 :: RequestRec」找不到對象方法「***」
我第一次在我的域名的子目錄中與此虛擬主機
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName ***.fr.cr
DocumentRoot /var/www/aw
<Directory /var/www/aw/>
AllowOverride None
Order allow,deny
allow from all
</Directory>
PerlModule test2::Rules2
alias /perl2/ /usr/lib/perl5/test2/
<Location /perl2/>
Order allow,deny
allow from all
SetHandler perl-script
PerlHandler test2::Rules2
</Location>
ErrorLog ${APACHE_LOG_DIR}/aw.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/aw.access.log combined
</VirtualHost>
這裏tryied,它工作正常,當我去* .fr.cr/perl2/
但,當我嘗試directoly做給我的域的根,這個虛擬主機:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName ***.fr.cr
DocumentRoot /var/www/aw
<Directory /var/www/aw/>
AllowOverride None
Order allow,deny
allow from all
</Directory>
PerlModule aw::main
alias//usr/lib/perl5/aw/
<Location />
Order allow,deny
allow from all
SetHandler perl-script
PerlHandler aw::main
</Location>
ErrorLog ${APACHE_LOG_DIR}/aw.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/aw.access.log combined
</VirtualHost>
我得到錯誤500,以及Apache日誌有這樣一行:
Can't locate object method "content_type" via package "Apache2::RequestRec" at /usr/lib/perl5/aw/main.pm line 6.\n
爲i 2碼
一個缺少的「打印」包和一個缺少「CONTENT_TYPE」包,和第一個具有「CONTENT_TYPE」,但誤差測試奇怪的後來在代碼中。
我想我錯過了我的虛擬主機,因爲它在一種情況下工作,而不是在其他相同的代碼。
謝謝!
編輯:代碼: 不工作:
package aw::main;
use Apache2::Const qw(:common);
sub handler {
my $r = shift;
$r->content_type("text/plain");
$r->print("mod_perl rules!\n");
return OK;
}
1;
和工作:
package test2::Rules2;
use Apache2::Const qw(:common);
sub handler {
my $r = shift;
$r->content_type("text/plain");
$r->print("mod_perl rules!\n");
return OK;
}
1;
最可能的結論是,aw :: main中存在一個bug,它不在test2 :: Rules2中。 – ikegami
我複製/粘貼代碼。我會嘗試複製文件並重命名它 –
然後我是對的。對於初學者來說,你的'package'聲明是錯誤的。 – ikegami