| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программное обеспечение под *NIX системы > Настройка Apache |
| Автор: WolfAlone 7.12.2011, 23:25 | ||
| Доброй ночи! Сложилась примерно такая ситуация. Обратился человек, с очень странным вопросом: "почему вместо сайта белый лист"... Посмотрели вместе, действительно, белый экран. В браузер не выдаётся вообще ничего, при этом Google Chrome говорит, что на сервере произошла ошибка 500. Взяли его исходники, загрузили на другой хостинг - всё работает. Загрузили ещё на 4 хоста - всё работает. Стали выяснять, почему не работает у него... Оказалось, что закачать исходники он пытается на VPS. При этом, разница между "закачкой в другое место" и закачкой на VPS заключалась в том, что файлы передавались по протоколу SFTP, а не просто FTP. 1. Настроил логи апача - в логах пусто. Ошибок нет. 2. Включил отображение ошибок в PHP, везде, где это только было возможно - ошибок нет. 3. Я подумал, что не работает Apache... Загрузил туда файл:
всё работает! 4. Выяснил, что из себя представляет его исходник... Оказалось, исходник - это некий проект на CodeIgniter... Взяли "чистую" версию CodeIgniter, закачали на его сервер - всё прекрасно работает. 5. Загрузили его код ещё раз на другой сервер (через FTP) - всё работает отлично. 6. Загружаем к нему на сервер, через SFTP, его код ещё раз - эффект: "белый экран". При этом, загрузка оригинального кода фреймворка всё через тот же SFTP - приносит положительный результат (FTP/SFTP-клиент: FileZilla) В какой-то момент, я вспомнил, что FTP-сервер, при загрузке файлов, принимает файлы в двух режимах: "бинарный" и "текстовый". При этом, текстовые файлы, проходят некоторую перекодировку (подозреваю, что перекодируются они в какую-то однобайтовую кодировку). Открываю файлы CodeIgniter, смотрю оригинальную кодировку, редактор показывает: "ANSI". Открываю его проект, смотрю кодировку правленых файлов: "UTF-8". Подозреваю, что такой эффект возникает в следствии того, что файлы не были правильно перекодированы, так как SFTP в отличии от обычного FTP не производит подобных манипуляций (это моё умозаключение, поправьте пожалуйста, если я ошибаюсь). На такую мысль меня навёл личный опыт (однажды, я загрузил файл .htaccess, [который был написан в кодировке UTF-8] в бинарном режиме и Apache после этого "сломался"). Установить FTP-сервер, по каким-то не ведомым мне причинам - не представляется возможным. "Нужно, что бы всё работало как есть". Вопрос: подскажите пожалуйста, есть ли какой-нибудь выход из сложившейся ситуации? Возможно, есть какой-то готовый скрипт, который можно запустить (зайдя на сервер по SSH), который бы просканировал указанную директорию и привёл бы все файлы PHP к правильной кодировке? Или дело вообще не в этом? |
| Автор: bobik02 8.12.2011, 00:38 |
| По поводу перекодировки iconv . |
| Автор: WolfAlone 8.12.2011, 03:57 |
BOM в начале нет, проверил. Если меняются только коды перевода строк, может ли это привести к тому, что вместо "хотя бы чего-нибудь" мы видим "чистый лист"? То есть, в браузер не выдаётся вообще ничего. При этом, ошибок ни сам PHP, ни Apache тоже не выдаёт (логи и отображение ошибок - включены). Или... если поставить вопрос по другому: из за чего такое вообще может произойти? |
| Автор: 1000000dollars 8.12.2011, 09:40 |
| В access log апача запросы видны? Если нет - разбираемся почему запросы не доходят до сервера (резловится не правильно, файерволлы блокируют, нестандартный порт апача, nginx, ещё что-то..). Если да - то: 1) проводим HTTP сессию через telnet и смотрим что отдаёт (и отдаёт ли вообще) сервер. 2) провеяем соответствие переводов строк на сервере 3) проверяем контрольные суммы файлов (с учётом переводов строк) Результаты исследования - сюда, будем смотреть. |
| Автор: WolfAlone 8.12.2011, 14:16 |
| Благодарю всех за участие, проблема решилась! Судя по всему, дело было в исходном коде. Прогнал весь код через программу "удаления пробелов", исходник "похудел" в 1,5 раза и стал работать нормально... Потом прогнал ещё раз, для расстановки всех переводов строк, отступов и пр. - получился читабельный, рабочий код. Один только вопрос мне теперь не даёт покоя. Что же за такой престранный символ, мог залететь в исходник, что "ложился" сервер? P.S. На наличие "BOM" файлы проверял специально все, его точно нигде не было! |
| Автор: 1000000dollars 8.12.2011, 17:01 |
Вот чёрт его знает... Рад, что проблема решилась. |