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

JS и CSS файлы в бродягах, которые не были правильно закодированы при сохранении вне виртуальной машины

Я запускаю vagrant на OSX, Ubuntu и Windows 7 и использую vim и Netbeans в качестве IDE на главной машине. В VM работает CentOS 6.3 и Apache 2.2. Доккорн установлен на /vagrant.

Когда я редактирую файл JS или CSS и сохраняю его, браузер затем поворачивается и обнаруживает незаконные символы. Когда я просматриваю файл в браузере, я вижу символ метки с вопросительным знаком, который обычно указывает на проблему с кодировкой. Я могу открыть файл в vim внутри виртуальной машины и сохранить его с помощью :w ++enc=utf-8, и файл будет загружаться нормально.

Я пробовал несколько IDE на хост-машине и разных хост-системах, и могу только указать ее на что-то делать с бродягой и смонтированным каталогом. Мои IDE не являются проблемой, так как я могу запускать файлы локально, и они работают, или сохранять их на удаленном компьютере, а файлы работают. Только когда я сохраняю их в том, что устанавливается в /vagrant, у меня есть проблема.

Является ли это Apache или что-то еще в ОС, которое мне нужно изменить, чтобы заставить это работать?

4b9b3361

Ответ 1

У меня была эта проблема сегодня утром. Установите EnableSendfile в свой httpd.conf.

Если вы посмотрите на свой httpd.conf, он говорит: "Отключите это, если вы используете файловые системы, смонтированные NFS". В http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile объясняется, что" По умолчанию, когда обработка запроса не требует доступа к данным в файле - например, при доставке статического файла - Apache использует sendfile для доставки содержимого файла, не читая его, если ОС поддерживает его.

Поскольку ваш Windows-хост имеет файловую систему ntfs, гость linux неправильно кэширует файл с помощью sendfile, и поэтому apache должен отправить сам файл. Это может привести к незначительному замедлению при запросе файлов из apache, но это должно быть незначительным.

Ответ 2

Это зависит от того, какой сервер вы используете.

Для Nginx: в /etc/nginx/nginx.conf:

измените строку, содержащую sendfile on; на sendfile off;.

Для Apache: in /etc/httpd/conf/httpd.conf:

изменить удалить комментарий для EnableSendfile off;

И не забудьте restart ваш Nginx или Apache. Если он все еще не работает, exit и vagrant reload или что-то в этом роде - перезапустите вашу виртуальную машину.