apache2 sends corrupt responses when using a cifs-share
I have a problem with a ubuntu-instance (Ubuntu 20.04.1 LTS) and apache2 (Apache/2.4.41 (Ubuntu)). One virtual-host is serving some html-files and documents from a mounted cifs-share. The cifs-share is working normally, files are correct on filesystem.
However, the apache fails to generate proper responses for every filetype which is served in binary (like images, word-documents, pdfs, ...). For example, when I download an image image.gif
the file is downloaded and saved to the client. When opening the file with a text-editor on the client it looks as followed:
grade, Keep-Alive
Last-Modified: Thu, 12 Nov 2020 10:01:47 GMT
ETag: "b6b-5b3e600040144"
Accept-Ranges: bytes
Content-Length: 2923
Keep-Alive: timeout=5, max=100
Content-Type: image/gif
GIF89av[binary-string starting...]
So a part of the response-headers are now in the downloaded file, which should never happen. I am expecting the downloaded file starting with GIF89av
and so on. Serving text-based files (like html) is not a problem and works as expected.
However, when I copy the same file into the document-root of another virtual-host on the same server which does not use the mounted cifs-share, the file is served correctly (without response-headers in it).
So I assume, that there is some problem in this combination of mounted cifs-share and apache2, which leads to that error.
I already tried various options regarding the mount of the share - but that is correct in my opinion, since the files are working directly on the filesystem without apache.
The share is mounted in /etc/fstab
as followed
//192.168.0.1/share$ /mnt/share cifs username=user,password=pass,dom=contoso.local 0 0
which is pretty much the most basic way to do it. I experienced with options like iocharset=utf8
, tried different versions (vers=1.0
or vers=3.1
) but that didn't change anything. The apache-configuration is also the basic one, shipped with ubunutu 20, nothing special added or changed there. I experienced a bit with the mime-types, but apache should be cappable of serving an image out of the box.
Additionally I started a php-webserver (php -S 192.168.0.2:8000
) for testing in that directory - that returns correct binary-files which makes me pretty sure, that the error is somewhere in apache.
What is leading to this corrupt responses from apache and how can I fix it?
Solution 1:
I am having the same issue, it seams this issue is recent, possibly related to kernel version in 20.04? I do see the issue with plain text files as well. Were you able to find a solution / workaround? (Sorry I do not have the rep to post a comment)
Edit: I was able to find a bug report here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900821 Setting EnableMMAP off in the apache config worked for me:
EnableMMAP off