User Access Manager (v. 1.2.x) corrupts file downloads (UserAccessManager::getFile()), when these conditions meet:
- set_time_limit is disabled on the host
- display_errors is set to true or stderr
When set_time_limit is disabled, PHP throws a warning, and somehow it ends up in to the output buffer and inside the file being downloaded.
UAM checks if the PHP is in safe mode, but it does not check if the function exists. Perhaps it should.
Also I wonder why the set_time_limit is called inside the download loop, thus once per every buffer size. One megabyte download ends up calling it a thousand times.
The download corruption I got fixed of course by turning on the logging and turning off displaying.