Domanda

Sto usando vagabant per eseguire un virtualbox alimentato da Ubuntu con Apache2.

Il server web, tra gli altri, serve file statici dalla directory my / vagabant.

funziona bene la maggior parte del tempo.Ma quando modifico un'immagine sulla mia cartella condivisa e ricarica il sito Web, viene servita la versione precedente dell'immagine, ma è troncata.

Funziona Se eliminisco la vecchia immagine prima dalla mia cartella condivisa, aggiorna il sito Web in modo che l'immagine non venga visualizzata, quindi salvare il nuovo file e ricarica il sito Web.

Qualcuno conosceva questo problema?Non ho niente installato speciale, solo Apache 2 con Mod_rewrite e PHP con MONGO, Plugin APC, MongoDB e Nodejs con un mazzo di script.

È stato utile?

Soluzione

Trovato la risposta qui :

.

JC,

Che cosa stai vedendo è probabilmente perché il server che serve i file statici sta usando il "SendFile ()" Syscall, che è rotto con il file VirtualBox sistema.È necessario disabilitare l'utilizzo di sendfile () nel tuo server.Per Apache:

AbilitandFileFILE OFF

e per nginx: SENDFILE OFF;

Best, Mitchell

Altri suggerimenti

Questo mi ha fatto impazzire!Grazie per aver pubblicato questo Philipp. Per quelli di voi che non hanno idea di come fare modificare il file di configurazione, ecco cosa ho fatto:

Per trovare il file: $ sudo find -name "nginx.conf"

La mia era qui: ./etc/nginx/nginx.conf

Quindi ho corso questo per modificarlo: $ sudo nano ./etc/nginx/nginx.conf

Modificare la linea che contiene sendfile on; in sendfile off;

Non dimenticare di generarecodicitagcode e exit!

Questo è il vecchio bug in VirtualBox (vedi: # 819 , # 9069 , # 12597 , # 14920 ) dove VBoxVFS sembra averne un po ' Problemi con accesso mmapped a file che sono sincronizzati.

Questo può accadere quando si modifica il file fuori da VM, e ti aspetti di vedere lo stesso cambiamento all'interno della VM.

Avvolgendo questo problema, è necessario disabilitare il supporto del kernel sendfile per consegnare i file al client disabilitando Opzione EnableSendfile , sia in httpd.conf o nel file VHosts, ad esempio

<Directory "/path-to-nfs-files">
  EnableSendfile Off
</Directory>
.

Questo è particolarmente problemi per i file montati NFS o SMB. Dopo che la modifica ricarica l'Apache.

simile per Nginx (in nginx.conf), ad esempio.

sendfile off;
.


.

Altre soluzioni alternative devono ricordare di non modificare i file sull'host o provare a ri-modificare lo stesso file, ma all'interno della VM.


.

Un'altra soluzione alternativa include la caduta del PageCache Linux, ad esempio.

echo 1 > /proc/sys/vm/drop_caches
.

o per cancellare le cache ogni secondo (come da Questo post ), prova:

watch -n 1 $(sync; echo 1 > /proc/sys/vm/drop_caches)
.

Nota: Numero 1 Stand per liberare PageCache, 2 per Dentries e Inodes, 3 per PageCache, Dentries e Inodes.


.

Il problema di cui sopra può essere replicato dal seguente programma di test mmap, vedere: mmap-problem.c .

Ho un problema simile con VirtualBox / Docker / Nginx Ambiente.

La decisione con il calo di Linux PageCache echo 1 > /proc/sys/vm/drop_caches funziona bene ma sembra imbarazzante.

Anche la direttiva generacodictagcode nel sendfile off; non ha risolto il problema e ho provato a usarlo con la direttiva nginx.conf insieme e ha avuto successo.

Allora, la mia decisione sembra

sendfile off;
expires off;
.

Per chiunque utilizzi Laravel 5, Barryvdh's Debugbar e Browsersync via Gulp.Watch, è possibile ottenere questo errore.Ho avuto esattamente lo stesso errore a causa del modo in cui il browser Sync ha proxying la mia richiesta. Se ho visto il mio server Dev tramite: http://127.0.0.1:3000/laravel/page Ho ricevuto l'errore http://127.0.0.1/laravel/page Errore Andato.

L'ho contrassegnato con i nostri amici a Browsersync, fanno un lavoro fantastico.Quindi, è più una ragione che una soluzione, ma piuttosto che trascorrere ore cercando di risolverlo, prova per vedere se questo è il tuo problema prima di sprecare più tempo.

Questo problema è anche simile a Gli errori trovati in questo articolo

Questo è stato anche responsabile del comportamento strano per quanto riguarda i file CSS in una configurazione CentOS / VirtualBox.

È possibile modificare il contenuto di un file CSS nella cartella / vagabant e il browser mostrerebbe uno stato di 200 (anziché un 304), il che significa che sapeva che il file era nuovo.Ma il contenuto non sarebbe cambiato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top