Прежде всего проверьте Ваш /var/www/logs/error_log
это даст Ваш самый большой ключ к разгадке относительно того, почему он потенциально не работает.
Если Вы помещаете Ваш <Directory>
установка в конце httpd.conf ранее <Directory "/var/www/htdocs">
переопределит его. И Ваш error_log
покажет:
[error] [client x.x.x.x] Options ExecCGI is off in this directory /htdocs/a/a.cgi
Удостоверьтесь, что Вы помещаете его выше этого, чтобы заставить его вступить в силу. У Вас может также быть к chmod cgi как исполняемый файл, и в зависимости от который пользователь, созданный /var/www/htdocs/a
каталог установил соответствующие полномочия/владение.
Также стоит отметить что OpenBSD использованием по умолчанию chroot
, таким образом, команды должны будут быть помещены в chroot, если Вы хотите заставить их работать.
Принятие Вас хочет использовать жемчуг в качестве примера, сначала необходимо будет сделать каталоги требуемыми.
$ cd /var/www
$ mkdir -p /var/www/usr/{bin,lib,libexec}
Затем мы должны разработать то, что использует жемчуг библиотек:
$ ldd /usr/bin/perl
/usr/bin/perl:
Start End Type Open Ref GrpRef Name
1c000000 3c004000 exe 1 0 0 /usr/bin/perl
07f3f000 27f58000 rlib 0 1 0 /usr/lib/libperl.so.12.0
0d61c000 2d625000 rlib 0 1 0 /usr/lib/libm.so.7.1
0fb24000 2fb28000 rlib 0 1 0 /usr/lib/libutil.so.11.4
01b37000 21b65000 rlib 0 1 0 /usr/lib/libc.so.66.2
0b671000 0b671000 rtld 0 1 0 /usr/libexec/ld.so
и скопируйте их в chroot:
$ cp /usr/lib/{libperl.so.12.0,libm.so.7.1,libutil.so.11.4,libc.so.66.2} /var/www/usr/lib
$ cp /usr/libexec/ld.so /var/www/usr/libexec
И затем сам жемчуг:
$ cp /usr/bin/perl /var/www/usr/bin
затем можно проверить, что cgi будет работать с:
$ chroot /var/www/ /htdocs/a/a.cgi
Content-type: text/html
Test!