From 1005571163c4d656d555c883b051511b115f537a Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Tue, 11 Sep 2012 11:49:42 +1200 Subject: [PATCH] NEW: Added support for PHP 5.4's built-in webserver. PHP 5.4 comes with a built-in webserver. This addition to main.php adds support for it. It is designed to be run like so: php -S localhost:3000 framework/main.php The router will pass access of any file back to the built-in webserver, and handle all other URLs. --- main.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/main.php b/main.php index edbea5c72..edace3bf7 100644 --- a/main.php +++ b/main.php @@ -63,8 +63,22 @@ if(!empty($_SERVER['HTTP_X_ORIGINAL_URL'])) { $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL']; } +// PHP 5.4's built-in webserver uses this +if (php_sapi_name() == 'cli-server') { + $url = $_SERVER['REQUEST_URI']; + + // Querystring args need to be explicitly parsed + if(strpos($url,'?') !== false) { + list($url, $query) = explode('?',$url,2); + parse_str($query, $_GET); + if ($_GET) $_REQUEST = array_merge((array)$_REQUEST, (array)$_GET); + } + + // Pass back to the webserver for files that exist + if(file_exists(BASE_PATH . $url)) return false; + // Apache rewrite rules use this -if (isset($_GET['url'])) { +} else if (isset($_GET['url'])) { $url = $_GET['url']; // IIS includes get variables in url $i = strpos($url, '?'); @@ -109,4 +123,4 @@ DB::connect($databaseConfig); // Direct away - this is the "main" function, that hands control to the appropriate controller DataModel::set_inst(new DataModel()); -Director::direct($url, DataModel::inst()); \ No newline at end of file +Director::direct($url, DataModel::inst());