[英]Open filehandle not working under mod_perl ModPerl::PerlRun
我是第一次嘗試使用mod_perl。 我是新手。 我選擇了ModPerl::PerlRun
因為我不想對已有的腳本進行任何修改
我按照在Ubuntu 12.04上安裝Apache2 / Modperl中的說明進行操作
我將script.pl
上傳到/perl
,除了該腳本,腳本看起來運行良好
open(my $fh, '<:encoding(UTF-8)', 'page_template.htm') or die $!;
它不會打開文件並且死於消息
No such file or directory at /var/www/perl/script.pl
更新
請注意, ModPerl::PerlRun
的文檔中有這樣說
META:記錄一下,目前我們不將chdir()放入腳本的目錄,因為它會影響線程下的整個過程。
因此,僅在程序代碼中執行chdir
可能不可行,應使用下面的第二個選項
原版的*
您CGI程序的當前工作目錄不是您所想的。 它最有可能是根目錄/
您可以使用chdir
設置腳本的工作目錄
use File::Basename 'dirname';
chdir dirname(__FILE__);
或僅將完整路徑添加到要打開的文件的名稱中,例如
open my $fh, '<:encoding(UTF-8)', '/perl/page_template.htm' or die $!;
請注意,您不能使用FindBin
,因為您的程序是作為Apache主mod_perl進程的子例程運行的,因此$FindBin::Bin
將等於Apache可執行文件httpd
的目錄,而不是您自己的程序文件的目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.