0

libapache2-mod-perl2 をインストールして
、perl ファイル ブラウザーをナビゲートしようとするたびに、apache を介して perl ファイルを CGI として実行し、それをプレーン テキストとして表示しました。

###Start###
#!/usr/bin/perl -w
print "Content-type: text/html\r\n\r\n";
print "Hello there";
###End###

これが仮想ホストファイルです

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/test
    ServerName  perl.dev
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/test>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /var/www/test/cgi-bin
    <Directory "/var/www/test/cgi-bin">
        AddHandler cgi-script .cgi .pl
        Options FollowSymLinks +ExecCGI
        AllowOverride none
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ターミナルを使用してスクリプトを実行しようとすると、正常に動作しますが、ブラウザーでは正しい出力が表示されません
ありがとう

4

1 に答える 1

0

「libapache2-mod-perl2」に言及しているため、mod_perl を使用しています。

mod_perl の場合、SetHandler perl-script を使用する必要があります。

私は通常の cgi と mod-perl を区別しています。これは、apache2 で mod-perl を構成する方法です。

ScriptAlias /perl-bin/ /usr/lib/perl-bin/
<Directory "/usr/lib/perl-bin">
       AllowOverride None
       Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

       SetHandler perl-script
       PerlResponseHandler ModPerl::Registry
       PerlOptions +ParseHeaders
       #Order allow,deny
       #Allow from all
       Require ip 127.0.0.1 192.168.0.0/16
</Directory>
于 2018-09-09T22:54:59.307 に答える