We were recently migrating websites from one dedicated server to another dedicated server, both of which had basically the same software setup with an upgrade in the hardware.
For the ease of use in a web based GUI, we recommend cPanel/WHM to facilitate the majority of setup, and this was no different. You place the order with the dedicated hosting company stating everything that you want, including the control panel, and you’re on your way and able to run through your standard setup procedures.
When you’re done setting up the server you can begin migrating from the old server to the new server (WHM has an excellent tool for migrating between WHM/cPanel based servers). And most of the time everything is looking good and after a local run-through you can update the DNS and be on your way.
All of that to say, during this recent migration we spotted 500 (generic “internal server”) errors that we had not seen before. After troubleshooting, it was determined to be due to some .htaccess rules being added and/or certain files and/or folders having write permissions (ex: 777). Now we knew what was causing it and could fix it to some extent, but we still wanted to know why. What had changed from the last server to the new one?
After looking around for similar situations, we pieced together where we should be looking, the PHP Handler. The old server was running dso. The new server was running suPHP which wasn’t even installed on the old server. So we switched the new server to dso (see image above) and things were back to working the way they were before. (Note: from what we were seeing, suPHP is harder on your hardware resources as well.)
As a word of caution, web hosts do setup suPHP as an additional layer of security and it is advisable to not set directories and/or files to writable unless they need to be.