Primeiro, verifique seu /var/www/logs/error_log
que dará a sua maior pista sobre o motivo pelo qual ele não está funcionando.
Se você colocar a configuração <Directory>
no final do seu httpd.conf, o <Directory "/var/www/htdocs">
anterior irá substituí-lo. E seu error_log
será exibido:
[error] [client x.x.x.x] Options ExecCGI is off in this directory /htdocs/a/a.cgi
Certifique-se de colocá-lo acima disso para que ele tenha efeito. Você também pode ter que chmod o cgi como executável e, dependendo de qual usuário criou o diretório /var/www/htdocs/a
, defina as permissões / propriedade apropriadas.
Também é importante notar que o OpenBSD, por padrão, usa chroot
, então os comandos terão que ser colocados no chroot se você quiser fazê-los funcionar.
Supondo que você queira usar o perl como exemplo, primeiro precisará criar os diretórios necessários.
$ cd /var/www
$ mkdir -p /var/www/usr/{bin,lib,libexec}
Em seguida, precisamos descobrir o que as bibliotecas perl usam:
$ 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
e copie-os para o 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
E depois perl:
$ cp /usr/bin/perl /var/www/usr/bin
então você pode checar se seu cgi irá trabalhar com:
$ chroot /var/www/ /htdocs/a/a.cgi
Content-type: text/html
Test!