ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] Hint - CGI/perl script via FTP in binary mode will run ok




Привет.

Часто возникают проблемы при закачке perl-скриптов по FTP
в бинарном режиме, если скрипт имеет "кодировку Windows".
Проявлется это тем, что apache при запросе такого скрипта
отдает "Internal server error". Лечится тем, что пользователь
должен закачивать скрипт в текстовом (ASCII) режиме.

Есть более радикальный способ, который позволяется не беспокоиться
от том, в каком режиме закачивается файл.

Суть проблемы в том, что Windows и Unix имеют разные мнения
по поводу того, как должна заканчиваться строка - у Windows
конец строки "\r\n" или 0x0D 0x0A, у Unix просто "\n" или 0x0A.
Для perlа конец строки не важен, но он важен для ядра, которое
стартует скрипт.

Первая строка perl-скрипта указывает путь к интерпретатору perl
(или любому другому интерпретатору) и может содержать аргументы
запуска интерпретатора. В большинстве случаев первая строка содержит
только путь к perl.

Если скрипт имеет Windowsский конец строки (первая
строка "#!/usr/bin/perl\r\n") , при попытке запуска
скрипта ядро будет искать интерпретатор в файле "#!/usr/bin/perl\r",
поэтому нам достаточно лишь скопировать/слинковать "perl" в "perl\r".

Делается это так: perl -e '$pp = "/usr/bin/perl"; link ($pp, $pp."\r");'

После этого ваши пользователи могут не беспокоиться на счет того,
в каком режиме они закачивают скрипт. 



Sincerely your,
        Cyril A. Vechera
=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.