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";
, но не работает в браузере
Итак, для всех, начинающих с XAMPP cgi
, измените расширение с pl на cgi, измените разрешения на 755
mv test.pl test.cgi
chmod 755 test.cgi
. Он также исправил мою.
Если это скрипт 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";
При использовании Suexec убедитесь, что скрипт и его каталог принадлежат тому же пользователю, который вы указали в suexec.
Кроме того, убедитесь, что пользователь, выполняющий скрипт cgi, имеет разрешения для выполнения разрешений для файла и программы, указанной в shebang.
Например, если мой скрипт cgi начинается с
#! /usr/bin/cgirunner
Тогда пользователю нужны разрешения для выполнения /usr/bin/cgirunner.
Внутренняя ошибка вызвана символом HIDDEN в конце строки shebang !! т.е. строка #! / usr / bin / perl
Добавив - или -w в конец, перемещайте символ от «perl», позволяя найти путь к процессору perl и выполнить скрипт ,
HIDDEN charatoror создается редактором, используемым для создания скрипта
Вероятно, это блок SELinux. Попробуйте следующее:
# setsebool -P httpd_enable_cgi 1
# chcon -R -t httpd_sys_script_exec_t cgi-bin/your_script.cgi
Основываясь на предложениях от всех, я использовал xampp для запуска скриптов cgi. В Windows 8 он работал без каких-либо изменений, но Cent7.0 выбрасывал такие ошибки, как указано выше
AH01215: (2) Нет такого файла или каталога: exec из '/ opt / lampp / cgi- bin / pbsa_config.cgi ': /opt/lampp/cgi-bin/pbsa_config.cgi, referer: http: // & lt;> /MCB_HTML/TestBed.html [Wed Aug 30 09: 11: 03.796584 2017] [cgi: error] [pid 32051] [клиент XX: 60624] Конец вывода сценария перед заголовками: pbsa_config.cgi, referer: http: //xx/MCB_HTML/TestBed.htmlПопробуйте:
Отключено selinux
Учитывая полные разрешения для скрипта, но 755 будет в порядке
Я окончательно добавил как -w, как показано ниже
#!/usr/bin/perl -w*
use CGI ':standard';
{
print header(),
...
end_html();
}
**-w** indictes enable all warnings.It started working, No idea why -w here.
Проверить права доступа к файлам.
У меня была точно такая же ошибка на машине Linux с установленными неправильными разрешениями.
chmod 755 myfile.pl
решил проблему .
Была такая же ошибка на малине-пи. Я исправил это, добавив -w к shebang
#!/usr/bin/perl -w
Для справок в будущем:
Обычно это ошибка, возникающая, когда вы не можете просмотреть или выполнить файл, причиной которого является, как правило, ошибка разрешений. Я начну с предложения @Renning и запуска chmod 755 test.cgi (очевидно, замените test.cgi на имя вашего скрипта cgi здесь).
Если это не работает, есть еще пара вещей можешь попробовать. Однажды я получил эту ошибку, когда создал test.cgi как root в доме другого пользователя. Исправлено: chmod user:user test.cgi, где пользователь - это имя пользователя, у которого вы находитесь.
Последнее, что я могу придумать, это убедиться, что ваш скрипт cgi возвращает правильные заголовки , В моем ruby-скрипте я сделал это, поставив puts "Content-type: text/html", прежде чем я на самом деле вывел что-либо на страницу.
Счастливое кодирование!