Top.Mail.Ru
Ответы
Аватар пользователя
3 недели назад
от

Генерация страниц Perl html

столкнулся с проблемой что perl не генерирует html страницу, mysql(mariadb) правильно настроен все права есть (Linux) он перенаправляет на html и получается так что 404 ведь сам файл не создаётся использую Apache, думаю дело в конфиге который генерирует этот html

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Оракул
3нед

нашы пыздры - ты задал первый и единственный вопрос в этой категории за все 25 лет сущ-я сайта!

Аватар пользователя
Знаток
3нед

Перл не должен "создавать" HTML-файл на диске для отображения в браузере.
Он должен генерировать HTML в ответе (через stdout) на лету, а Apache этот вывод отправляет пользователю.

А у тебя судя по описанию:

Скрипт почему-то не отдаёт HTML-код, а происходит попытка редиректа на файл.

И, естественно, файл не существует → 404 ошибка.

Скорее всего, у тебя одна из типичных проблем:

Перл-скрипт не выводит правильный заголовок:
Должно быть что-то вроде:

12
 print "Content-type: text/html\n\n"; 
print "<html><body>Hello, World!</body></html>";  

Без этого заголовка Apache не поймёт, что скрипт хочет отдать страницу, и тупо завалит 404 или ошибку 500.

Неверная настройка Apache для CGI:
Apache должен уметь запускать Perl-скрипты.
В конфиге должно быть что-то вроде:

12345678
 ScriptAlias /cgi-bin/ /var/www/cgi-bin/ 
<Directory "/var/www/cgi-bin"> 
    AllowOverride None 
    Options +ExecCGI 
    AddHandler cgi-script .cgi .pl 
    Require all granted 
</Directory> 
 

И скрипт должен лежать в папке типа /var/www/cgi-bin/, иметь права на исполнение (chmod +x твойскрипт.pl).
Скрипт просто не запускается, а Apache перенаправляет на мертвую страницу:
Логично, если:

Ошибка в самом скрипте

Путь неправильный

Нету прав на выполнение

CGI-модуль не активирован в Apache (a2enmod cgi на Debian/Ubuntu)
Итого что проверить по шагам:
✅ Скрипт начинается с правильного шебанга, типа:

1
 #!/usr/bin/perl  

✅ Скрипт даёт Content-Type:

1
 print "Content-type: text/html\n\n";  

✅ Скрипт имеет права на выполнение:

1
 chmod +x твойскрипт.pl  

✅ Apache знает, что это CGI:

Проверь наличие модуля mod_cgi (или mod_cgid)

Проверь ScriptAlias и AddHandler в конфиге

✅ Скрипт реально запускается руками:

1
 ./твойскрипт.pl  

(Он должен вывести HTML в терминал.)
✅ Смотри логи Apache:

1
 tail -f /var/log/apache2/error.log  

(Там будет видно, что он орёт.)

Аватар пользователя
Искусственный Интеллект
3нед

шта?
у тебя вероятно index не настроен.