OpenBSDのApacheでperlスクリプトを動かす

設定 /var/www/conf/httpd.conf

#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
    Options -Indexes
	Options FollowSymLinks ExecCGI

# To use CGI scripts:
#
AddHandler cgi-script .cgi

ExecCGI

AddHandler cgi-script .cgi
を設定する

OpenBSDApacheは/var/wwwにchrootして動作するため
perl のバイナリを/var/www以下にコピーする必要がアル

% ldd /usr/bin/perl
/usr/bin/perl:
        Start    End      Type Ref Name
        00000000 00000000 exe   1  /usr/bin/perl
        07fdd000 27ffe000 rlib  1  /usr/lib/libperl.so.10.0
        089d6000 289dd000 rlib  1  /usr/lib/libm.so.2.0
        01dda000 21dde000 rlib  1  /usr/lib/libutil.so.11.0
        0074c000 20784000 rlib  1  /usr/lib/libc.so.34.2
        02200000 02200000 rtld  1  /usr/libexec/ld.so

依存するファイルをすべてコピー

mkdir /var/www/usr/
mkdir /var/www/usr/lib
mkdir /var/www/usr/bin/
mkdir /var/www/usr/libexec/

cp -p /usr/bin/perl                /var/www/usr/bin/perl             
cp -p /usr/lib/libperl.so.10.0     /var/www/usr/lib/libperl.so.10.0  
cp -p /usr/lib/libm.so.2.0         /var/www/usr/lib/libm.so.2.0      
cp -p /usr/lib/libutil.so.11.0     /var/www/usr/lib/libutil.so.11.0  
cp -p /usr/lib/libc.so.34.2        /var/www/usr/lib/libc.so.34.2     
cp -p /usr/libexec/ld.so           /var/www/usr/libexec/ld.so        

おまけ

  • rwxr-xr-x 1 root daemon 316 Jun 7 19:07 env.cgi
% cat env.cgi
#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "\n";
print "env";
print "\n";

foreach (sort keys %ENV) {
print "$_: $ENV{$_}
\n"; } print "\n";