When serving files over PHP often people end up using an incorrect implementation which is open to attacks or has really bad performance (especially with big files). Well you shouldn’t reinvent the wheel every time! When you are using Apache in the first place, why do you need to re-implement the feature, that Apache is best at?
To avoid having to deal with complicated RFCs for HTTP Ranges and Caching use the Apache Module called xsendfile. Some apt magic and you are up an running:
apt-get install libapache2-mod-xsendfile service apache2 restart
Then add this to your vhost configuration:
XSendFile on XSendFilePath /var/atis/Storage
All set! To send a file via. PHP simply do this:
header('X-Sendfile: ' . $file); header('Content-Type: ' . contentType($file)); header('Content-Disposition: inline;');
(Make sure you have a function to determine the contenttype of your file)