With a PHP application, when encountering a 500 error on a file upload these are the first things to check:
1.) Is the directory where the uploaded file is being placed owned by www-data (Debian/Ubuntu) or apache (CentOS)? If the web server process does not have permission to copy the file from it’s temporary location to the upload directory it can cause issues.
2.) Is the file larger than the maximum size? In your php.ini (with apache this is /etc/php5/apache2/php.ini) look for upload_max_filesize
and post_max_size
and make sure they are larger than any file you expect the form to receive.
3.) It is also possible that the error is occurring after the file upload if any post-upload processing is being done. If your script is doing any processing of an excel file certain libraries or other tools may be required.
You can check for any errors in the error log. When a 500 error is returned additional details of the error should be recorded there. If you’re running Apache this can be found in /var/log/apache2/error.log