Apache в Windows выдает мне следующую ошибку при попытке получить доступ к своему Perl-скрипту:
Server error!
The server encountered an internal error and was unable to complete your request.
Error message:
End of script output before headers: sample.pl
If you think this is a server error, please contact the webmaster.
Error 500
localhost
Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
это мой пример сценария
#!"C:\xampp\perl\bin\perl.exe"print "Hello World";
но не работает в браузере
Проверьте права доступа к файлу.
У меня была точно такая же ошибка на компьютере с Linux с неправильными разрешениями.
chmod 755 myfile.pl
решил проблему.
Если это CGI-скрипт для Интернета, вы должны вывести свой заголовок:
#!"C:\xampp\perl\bin\perl.exe"
print "Content-Type: text/html\n\n";
print "Hello World";
Следующее сообщение об ошибке говорит вам об этом End of script output before headers: sample.pl
Или даже лучше, используйте CGI Модуль для вывода заголовка:
#!"C:\xampp\perl\bin\perl.exe"
use strict;
use warnings;
use CGI;
print CGI::header();
print "Hello World";
Для дальнейшего использования:
Обычно это ошибка, которая возникает, когда вы не можете просмотреть или выполнить файл, причиной которого, как правило, является ошибка прав доступа. Я бы начал, следуя предложению @Renning и запустив chmod 755 test.cgi
(очевидно замените test.cgi именем вашего cgi-скрипта здесь).
Если это не работает, есть пара других вещей, которые вы можете попробовать. Однажды я получил эту ошибку, когда создал test.cgi
как root в доме другого пользователя. Исправление там было бежать chmod user:user test.cgi
где пользователь — это имя пользователя, в котором вы находитесь.
Последнее, о чем я могу думать, — это убедиться, что ваш скрипт cgi возвращает правильные заголовки. В моем рубиновом скрипте я сделал это, поставив puts "Content-type: text/html"
прежде чем я на самом деле что-то вывел на страницу.
Удачного кодирования!
Была такая же ошибка на малине-пи. Я исправил это, добавив -w
к шебангу
#!/usr/bin/perl -w
Вероятно, это блок SELinux. Попробуй это:
# setsebool -P httpd_enable_cgi 1
# chcon -R -t httpd_sys_script_exec_t cgi-bin/your_script.cgi
При использовании Suexec убедитесь, что сценарий и его каталог принадлежат тому же пользователю, которого вы указали в suexec.
Кроме того, убедитесь, что у пользователя, выполняющего скрипт cgi, есть разрешения на выполнение файла и программы, указанной в shebang.
Например, если мой скрипт cgi начинается с
#! /usr/bin/cgirunner
Затем пользователю нужны разрешения для выполнения / usr / bin / cgirunner.
Так что для всех, кто начинает с XAMPP CGI
изменить расширение с pl на cgi
измените разрешения на 755
mv test.pl test.cgi
chmod 755 test.cgi
Это исправило и мою.
Внутренняя ошибка из-за скрытого символа в конце строки Шебанга !!
то есть строка #! / usr / bin / perl
Добавляя -
или же -w
в конце перемещает символ в сторону от «perl», позволяя найти путь к процессору perl и выполнить скрипт.
HIDDEN charactor создается редактором, использованным для создания скрипта