簡體   English   中英

打開文件句柄在mod_perl下不起作用ModPerl :: PerlRun

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM