Ответ 1
Try sudo a2enmod cgi
Затем перезапустите apache!
Я просто устанавливаю Ubuntu 13.10, и я пытаюсь установить Apache. Но когда я пытался запустить файл perl в cgi-bin, браузер показывал только обычный текст.
Мой default.conf из Apache находится ниже:
AddHandler cgi-script .cgi .pl
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch
#Order allow,deny
Require all granted
Allow from all
</Directory>
Это мой файл perl cgi:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<title> PERL CGI</title>\n";
print "<body>";
print "hello perl-cgi!!!!!!!";
print "</body>";
print "</html>\n";
Я включил обработчик в файле mime.conf. Файл находится в /usr/lib/cgi -bin, и я запускаю его как http not file:///. Я также установил mod_perl. Я новичок в Apache. Я искал несколько часов, стараюсь бесконечные конфигурации Apache, читаю документ Apache, но все равно не могу его решить. Это потому, что код "+ ExecCGI" имеет некоторые проблемы? Я видел, как другой человек также сталкивался с подобной проблемой после обновления Ubuntu 12.04 до 13.10. Может быть, проблема Ubuntu? Пожалуйста помоги. Конфигурация Apache и разрешение Ubuntu почти сводят меня с ума.
Try sudo a2enmod cgi
Затем перезапустите apache!
Я столкнулся с этой проблемой при попытке настроить bugzilla в Ubuntu 14.04 @Ответ на андер был helful, и поэтому были ссылки @Kevin.. так что кроме включения cgi, убедитесь, что установлен perl-модуль для apache2. Вы можете сделать это:
sudo apt-get install libapache2-mod-perl2
Это автоматически включит модуль, а также перезапустит сервер Apache. Если этого не сделать вручную.
У вас недостаточно репутации, чтобы поддержать вас обоих, поэтому спасибо.
Развернув ответ из @tops.
Попробуйте sudo a2enmod cgi
, если вы уже пробовали выполнить кучу учебников, таких как Учебник Apache: динамический контент с CGI, Ubuntu HTTDP или Как установить веб-сервер Apache2 с поддержкой PHP, CGI и Perl в Ubuntu Server и по-прежнему не может понять, что им не хватает.
Затем перезапустите apache!
Что можно сделать с помощью
sudo /etc/init.d/apache2 restart
sudo apache2ctl restart
sudo service apache2 restart
< - попробуйте этот первый
Это работало для меня на Ubuntu 13.10.
Новые команды для пользователей, поступающих из дистрибутивов RedHad:
a2enmod
a2dismod
a2enconf
a2disconf
a2ensite
a2dissite
Помните, что основной файл конфигурации по умолчанию равен /etc/apache2/apache2.conf
, а отдельные компоненты конфигурации для модулей и веб-сайтов находятся в отдельных файлах.
РЕДАКТИРОВАТЬ: Расширенные сведения о том, почему люди, приходящие на эту страницу, могут испытывать трудности с включением Apache CGI в Ubuntu.
Шаги по установке Apache на Ubuntu 13.10:
Шаги для тестирования Apache на Ubuntu 13.10:
Шаги по использованию CGI-программ под Apache на Ubuntu 13.10:
Шаги для тестирования CGI-программ под Apache на Ubuntu 13.10:
Примечание. "your-host-here.com" вполне может быть "localhost", но SO не позволит мне использовать это в URL-адресе: -/
Убедитесь, что режим apgi cgi включен
sudo a2enmod cgi //will enable the cgi mode
sudo a2dismod cgi //Will disable the cgi mode
Храните все файлы в папке "cgi-bin" веб-корня
sudo mkdir /home/www/cgi-bin
Убедитесь, что разрешение файла файла .cgi в порядке
sudo chmod 755 yourFile.cgi
Попробуйте выполнить его через терминал
perl /Path_To_The_File/fileName.cgi
Убедитесь, что файл fileName.cgi содержит следующий код в верхней части файла
#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
Если все вышеперечисленные шаги работают хорошо, то
Создайте виртуальный хост в apache для вашего проекта perl
cp /etc/apache2/sites-available/000-default.conf ./your_project.conf
sudo nano /etc/apache2/sites-available/your_project.conf
Внутри вашего файла your_project.conf замените эти строки
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/cgi-bin //Define where your project is
ServerName your_project.com //URL through which you want to access
ServerAlias your_project.com
ErrorLog ${APACHE_LOG_DIR}/error.log //Error for the project will store in this file
CustomLog ${APACHE_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/" //particular directory is set aside for CGI programs
<Directory /var/www/html/cgi-bin/>
##TO consider the files as cgi which has .cgi and .pl extension
Options +ExecCGI
AddHandler cgi-script .cgi .pl
##To consider all files as cgi file (if want to use remove # from last two line add in above 2 line)
#Options ExecCGI
#SetHandler cgi-script
</Directory>
</VirtualHost>
Запустите эти команды
sudo a2ensite your_project.conf //Will enable your configuration file
sudo service apache2 restart //Restarting apache2
Добавьте свой хост
sudo nano /etc/hosts
//add this line
127.0.0.1 your_project.com
Теперь запустите файл cgi
your_project.com/cgi-bin/fileName.cgi
Я попытался воспроизвести эту проблему, и вот что я узнал: В /etc/apache 2/sites - доступно либо у вас установлено несколько сайтов, либо используется по умолчанию. В любом случае есть.... показывает путь к моему DocumentumentRoot (wherer мои .html файлы живут). Второй.... показывает путь к моим .cgi,.pl,.perl файлам:
<VirtualHost *:8080>
ServerName casey.local
**DocumentRoot /home/casey/work/htdocs/casey.local**
<Directory />
Options FollowSymlinks
AllowOverride All
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
**<Directory "/usr/lib/cgi-bin">**
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>