Назад | Перейти на главную страницу

Вывод простого текста сценария Apache Perl

Может ли кто-нибудь предложить, почему мой скрипт 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