[英]Catalyst application under Apache2 mod_perl won't render Mason templates
我的應用程序根目錄是該文件夾中的/ home / user / apps / learningcatalyst / CGAddressBook,我有一個/ mason文件夾,其中存儲了梅森組件。我的View位於/ lib / CGAddressBook / View中,我有一些名為login_form和地址簿的文件。
無法呈現組件“ login_form”-錯誤為“找不到初始路徑'/ login_form'的組件(組件根目錄為:'/ home / user / apps / learningcatalyst / CGAddressBook / lib / CGAddressBook / View')是錯誤我嘗試通過Apache到達站點時得到了我的apache conf文件是
PerlSwitches -I/home/user/apps/learningcatalyst/CGAddressBook/lib
PerlModule CGAddressBook
<Location /user_catalyst/>
SetHandler modperl
PerlResponseHandler CGAddressBook
</Location>
DocumentRoot /home/user/apps/learningcatalyst/CGAddressBook/root
<Location /user_catalyst/static>
SetHandler default-handler
</Location>
用戶,其組及其他均可讀取所有文件夾。 梅森文件夾(已將梅森設置為寫入其緩存)設置為按用戶,組等進行讀取,寫入和執行。 它的所有者是用戶。 我沒有重新啟動Apache,但已經更改了/ View和/ mason的文件夾所有者(並以遞歸方式)。
當運行script / cgaddressbook_server.pl -r -p3001時,該應用程序運行良好,並且我通過端口3001進入我的站點。
comp_root的路徑是指模板“組件”的路徑。 您似乎將其指向與“查看”包相同的目錄。 您實際上可能在那里擁有組件,但這並不是一個好習慣。
未指定此默認位置的默認位置應該是Catalyst項目結構中的“ root / comps”文件夾(或類似的文件夾)。 我自己的樣本之一是這樣的:
package SnakierTen::Web::View::HTML;
use Modern::Perl;
use Moose;
use MooseX::NonMoose;
extends 'Catalyst::View::Mason2';
around BUILDARGS => sub {
my ( $orig, $class, $c, @args ) = @_;
$class->config(
comp_root => $c->path_to( 'root' ),
data_dir => $c->path_to( 'data' ),
plugins => [
'TidyObjectFiles',
'HTMLFilters',
],
);
$class->$orig( $c, @args );
};
__PACKAGE__->meta->make_immutable;
no Moose;
1;
除此之外,在Catalyst核心中不建議使用Mod Perl處理程序的直接支持。
首選的方法是在自己的PSGI兼容服務器下啟動應用程序,並使用“前端” Web服務器將請求“代理”到該應用程序服務器。
在必須在mod_perl環境下運行應用程序的地方,仍然建議在PSGI處理程序下運行。 還有一些注意事項這里是文件尚未在此建造的一部分。 您可以使用那里的方法來指導您執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.