500 Internal Server Error

If your page responds with an "Internal Server Error" (error code 500) you first have to determine what caused it. It's either ProcessWire or (more likely) your server which has a conflict with a command in the .htaccess file.

If the error message shown is cursive, uses a sans-serif font like arial and in smaller font size it's probably an error caused by ProcessWire. In this case you it's probably better to ask in the forum directly.

If the error message looks different and appears on every site - including the homepage - you're trying to reach it's probably caused by your server which has a conflict with a command in the .htaccess file. This happens often because every hoster configures the server like it wants to. So sometimes they disable some commands, which causes this error. This guide will lead you through solutions for the most common error triggers.

If you take a look in the ".htaccess" file which should be in the root folder of your installation you already see some notes at commands which could be the problem. The first command you should try to deactivate by putting a # in front of it is "Options +FollowSymLinks". Sometimes you have to put a # in front of "Options -Indexes", too.

Options -Indexes
Options +FollowSymLinks

If this doesn't change anything and you're still getting the same error continue to comment (put a # in front of the line, which basically declares the line as a comment) the following. You should comment each of this lines:

<IfModule mod_php5.c>
  php_flag magic_quotes_gpc     off
  php_flag magic_quotes_sybase      off
  php_flag register_globals     off

If the error is still there try to comment:


And finally - if it's still not working - comment everything. If it works then you can start uncommenting line for line until the error appears again. Then you know which line/command causes the problem.

Next: Login Problems »

  1. 500 Internal Server Error
  2. Login Problems
  3. URLs not working
  4. File related problems


  • David L. Kaplan

    David L. Kaplan 4 years ago 82

    Another cause of "This request was aborted because it appears to be forged" is a too many stale session files that didn't get garbage collected by PW because of some interaction with Ubuntu servers. Adding a couple of lines of php to the config usually fixes it apparently:

    ini_set("session.gc_probability", 1);
    ini_set("session.gc_divisor", 100);


  • Thomas Grahlke

    Thomas Grahlke 4 years ago 32

    On a 1 & 1 domain it works only with the lowest possible in the .htaccess:

    # -----------------------------------------------------------------------------------------------
    # Pass control to ProcessWire if all the above directives allow us to this point.
    # For regular VirtualHosts (most installs)
    # -----------------------------------------------------------------------------------------------
    # RewriteRule ^(.*)$ index.php?it=$1 [L,QSA]

    # -----------------------------------------------------------------------------------------------
    # 500 NOTE: If using VirtualDocumentRoot: comment out the one above and use this one instead.
    # -----------------------------------------------------------------------------------------------
    RewriteRule ^(.*)$ /index.php?it=$1 [L,QSA]

  • Peter Knight

    Peter Knight 3 years ago 10

    Just wanted to add to this as Ive spent the morning with a 500 error and finally resolved.
    1. Ensure you have debug mode on in your config file. $config->debug = true;
    2. In my case, I had the dbhost in config set to localhost. Make sure your new host doesn't use something different.

Post a Comment

Your e-mail is kept confidential and not included with your comment. Website is optional.