Error 500 in suPHP mode: file and folder permissions (chmod)
Understanding Internal Server Error in suPHP mode and how to set permissions correctly.
500 Internal Server Error is an HTTP status code indicating that the server is running but has encountered a critical error that prevents it from processing the request.
Why suPHP exists
In the standard mod_php mode, Apache always runs under a single shared user — nobody. This is far from ideal: a misconfigured permission can let other users on the same server read or even modify your files. On top of that, when scripts create or modify files under nobody, those files become impossible to delete or edit over FTP.
suPHP solves both problems by running each process under the actual account owner. Your files stay yours.
Correct permission settings
| Permission | Applies to | Meaning |
|---|---|---|
644 |
Files | Owner can write; others can only read (default) |
444 |
Files | Read-only for everyone, including your own scripts |
755 |
Folders | Standard folder access (default, no changes needed) |
A few important rules:
755must be set on the/public_html/your_domainfolder- Never change permissions on system folders and files such as
stats,logs,.htpasswd, or the/domainsdirectory - All permission changes should only affect
/public_html/your_domainand its contents - Never set
666or777on files or folders — scripts will not run with these permissions, and it puts your entire account at risk
Pro tip
With 644 permissions, only scripts running under your own account can write to files. Nobody else can. For an extra layer of security, you can switch to 444 — your own scripts won't be able to write either, though this is entirely optional.
Our products and services
Common causes of 500 Internal Server Error
In suPHP mode, a 500 error almost always means the server blocked a script for one of these reasons:
- A file has permissions other than
644or444— for example,666 - A folder has permissions other than
755— for example,777 - Your
.htaccesscontains directives that suPHP doesn't support
Unsupported .htaccess directives in suPHP mode
suPHP does not support PHP environment directives inside .htaccess, including php_flag, php_admin_flag, php_value, and similar. If your .htaccess contains anything like:
php_flag register_globals On
or even just:
display_errors Off
The server will immediately return a 500 Internal Server Error. Remove these lines and configure PHP settings via a custom php.ini file instead.
Help
If you have any questions or need assistance, please contact us through the ticket system — we're always here to help!