Подтвердить что ты не робот

Я добавляю строку текста в мой CSS файл, мусор приходит через браузер

Я использую Vagrant для управления экземпляром VirtualBox Debian Wheezy с PHP 5.5 и nginx 1.4.4. Моя локальная среда - Mac OS X 10.9 с PHP 5.5 и Apache 2.2.24. У меня есть синхронизированный каталог, который указывает на мой корень документа для этого конкретного проекта.

Мой локальный компьютер имеет установку VirtualHost, которая также указывает на корень документа для этого проекта. Поэтому на самом деле у меня есть два разных URL-адреса, на которые я могу указать свой браузер, и тот же код будет выполнен. Один URL-адрес попадает на виртуальную машину, а другой URL-адрес попадает на мою локальную установку Apache.

Я смог редактировать несколько файлов PHP без проблем. Я делаю изменения локально, и они сразу отображаются как на виртуальной машине, так и на моем локальном веб-сервере. Однако, когда я пытаюсь редактировать CSS, все становится странным. Я пытаюсь добавить одну строку CSS в статический файл CSS. Что-то вроде:

.body {margin-top:50px}

Когда я делаю это изменение, виртуальная машина гаснет. Я не уверен, отправляет ли он поврежденный файл или просто добавляет кучу странных символов в конце файла CSS, но я даже не могу вставлять их здесь. Я сделал дамп Чарльза запроса на файл CSS, и ответ выглядит следующим образом:

enter image description here

Я просмотрел файл в vim через виртуальную машину. Я просмотрел файл с помощью нескольких текстовых редакторов. Для жизни я не могу найти в этом ничего плохого. Когда я загружаю тот же самый файл через локальную установку Apache, он отлично работает:

enter image description here

Обратите внимание, что объявление body появляется между button и footer, и в конце документа нет никаких странных символов.

Другое, что я заметил, это то, что в какой-то момент меня манипулируют пробелами. В рассматриваемом файле CSS используются четыре пробела для отступов, но в ответе от виртуальной машины строки имеют только два пробела. Вы не можете видеть это на снимках, потому что они отформатированы Чарльзом, но я посмотрел на необработанные данные. Это действительно странно.

Есть ли у вас какие-либо идеи о том, что вызывает манипулирование моим CSS файлом, когда он подается через комманду Vagrant/nginx против моего локального/Apache-комбо?

ИЗМЕНИТЬ

Я вставил некоторые символы в шестнадцатеричный конвертер и преобразовал все символы в вопросительные знаки. Я попробовал двоичное преобразование в десятичное целое, и все они превратились в �, который из того, что я могу найти, "используется для замены символа, значение которого неизвестно или непредставимо в unicode". Я запустил file --mime в файле, и он вернул rental-application.js: text/plain; charset=us-ascii. Итак, настройки nginx могут быть?

У меня такая же проблема с файлами JavaScript. Если я vagrant destroy и vagrant up - единственный способ найти проблему до сих пор. Это не ускоряет поиск неисправностей, когда мне приходится перезагружать виртуальную машину между сохранением файла.

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

Более странный

Если я mv rental-application.js rental-application.html и загрузите страницу в моем браузере, она отлично встречается. То же самое относится, если я изменю имя на rental-application.php. Однако, как только я изменю имя на rental-application.js или rental-application.css, мои изменения исчезнут, а символы � снова появятся в конце документа.

Еще более странно

Я могу создать файл js на VM, и он будет нормально загружаться через сервер VM nginx. Если впоследствии изменить файл, который я только что создал и перезагрузить, изменения не отображаются, а только символы мусора.

Если я mv этот файл имеет другое имя, которое заканчивается на .js, проблема символа мусора все еще сохраняется. Однако, если я тогда cat содержимое переименованного файла в новый файл с оригинальным именем, все хорошо в юниверсе.

4b9b3361

Ответ 1

Просто, если люди попадают сюда по той же проблеме, у них есть решение о том, как решить эту проблему: вам нужно отключить настройки sendfile() в настройках вашего веб-сервера.

Для Apache: EnableSendfile off

Для Nginx: sendfile off

Краткое описание: https://coderwall.com/p/ztskha

Вы можете найти больше онлайн, если вам нужна дополнительная информация.

Теперь вы можете получить пиво и наслаждаться вашим статическим файлом, который будет передан правильно, а не больше поврежденных файлов:)