Настройка интерпретатора сценариев по умолчанию в Apache в Linux - PullRequest
1 голос
/ 21 января 2009

В Windows следующий параметр реестра настраивает интерпретатор сценариев для использования Apache:

HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command=C:\Perl\bin\perl.exe

Как это делается в Linux?

Ответы [ 4 ]

4 голосов
/ 21 января 2009

Чтобы добавить больше информации к хорошему ответу @ Mohit:

Unix использует много переводчиков для многих языков. Некоторые из них называются «оболочками», но большинство - это просто еще один компьютерный язык для системы. Фактически, каждый файл написан на каком-то языке, даже если это скомпилированная сборка байт-кодов Java.

Первые несколько байтов файла являются «волшебными»: они сообщают ОС, как выполнить файл. Если первые два байта равны '#!', ОС знает, что файл нуждается в интерпретаторе. Остальная часть первой строки до новой строки затем используется как команда для выполнения. Первое «слово» (разделенная пробелами группа не-пробелов) строки интерпретируется как абсолютное имя файла для запуска, а все остальные слова передаются ему в качестве аргументов командной строки. Последний параметр - это имя файла, который вы запускаете.

Так, например, если у вас есть первая строка как

#!/bin/tclsh

в файле /home/user/aaa.tcl

ОС выполнит / bin / tclsh с /home/user/aaa.tcl в качестве аргумента командной строки:

/bin/tclsh /home/user/aaa.tcl

Для более продвинутого примера попробуйте это:

#! /bin/env perl

в / home / user / myperlscript

Выполняется следующая команда:

/bin/env perl /home/user/myperlscript

/ bin / env - это служебная программа, которая ищет свой первый аргумент с помощью переменной среды PATH, а затем выполняет найденную программу, передавая остальные аргументы программе. С помощью env вы можете использовать PATH для поиска переводчиков.

4 голосов
/ 21 января 2009

Если вы говорите об обработчиках сценариев CGI.

Он устанавливается в первой строке каждого скрипта CGI, я часто использую TCL в качестве обработчика скриптов в Apache и поэтому добавляю:

#!/bin/tclsh

Добавьте эту строку поверх вашего скрипта, например. test.cgi, и он будет выполняться оболочкой TCL всякий раз, когда его кто-то запрашивает.

Похоже, вы можете установить его как

для BASH - #! / Bin / sh

или

для PERL - #! / Usr / bin / perl

Примечание: Путь к двоичному исполняемому файлу оболочки может отличаться от описанного выше на вашей машине. Используйте следующую команду, чтобы найти его:

#which perl

Кроме того, как предложил Макс, проверьте, настроен ли Apache для разрешения сценариев CGI. Подробное описание того же здесь можно найти здесь Ссылка на учебник Apache

1 голос
/ 21 января 2009

ScriptInterpreterSource является параметром конфигурации Apache и поддерживается только в Windows. Я не очень разбираюсь в настройке Apache для Linux, но я считаю, что вам следует проверить директиву Script .

0 голосов
/ 21 января 2009

В Linux нет реестра. Кроме того, я сомневаюсь, что Perl.exe будет работать под Linux.

...