Может ли кто-нибудь предложить, почему мой скрипт Perl отображается как обычный текст:
#!/usr/bin/perl
use FindBin;
BEGIN {
lib->import($FindBin::Bin) unless $ENV{mod_perl}
}
require 'lsmb-request.pl';
Директивы My Directory следующие:
Alias /ledgersmb /opt/ledgersmb/
<Directory /opt/ledgersmb>
RewriteRule ^/ledgersmb/?$ /ledgersmb/login.pl [R]
RewriteRule rest/(.*) /ledgersmb/rest-handler.pl/$1
Options +ExecCGI +FollowSymLinks
AllowOverride All
AddHandler cgi-script .pl
Require all granted
</Directory>
Версия Apache:
[dave@Threepwood opt]# sudo apachectl -v
Server version: Apache/2.4.23 (Unix)
Server built: Jul 5 2016 07:34:37
Разрешения:
[dave@Threepwood ~]$ ls -l /opt/ledgersmb/setup.pl
-rwxr-xr-x 1 http dave 119 Aug 20 14:53 /opt/ledgersmb/setup.pl
[dave@Threepwood ~]$ ls -l /opt/ledgersmb/login.pl
-rwxr-xr-x 1 http dave 119 Aug 20 14:53 /opt/ledgersmb/login.pl
Спасибо!
Когда содержание сценария отображаются в виде обычного текста, а не выполняемого сценария, что может наблюдаться, например, когда правильный модуль для CGI поддержка не была загружена например LoadModule cgi_module modules/mod_cgi.so
.
Если вывод сценария отображается как простой текст, что является ошибкой автора сценария. Один из первые требования при написании CGI скрипта:
весь вывод вашей программы CGI должен предшествовать заголовку MIME-типа. Это HTTP-заголовок, который сообщает клиенту, какой контент он получает.
Без (правильного) заголовка MIME-типа браузеру придется угадывать, что это за контент. Браузер может по умолчанию пытаться отобразить ваш вывод как простой текст.
Убедитесь, что скрипт исполняемый:
chmod +x path-to-script.pl