С нами с 30.04.03
Сообщения: 54
Рейтинг: 4
|
Добавлено: 12/11/04 в 18:40 |
при закачке на сервер скриптов,в конец строки добавляется ^M, закачиваю в ASCII, в чем дело ?
спасибо
|
|
|
|
С нами с 29.09.00
Сообщения: 156
Рейтинг: 92
|
Добавлено: 12/11/04 в 19:01 |
это особенности редактора в котором ты делаешь скрипты он виндовый.
можешь забить не это дело, единственное не удобно потом под юниксом редактировать скрипты, а так на их работу это не влияет.
|
|
|
|
С нами с 15.10.02
Сообщения: 464
Рейтинг: 475
|
Добавлено: 12/11/04 в 19:17 |
R.Bear писал: | а так на их работу это не влияет. |
Ну не всегда.. Иногда, после установки, вываливалась 500 ошибка и их приходилось конвертировать в unix-формат.
Так что я бы посоветовал все таки конвертировать. Editplus и ряд редакторов умеет это делать, либо средствами unix-a.
|
|
|
|
С нами с 30.04.03
Сообщения: 54
Рейтинг: 4
|
Добавлено: 12/11/04 в 19:57 |
точно, скрипты не исполняются, 500
после удаления этой ^M с первой строки - все ок
|
|
|
|
С нами с 29.09.00
Сообщения: 156
Рейтинг: 92
|
Добавлено: 12/11/04 в 20:31 |
на чем скрипты писаны ?
чтобы знать во и не попасть.
|
|
|
|
С нами с 30.04.03
Сообщения: 54
Рейтинг: 4
|
Добавлено: 12/11/04 в 20:47 |
perl
|
|
|
|
старый зануда
С нами с 26.07.03
Сообщения: 3291
Рейтинг: 1361
|
Добавлено: 12/11/04 в 23:27 |
Чтобы не было такой фигни - если Perl-скрипты пишутся под виндой, нужно пользоваться только обычным штатным виндовым блокнотом(NOTEPAD.EXE) или специальными редакторами.
Я использую "Mastak Absolute Perl" - http://aperl.mastak.ru/downloads/ap09b2.exe.
В противном случае скрипт уродуется дополнительными знаками форматирования текста, что и приводит к 500-й ошибке.
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 13/11/04 в 00:16 |
А точно в ASCII трансфер-то идет? Обычно ftpшник пишет в лог все команды - что там появляется?
|
|
|
|
/dev/awm
С нами с 05.02.04
Сообщения: 2300
Рейтинг: 1127
|
Добавлено: 13/11/04 в 01:58 |
это очень похоже на то,что они всетаки не заливаются в ASCII режиме.
дело в том, что виндовые(досовские иже с ними) редакторы по стандарту сохраняют конец строки как 0x0D+0xA, в то время как юниксовые - только 0x0A. Так вот теперь внимание!.
при указании режима трансфера как ASCII в FTP в момент передачи текстового файла FTP-сервер (!) преобразует все последовательности 0x0D+0x0A в 0x0A. если этого не происходит - значит таковы настройки сервера и даже при указании в клиенте ASCII-mode это не изменить.
P.S. понаписал много, но для объяснения - хороший пример.
берем FAR. его редактором создаем текстовый файл. сохраняем в Windows-mode (Shift+F2, далее - меню). смотрим по F3, далее F2 (двоичный режим). после этого берем тот же файл и сохраняем в Unix-mode. смотрим по F3+F2 и видим разницу.
|
|
|
|
С нами с 19.12.02
Сообщения: 58
Рейтинг: 20
|
Добавлено: 13/11/04 в 10:25 |
JpS все верно расписал. Нужно передавать в ASCII формате, почти все ftp клиенты умеет это делать. Если не помогает нужно менять ftp клиент, т.к. он кривой. С серверно стороны вс е правильно.
если есть сомнения то
ftp open mysuperhost.com
ascii
и залдиваем файло, если все прошло нормально, смотри выше и меняй ftp клиента.
|
|
|
|
С нами с 30.04.03
Сообщения: 54
Рейтинг: 4
|
Добавлено: 13/11/04 в 11:07 |
клиент cuteftp,формат ascii
|
|
|
|
/dev/awm
С нами с 05.02.04
Сообщения: 2300
Рейтинг: 1127
|
Добавлено: 13/11/04 в 12:38 |
Poprobujte zakachat' file na server v ASCII-mode, i zakachat' ego obratno v BIN-mode. Esli file's odinakovie posle etogo (fc /b file1 file2), to ASCII-mode ne rabotaet.
|
|
|
|
www.romartstudio.com
С нами с 06.11.03
Сообщения: 12232
Рейтинг: 2263
|
Добавлено: 13/11/04 в 14:38 |
если есть заход шеллом попробуй выполнить команду dos2unix
или под виндой работать в юникс формате, фар это прекрасно умеет
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 13/11/04 в 14:51 |
Действительно, различия текстовых файлов юникса и вондовса такие:
Перевод строки Юникс (16-ричный): 0A (1 байт) = \n в сишных языках
Перевод строки Виндовс (16-ричный): 0D 0A (2 байт) = \r\n в сишных языках
Некоторые юниксовые интерпретаторы глючат из-за того что встречают "непонятку" в виде символа \r который им не знаком и считают его за какую-то синтаксическую ошибку.
ASCII-mode передачи файлов в ФТП заменяет все последовательности \r\n на \n. Или просто прибивает все символы \r.
Binary-mode заливает файл таким какой он есть без обработки.
Вот этой командой в файле ScriptName.pl все \r символы прибиваются и он становится полноценным юниховым скриптом
tr -d '\r' < ScriptName.pl >a; mv a ScriptName.pl
|
|
|
|
С нами с 30.04.03
Сообщения: 54
Рейтинг: 4
|
Добавлено: 13/11/04 в 16:16 |
Pentarh писал: | Действительно, различия текстовых файлов юникса и вондовса такие:
Перевод строки Юникс (16-ричный): 0A (1 байт) = \n в сишных языках
Перевод строки Виндовс (16-ричный): 0D 0A (2 байт) = \r\n в сишных языках
Некоторые юниксовые интерпретаторы глючат из-за того что встречают "непонятку" в виде символа \r который им не знаком и считают его за какую-то синтаксическую ошибку.
ASCII-mode передачи файлов в ФТП заменяет все последовательности \r\n на \n. Или просто прибивает все символы \r.
Binary-mode заливает файл таким какой он есть без обработки.
Вот этой командой в файле ScriptName.pl все \r символы прибиваются и он становится полноценным юниховым скриптом
tr -d '\r' < ScriptName.pl >a; mv a ScriptName.pl |
working !
thank you very much
+rating
|
|
|
|
С нами с 14.02.03
Сообщения: 107
Рейтинг: 89
|
Добавлено: 14/11/04 в 16:51 |
Alice писал: | при закачке на сервер скриптов,в конец строки добавляется ^M, закачиваю в ASCII, в чем дело ?
спасибо |
fdos.pl
Код: |
#!/usr/bin/perl -pi
s/\r\n$/\n/;
|
закачиваешь файлы, потом в шеле
./fdos.pl filename
хотя вариант Pentarh тоже рабочий
пользуйся тем, что удобнее ;)
|
|
|
|
С нами с 07.06.00
Сообщения: 3516
Рейтинг: 1802
|
Добавлено: 14/11/04 в 17:17 |
Вот кстати недавно колупал скрипт борды ПХПББ, так там даже специальный конвертер по этому поводу есть ( fixfiles.sh )
Код: |
#!/bin/bash
#
# Remove all those annoying ^M characters that Winblows editor's like to add
# from all files in the current directory and all subdirectories.
#
# Written by: Jonathan Haase.
#
# UPDATE: 7/31/2001: fix so that it doesn't touch things in the images directory
#
# UPDATE: 12/15/2003: Fix so that it doesn't touch any "non-text" files
#
find . > FILELIST.$$
grep -sv FILELIST FILELIST.$$ > FILELIST2.$$
grep -sv $(basename $0) FILELIST2.$$ > FILELIST.$$
grep -sv "^\.$" FILELIST.$$ > FILELIST2.$$
file -f FILELIST2.$$ |grep text | sed -e 's/^\([^\:]*\)\:.*$/\1/' > FILELIST
file -f FILELIST2.$$ |grep -sv text | sed -e 's/^\([^\:]*\)\:.*$/Not Modifying file: \1/'
rm FILELIST2.$$
rm FILELIST.$$
for i in $(cat FILELIST); do
if [ -f $i ]; then
sed -e s/
//g $i > $i.tmp
mv $i.tmp $i
fi
done
rm FILELIST
|
|
|
|
|