Frage

Ich benutze Vagrant, um eine Ubuntu-basierte VirtualBox mit Apache2 auszuführen.

Der Webserver liefert unter anderem statische Dateien aus meinem Verzeichnis /vagrant .

Das funktioniert die meiste Zeit gut.Wenn ich jedoch ein Bild in meinem freigegebenen Ordner ändere und die Website neu lade, wird die vorherige Version des Bildes bereitgestellt, aber abgeschnitten.

Es funktioniert, wenn ich zuerst das alte Bild aus meinem freigegebenen Ordner lösche, die Website aktualisiere, damit das Bild NICHT angezeigt wird, dann die neue Datei speichere und die Website erneut lade.

Wusste jemand von diesem Problem?Ich habe nichts Besonderes installiert, nur Apache 2 mit mod_rewrite und PHP mit Mongo, APC-Plugin, MongoDB sowie NodeJS mit einer Reihe von Skripten.

War es hilfreich?

Lösung

gefunden die Antwort hier :

jc,

was Sie sehen, ist wahrscheinlich, dass der Server die statischen Dateien dient verwendet die SyScall "SendFile ()", die mit der VirtualBox-Datei defekt ist System.Sie müssen SENDFILE () ()) in Ihrem Server deaktivieren.Für Apache:

EnableDFile aus

und für nginx: abschicken;

am besten, Mitchell

Andere Tipps

Das hat mich verrückt gemacht!Danke für das Posten dieses Philipp.Für diejenigen unter Ihnen, die keine Ahnung haben, wie Sie die Konfigurationsdatei ändern sollen, hier ist, was ich getan habe:

So finden Sie die Datei: $ sudo find -name "nginx.conf"

Meins war hier: ./etc/nginx/nginx.conf

Also habe ich das ausgeführt, um es zu ändern: $ sudo nano ./etc/nginx/nginx.conf

Ändern Sie die Zeile, die enthält sendfile on; zu sendfile off;

Vergiss nicht zu exit und vagrant reload!

Dies ist ein alter Fehler in der VirtualBox (siehe: # 819 , # 9069 , # 12597 , # 14920 ) wo vboxvfs einige zu haben scheint Probleme mit dem verknachten Zugriff auf Dateien, die synchronisiert sind.

Dies kann passieren, wenn Sie die Datei außerhalb von VM bearbeiten, und Sie erwarten, dasselbe Änderung innerhalb des VMs angezeigt wird.

Um dieses Problem zu arrangieren, müssen Sie den Kernel SendFile-Support deaktivieren, um Dateien an den Client zu liefern, indem Sie EnableSendfile-Option , entweder in httpd.conf oder in vhosts-Datei, zB generasacodicetagpre.

Dies ist insbesondere Probleme für NFS- oder SMB-Dateien. Nachdem die Änderung den Apache neu lädt.

Ähnliche für Nginx (in nginx.conf), z. B. generasacodicetagpre.


Andere Problemumgehung besteht darin, sich daran zu erinnern, die Dateien auf dem Host nicht zu bearbeiten, oder versuchen, dieselbe Datei erneut zu bearbeiten, jedoch innerhalb des VM.


Eine andere Problemumgehung umfasst das Ablegen des Linux-Pagecache, z. B. generasacodicetagpre.

oder um die Caches jede Sekunde zu löschen (gemäß diesen Beitrag ), versuchen Sie es mit: generasacodicetagpre.

Hinweis: Nummer 1 steht zum Befreiung von Pagecache, 2 für Zahnbänder und Inodes, 3 für Pagecache, DENTRIES und Inodes.


Das obige Problem kann durch das folgende MMAP-Test-Programm repliziert werden, siehe: mmap-problem.c .

Ich habe ein ähnliches Problem mit der VirtualBox / Docker / Nginx-Umgebung.

Die Entscheidung mit dem Löschen des Linux-Seitencaches echo 1 > /proc/sys/vm/drop_caches funktioniert gut, sieht aber umständlich aus.

Auch die Richtlinie sendfile off; in der nginx.conf hat das Problem nicht gelöst und ich habe versucht, es mit zu verwenden expires off; richtlinie zusammen und es war erfolgreich.

Also, meine Entscheidung sieht so aus

sendfile off;
expires off;

Für jeden, der Larywavy 5, Barryvdhs Debugbar und BrowserSync über Gulp.Watch verwenden, erhalten Sie möglicherweise diesen Fehler.Ich hatte genau denselben Fehler, denn der Browser-Synchronisierung hat meine Anfrage angerufen. Wenn ich meinen Dev-Server über: http://127.0.0.1:3000/Laravel/Page Ich habe den Fehler bekommen http://127.0.0.1/Laravel/page Fehler gegangen.

Ich habe es mit unseren Freunden bei Browsersync gekennzeichnet, sie machen einen tollen Job.Es ist also eher ein Grund als eine Lösung, sondern als Stunden damit verbringen, es zu versuchen, es zu beheben, testen Sie, ob dies Ihr Problem ist, bevor Sie mehr Zeit verschwendet.

Dieses Problem ist auch ähnlich zu Die in diesem Artikel gefundenen Fehler

Dies war auch für ein seltsames Verhalten in Bezug auf CSS-Dateien in einem CENTOS / Virtualbox-Setup verantwortlich.

Sie können den Inhalt einer CSS-Datei im Ordner / Vagrant ändern, und der Browser würde einen Status von 200 (anstelle von 304) anzeigen, was bedeutet, dass er wusste, dass die Datei neu war.Der Inhalt hätte jedoch nicht geändert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top