You are viewing revision #3 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.
I was playing around with another PHP framework which I didn't really liked anyway but it had simple and nice integration for PHP built in web server so I decided to write one for Yii (since this is my primary PHP framework)
More info about PHP's web server.
What you need to do:
- Create file named "ServeController.php" under "commands" folder in Yii application root directory.
- Paste code which you can find below and save file.
Usage
You can start default web server by running command:
yii serve
This will create web server which you can access by visiting http://localhost:8080
You can pass web root location, hostname and port parameters.
Web root is a path relative to Yii application root directory ("web" is default), so running:
yii serve frontend
will set root directory to "Your/path/to/yii/frontend", i.e. "C:/xampp/htdocs/myYiiApp/frontend/"
You can point web root to php file which can emulate Apache mod_rewrite.
More information about this can be found in PHP manual
Content of ServeController.php
<?php
namespace app\commands;
use yii\console\Controller;
/**
* This command runs PHP built in web server
*
* @author Mariusz Soltys <contact@newairhost.com>
*/
class ServeController extends Controller
{
/**
* This command echoes what you have entered as the message.
* @param string $root web root location relative to Yii app root.
* @param string $host hostname of the server.
* @param string $port port to listen for connections.
*/
public function actionIndex($root = "web", $host="localhost", $port= 8080)
{
$basePath = \Yii::$app->basePath;
$webRoot = $basePath.DIRECTORY_SEPARATOR.$root;
echo "Yii dev server started on http://{$host}:{$port}/\n";
echo "Document root is \"{$webRoot}\"\n";
passthru('"'.PHP_BINARY.'"'." -S {$host}:{$port} -t \"{$webRoot}\"")."\n";
}
}
This is outdated since Yii2 includes its own integration
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.