使用PHP的内置Web服务器和Symfony的生产模式

I just created a new Symfony 3.4 application. Per Symfony's docs, I can server my application using PHP's built-in web-server by running

php bin/console server:start

However -- this appears to run the application in development mode. Whoops exception printing is on, the developer toolbar shows up, etc.

Is there a way to use the built-in web server with Symfony's production mode? This isn't to server an application to the public (which would be dumb) but instead because I want to test an issue may only crop up in production mode.

Yea, you specify the app.php on the url you enter in the browser, so something like this

mysite.dev/app.php/login

Or

localhost:8000/app.php/login

By default it will automatically use app_dev.php

Instead of symfony's server command you can run PHP's built-in web-server directly with the following command:

php -S localhost:8000 -t web/ app.php

This assumes that you are currently in your project directory and that the web/ directory hosts your app.php file.

-t denotes the document root. In this example that is web/.

app.php is specified as the router script and will handle your request.

More info on PHP's built-in web server command

Now when you go to localhost:8000 it will be serving your Symfony project in Production mode.

This doesn't run the server in the background, but you can easily search google for how to do that.

If you are using Symfony 4 you need to enable the server bundle for all environments in the bundles.php file. By default it's only turned on for dev.

<?php

return [
    // ...
    Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['all' => true],
];