There is an uncaught exception in your work environment. This is the cause of the http 500 error.
Let me quickly explain AppKernel :: __ construct
$kernel = new AppKernel($environment, $debug);
The first argument is the environment, the second is the debugging option.
If you set debug to true, symfony will try to catch the exceptions and show you a good stracktrace.
This covers the first and third cases where you are not getting an http 500 error (caused by an uncaught exception).
$kernel = new AppKernel('prod', true); $kernel = new AppKernel('dev', true);
Now you indicate that the error is NOT thrown into the dev environment with the debug value set to false.
$kernel = new AppKernel('dev', false);
This means that an exception exists in the dev environment.
Now you need to check the production log file to see which exception was thrown.
Use tail -f to see the real-time changes made to this file in your shell (i.e. bash), or if they are not available, open the file in your editor and look at the exceptions at the end.
tail -f app/logs/prod.log
In the standard version of symfony2, logfiles can be found in
app/logs/%kernel.environment%.log
... with% kernel.environment% is one of dev / prod / test