ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


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


  ПРОГРАММЫ 



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












     АРХИВ :: Inet-Admins
Inet-Admins mailing list archive (inet-admins@info.east.ru)

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

[inet-admins] 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
=============================================================================
"inet-admins" Internet access mailing list. Maintained by East Connection ISP.
Mail "unsubscribe inet-admins" to Majordomo@info.east.ru if you want to quit.
Archive is accessible on http://info.east.ru/rus/inetadm.html



 




Copyright © Lexa Software, 1996-2009.