2012-10-08 17 views
32

के बाहर सहेजे जाने पर योनि में जेएस और सीएसएस फाइलों को ठीक से एन्कोड नहीं किया गया है, मैं ओएसएक्स, उबंटू और विंडोज 7 पर वानर चला रहा हूं और मेजबान मशीन पर आईडीई के रूप में विम और नेटबीन्स का उपयोग कर रहा हूं। वीएम सेंटोस 6.3 और अपाचे 2.2 चला रहा है। डॉक्रूट /vagrant पर सेट है।वीएम

जब मैं एक जेएस या सीएसएस फ़ाइल संपादित करता हूं और इसे सहेजता हूं, तब ब्राउजर घूमता है और अवैध पात्रों का पता लगाता है। जब मैं ब्राउज़र में फ़ाइल को देखता हूं तो मुझे हीरा-प्रश्न चिह्न चरित्र दिखाई देता है जो आमतौर पर एन्कोडिंग समस्या को इंगित करता है। मैं वीएम के अंदर vim में फ़ाइल खोल सकता हूं और इसे :w ++enc=utf-8 से सहेज सकता हूं और फ़ाइल सामान्य रूप से लोड हो जाएगी।

मैंने मेजबान मशीन और विभिन्न होस्ट ओएस पर एकाधिक आईडीई की कोशिश की है, और केवल इसे योनिंट और घुड़सवार निर्देशिका के साथ कुछ करने के लिए इंगित कर सकता है। मेरी आईडीई समस्या नहीं है क्योंकि मैं स्थानीय रूप से फ़ाइलों को चला सकता हूं और वे काम करते हैं, या उन्हें रिमोट मशीन पर सहेजते हैं और फाइलें काम करती हैं। केवल जब मैं उन्हें /vagrant में घुड़सवार करने के लिए सहेजता हूं तो क्या मुझे कोई समस्या है।

क्या यह ओपे में अपाचे या कुछ और है जिसे मुझे काम करने के लिए बदलने की जरूरत है?

+0

पोस्ट अपने अपाचे प्रतिक्रिया हेडर –

+0

एक ही मामला है, लेकिन वेब सर्वर और हो रही एक ही मुद्दे के रूप में nginx', तो मैं nginx, 'dos2unix' भी मेरे लिए काम किया इससे संबंधित नहीं लगता कि साथ' [Vagrant/VirtualBox के – amd

+0

संभावित डुप्लिकेट/अपाचे 2 अजीब कैश व्यवहार] (http://stackoverflow.com/questions/9479117/vagrant-virtualbox-apache2-strange-cache-behaviour) – kenorb

उत्तर

49

मुझे आज सुबह यह समस्या थी। अपने httpd.conf में EnableSendfile को बंद करने के लिए सेट करें।

यदि आप अपने httpd.conf को देखते हैं तो यह कहता है "अगर आप एनएफएस-घुड़सवार फाइल सिस्टम से सेवा करते हैं तो इसे बंद करें।" http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile में यह बताता है कि "डिफ़ॉल्ट रूप से, जब किसी अनुरोध के संचालन के लिए फ़ाइल के भीतर डेटा तक पहुंच की आवश्यकता नहीं होती है - उदाहरण के लिए, एक स्थिर फ़ाइल वितरित करते समय - अपाचे फाइल को कभी भी फ़ाइल को पढ़ने के बिना फ़ाइल सामग्री वितरित करने के लिए sendfile का उपयोग करता है ओएस इसका समर्थन करता है। "

चूंकि आपके विंडोज होस्ट में एक एनटीएफएस फ़ाइल सिस्टम है, इसलिए लिनक्स अतिथि फाइल को फाइलफाइल के साथ ठीक तरह से कैश नहीं करता है और इसलिए अपाचे को फ़ाइल को स्वयं भेजने की आवश्यकता होती है। यह अपाचे से फ़ाइलों का अनुरोध करते समय मामूली मंदी का कारण बन सकता है, लेकिन यह नगण्य होना चाहिए।

+7

ओएस एक्स के साथ मेजबान के रूप में Nginx पर एक ही समस्या। फिर, nginx.conf में 'sendfile off;' सेट करना इसे ठीक करें। – watermanio

+1

मेरे लिए भी काम किया! हालांकि सुनिश्चित करें कि, यदि आप योनि का उपयोग कर रहे हैं, तो आप 'vgn reload'' हैं, इसलिए 'nginx.conf' फ़ाइल में परिवर्तन अपडेट हो जाएंगे। – tmthyjames

+0

@John_McCombs आप आज के लिए मेरे भगवान हैं :)। मेरे मामले में यह '/ etc/apache2/apache2 था।conf' – sobi3ch

5

यह इस बात पर निर्भर करता है कि आप किस सर्वर का उपयोग कर रहे हैं।

Nginx के लिए: /etc/nginx/nginx.conf में:

परिवर्तन पंक्ति sendfile off; करने के लिए sendfile on; शामिल हैं।

के लिए अपाचे: /etc/httpd/conf/httpd.conf में:

परिवर्तन निकालने टिप्पणी के लिए EnableSendfile off;

और restart अपने Nginx या अपाचे भूल नहीं है। यदि यह अभी भी काम नहीं करता है, exit और vagrant reload या ऐसा कुछ - अपने वीएम को पुनरारंभ करें।

संबंधित मुद्दे