[root@localhost html]# rpm -q centos-release
centos-release-7-9.2009.1.el7.centos.x86_64
[root@localhost html]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Dec 13 2020 00:35:05
[root@localhost html]# perl -v
This is perl 5, version 34, subversion 0 (v5.34.0) built for x86_64-linux
[root@localhost html]# cpan
cpan shell -- CPAN exploration and modules installation (v2.28)
[root@localhost html]# pwd
/var/www/html
[root@localhost html]# ls -lha
-rw-r--r--. 1 apache apache 239 Jul 26 09:54 .htaccess
-rw-r--r--. 1 apache apache 47 Jul 25 20:00 index.html
-rwxr-xr-x. 1 apache apache 97 Jul 26 11:02 perl.pl
Script runs normally on http://localhost/perl.pl
PERL script content
#!/usr/bin/perl
use strict;
use warnings;
print "Content-type: text/html\n\n";
print "Hello World!";
exit;
[root@localhost html]# pp -x -c -o a.out perl.pl
/tmp/kjzLwQRe6G syntax OK
[root@localhost html]# mv a.out xx.pl
[root@localhost html]# chown apache:apache xx.pl
[root@localhost html]# chmod 755 xx.pl
[root@localhost html]# ./perl.pl
Content-type: text/html
Hello World![root@localhost html]# ./xx.pl
Content-type: text/html
Hello World![root@localhost html]#
When I run the script via browser http://localhost/xx.pl
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
[root@localhost html]# tail -f /var/log/httpd/ssl_error_log
[Mon Jul 26 11:06:18.315481 2021] [cgi:error] [pid 18880] [client 2.57.171.41:12219] End of script output before headers: xx.pl
[Mon Jul 26 11:07:21.702880 2021] [cgi:error] [pid 18881] [client 2.57.171.41:9437] End of script output before headers: xx.pl
[Mon Jul 26 11:07:22.742897 2021] [cgi:error] [pid 18879] [client 2.57.171.41:19913] End of script output before headers: xx.pl
[Mon Jul 26 11:07:28.448565 2021] [cgi:error] [pid 18882] [client 2.57.171.41:27467] End of script output before headers: xx.pl
[Mon Jul 26 11:30:08.557949 2021] [cgi:error] [pid 18883] [client 2.57.171.41:30987] End of script output before headers: xx.pl
I was able to make this work using XAMPP 8.0.8 on Ubuntu 21.04. I first set up a virtual host (which I named
localhost2
) by editing/opt/lampp/etc/httpd.conf
to include the fileetc/extra/httpd-vhosts.conf
. Then edited the latter file to add a new virtual host. Then edited/etc/hosts
to include the added virtual host.Then enabled CGI scripts from
/opt/lampp/etc/httpd.conf
:Make sure that you load these modules:
Then set up
ScriptAlias
directory like this:Finally, enable access to the script directory by including:
Now make sure that the directory
/opt/lampp/cgi-bin
has read and search permissions for all.Then create a perl script
/opt/lampp/cgi-bin/hello.pl
:Make sure the script has read and execute permission by all:
Convert the script into a binary using
pp
(fromPAR::Packer
) :(Again make sure the script has read and execute permissions by all) Note that the binary has a
.bin
extension and that I added a.bin
handler inhttpd.conf
above.Start the LAMP web server, visit the page
http://localhost2/cgi-bin/a.bin
. The output in the browser window was