It throws an HTTP Error message in the Media uploader, which is masking a 500 error. The full error in the log is:
[27-Sep-2016 08:07:38 UTC] PHP Notice: Array to string conversion in /home/username/public_html/wp-content/plugins/w3-total-cache/w3-total-cache-api.php on line 157
[27-Sep-2016 08:07:38 UTC] PHP Notice: Array to string conversion in /home/username/public_html/wp-content/plugins/w3-total-cache/w3-total-cache-api.php on line 157
[27-Sep-2016 08:07:38 UTC] PHP Warning: require(/home/username/public_html/wp-content/plugins/w3-total-cache/.php): failed to open stream: No such file or directory in /home/username/public_html/wp-content/plugins/w3-total-cache/w3-total-cache-api.php on line 161
[27-Sep-2016 08:07:38 UTC] PHP Fatal error: require(): Failed opening required ‘/home/username/public_html/wp-content/plugins/w3-total-cache/.php’ (include_path=’.:/opt/alt/php70/usr/share/pear’) in /home/username/public_html/wp-content/plugins/w3-total-cache/w3-total-cache-api.php on line 161
The log was clear beforehand so all of this showed up at once on one upload attempt. Deactivation of the plugin throws this:
[27-Sep-2016 08:10:41 UTC] PHP Notice: Trying to get property of non-object in /home/username/public_html/wp-includes/option.php on line 1091
[27-Sep-2016 08:10:41 UTC] PHP Fatal error: Uncaught Error: Call to undefined function wp_cache_get() in /home/username/public_html/wp-includes/option.php:1117
You then have to manually remove the plugin and the three files it puts in wp-content (you can leave the config directory since it has the configuration settings). After this, you can get back into the admin and reinstall the plugin. No more errors.