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 или что-то еще в ОС, которое мне нужно изменить, чтобы заставить это работать?
Ответы
Ответ 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
или что-то в этом роде - перезапустите вашу виртуальную машину.