Не может выполнить код Perl как сценарий CGI

[
$ (echo "Some Text" ; cat file1) > file2
].
1
18.08.2016, 03:02
3 ответа

Я решил проблему: I FORGOT TO uncomment LoadModule cgi_module modules/mod_cgi.so в директиве httpd.conf.

0
27.01.2020, 23:37

Можно использовать следующую команду:

comm -12 <(find dir1 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort) <(find dir2 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort)

Используется find для вывода списка всех файлов в каждом каталоге, затем basename и подстановка параметров для удаления имен каталогов и расширений файлов. comm сравнивает два списка.

Пример:

$ tree
.
|-- dir1
|   |-- test1.txt
|   |-- test2.txt
|   `-- test3.txt
`-- dir2
    |-- test2.txt
    `-- test4.txt

$ comm -12 <(find dir1 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort) <(find dir2 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort)
test2
$ comm -23 <(find dir1 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort) <(find dir2 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort)
test1
test3
$ comm -13 <(find dir1 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort) <(find dir2 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort)
test4

comm -12 покажет все имена файлов, общие для обоих каталогов. comm -23 покажет все имена файлов, уникальные для dir1, comm -13 покажет имена файлов, уникальные для dir2.

-121--71622-
  1. Для очистки всей истории используйте

     history -c
    
  2. Для удаления одной строки используйте

     хронологический номер линии
    
-121--1877-

Вы не сообщили apache, когда использовать расширение mod _ perl .

Добавьте в конфигурационный элемент

AddHandler perl-script .pl .cgi

вместо обработчика cgi-script . Также см. Как сделать Apache обрабатывать файлы .pl (Perl), используя mod_perl?

1
27.01.2020, 23:37

Возможно, связано с Intel Errata HSW131 (или аналогично) что является ложными и безвредными ошибками MCA 05 (внутренняя ошибка четности).

Решение: Игнорировать.

-121--60160-

С помощью zsh :

diff -u <(cd dir1 && printf '%s\n' **/*(D:r)) \
        <(cd dir2 && printf '%s\n' **/*(D:r))

(D) включить точечные файлы (скрытые файлы), : r получить имя корня (удалить расширение).

Использование глоббинга гарантирует непротиворечивый порядок сортировки.

(предполагается, что имена файлов не содержат новых символов).

-121--71621-

Сначала включите уровень регистрации. Измените директиву «LogLevel» на LogLevel debug . Используйте systemctl для остановки/запуска httpd .

Пометьте исполняемый файл сценария perl с помощью chmod ugo + x независимо от

Далее измените сценарий немного. Вам нужна «пустая строка» между заголовками и телом:

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

Обратите внимание, что каждая строка в заголовках должна заканчиваться кареткой-возвратом/новой строкой.

В качестве каталога CGI-BIN используется каталог /srv/http/cgi-bin/. Поместите файл perl туда, а затем повторите запрос. Если у вас есть telnet или netcat , иногда стоит вручную ввести HTTP-запрос и посмотреть, что скажут заголовки, если/когда они вернутся.

Для получения сведений о проблеме см. /var/log/httpd/error _ регистрация .

1
27.01.2020, 23:37

Теги

Похожие вопросы