Файл PHP теряет форматирование после загрузки FTP

Я использую WinSCP для передачи файлов на FTP-сайт. В настоящее время у меня есть ситуация, когда один конкретный файл в папке теряет все свое форматирование при загрузке, в результате чего файл PHP больше не работает.

Все остальные файлы PHP в папке работают корректно при загрузке.

Я не могу понять, почему только один файл может быть затронут таким образом. Кто-нибудь может пролить свет на ситуацию?


person fightstarr20    schedule 27.05.2014    source источник
comment
Что вы подразумеваете под потерей форматирования? Движок PHP может анализировать ваш скрипт, находится ли весь код в одной строке без пробелов или между каждой строкой кода есть 50 разрывов строк.   -  person mituw16    schedule 27.05.2014
comment
Вы уверены? Что происходит, когда комментарии в вашем коде сливаются с допустимыми командами, создавая недействительные?   -  person fightstarr20    schedule 27.05.2014
comment
Вот почему я никогда не использую комментарии // в PHP. /* comment */ не будет проблем со всем в одной строке или в любом другом формате   -  person mituw16    schedule 27.05.2014
comment
Спасибо за подсказку, есть мысли о причине проблемы с форматированием?   -  person fightstarr20    schedule 27.05.2014
comment
Понятия не имею, что вы имеете в виду под потерей форматирования?   -  person mituw16    schedule 27.05.2014
comment
Разрывы строк исчезли, все в одной строке   -  person fightstarr20    schedule 27.05.2014
comment
Странно, может попробовать другую программу ftp, например FileZilla?   -  person mituw16    schedule 27.05.2014
comment
Измените настройки двоичного файла/ascii. Это может пролить свет (прочитайте последний фрагмент внизу). Разрывы строк обрабатываются по-разному в зависимости от режима передачи. editpadpro.com/tricklinebreak.html — просто добавить, как сказано, это не должно вызывать ваши сценарии не работают.   -  person princessjackie    schedule 27.05.2014
comment
Повторяя вопрос @ mituw16: что означает потеря форматирования? Как проверить, что файл потерял форматирование? Вы загружаете его обратно и открываете в локальном редакторе? Какой редактор? Или вы открываете его с помощью удаленного редактора? (например, vi на консоли)   -  person Martin Prikryl    schedule 28.05.2014


Ответы (2)


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

person src    schedule 27.05.2014
comment
Да, я понимаю, но мой вопрос: почему только один файл внутри папки может быть затронут? - person fightstarr20; 28.05.2014
comment
Возможно, что-то в файле активировало режим ASCII или BINARY. Может быть имя файла или содержимое файла. Возможно, он был сохранен с окончаниями строк Windows, тогда как все остальные файлы были сохранены с окончаниями строк Unix. - person src; 28.05.2014

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

Согласно ответу src, если окончания строк изменяются из-за передачи ASCII/текстового режима, результирующий преобразованный файл может восприниматься как потерявший форматирование, если он открыт в редакторе, который не поддерживает окончания целевых строк. Хотя вряд ли это объясняет, почему затронут только один файл. Хотя технически WinSCP может выбрать другой режим передачи, например, на основе размера файла или отметки времени модификации, если это настроено, я сомневаюсь, что вы это сделали. Также обратите внимание, что WinSCP по умолчанию использует двоичный режим передачи. Было бы полезно, если бы вы указали, какой режим передачи вы фактически используете с WinSCP. Окончательным источником этой информации является файл журнала сеанса WinSCP. Кроме того, совместное использование соответствующей части файла журнала также поможет в расследовании.

Другая возможность заключается в том, что затронутый исходный файл изначально был создан с другим окончанием строки (например, в другом редакторе, чем вы обычно используете). Таким образом, проблема не имеет ничего общего с режимом передачи или WinSCP. И разница, возможно, проявляется только после того, как вы откроете файлы с помощью третьего редактора на удаленной стороне, который поддерживает только один из форматов окончания строки.

Хотя в обоих этих случаях файл все равно должен работать в PHP, поскольку PHP поддерживает окончания строк как в Unix, так и в Windows. Возможно исходный файл имеет такой странный формат, что при передаче в ASCII/текстовом режиме сервер запутался и неправильно преобразовал файл. Но это всего лишь дикая догадка.

Опять же, нам нужно больше информации, чтобы помочь вам.

person Martin Prikryl    schedule 28.05.2014