PHP Script Throws Server 500 Error
Here are some possibilities as to why you are getting 500 errors with PHP scripts.
When a PHP script requires to write access to a file or directory (like Nucleus does for the 'media'-directory if you want to be able to upload pictures etc.), you have to chmod that directory (or file) to 777 (or 666 for files) on most servers. This gives world write access to this folder (file). This is because most server's apache (and PHP) run as user 'nobody.' Although giving world write access will make it possible to use the script, it also means a security hole, which can be used by hackers and other riff-raff.
To avoid this security hole, we run phpsuexec on our servers. Using the phpsuexec command, the PHP runs under your own username on the server. This removes the necessity to make files and folders world-writable. Instead, you can just use 755 for folders (the default) and 644 for files (also the default).
Using phpsuexec may have some consequences. Specific statements in your .htaccess file may result in an error 500 (internal server error). So here are two possible problems and how to solve them:
When you are using files with (or without) an extension different than the normal extension for that filetype you can use
ForceType in your .htaccess file to make it clear to the server how to handle that file (or all the files in the folder) (this works on servers without phpsuexec).
An example: When you have a file called 'item' (like Nucleus uses for FancyURL's) and want it to be parsed by the server as PHP, you use the following code in your .htaccess file.
However, because our servers use phpsuexec, this will result in an internal server error. To solve this, you can simply use
SetHandler instead of
ForceType, so your .htaccess-file becomes:
php_valueOn a server without phpsuexec, it is possible to use the
php_valuestatement in a .htaccess file to change the settings of PHP (actually overwrite the settings from php.ini). On a server with phpsuexec, this will also result in a server error. To solve this, you can use a php.ini file which you put in the same folder as where you would have put your .htaccess file. In that php.ini file, you can change all the PHP values. You only have to put the values you want to modify in that file. For example, if you want to set the
,you would have used
short_open_tag? = offin your .htaccess file. Using a php.ini file, this results in:
[PHP] short_open_tag = Off