A simple dev task, to start a development server for your SilverStripe app.
$ composer require silverstripe/serve $ framework/sake dev/build flush=1 $ vendor/bin/serve
This will start the server at
You can override the host/port:
$ vendor/bin/serve --host 127.0.0.1 --port 8000
Including a bootstrap file
The bootstrap-file argument lets you include a custom PHP file after composer has been loaded (which includes Silverstripe’s Constants.php) but before main.php has been loaded.
This can be used for any number of things, but the primary use-case is to pull in any stub code & config that wouldn’t normally be included by SilverStripe in the current execution session, such as test stubs.
$ vendor/bin/serve --bootstrap-file tests/serve-bootstrap.php
Using as a library
You can also use serve as a library, to start a SilverStripe server from some other tool such as a test suite:
BASE_PATH is defined, you can use it like this:
use SilverStripe\Serve\ServerFactory; $factory = new ServerFactory(); $server = $factory->launchServer([ 'host' => 'localhost', 'preferredPort' => 3000, ]); // Print the contents of the homepage echo file_get_contents($server->getURL()); // Stop the server when you're done with it $server->stop();
BASE_PATH is not defined, e.g. if you are not running a SapphireTest,
you can provide an alternative path to the factory constructor:
$factory = new ServerFactory(realpath(__DIR__ . '/../'));
launchServer allows the following options to be passed to it:
- host: The host to listen on, defaulting to 0.0.0.0
- preferredPort: The preferred port. If this port isn't available, the next highest one will be used
- bootstrapFile: The bootstrap file, as described above