diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2014-05-21 07:48:02 +0200 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2014-05-21 07:48:02 +0200 |
| commit | cb96273d9e57cf57eaab4015b46a4e0b43cc1c55 (patch) | |
| tree | e3d223d7d7bf589a13199bdf62aa89afdce98c65 /src | |
| parent | 5d1d1d3cb1a5f73dcf80c7815b1b31be9973ac72 (diff) | |
| download | phorkie-cb96273d9e57cf57eaab4015b46a4e0b43cc1c55.tar.gz phorkie-cb96273d9e57cf57eaab4015b46a4e0b43cc1c55.zip | |
first work on .phar
Diffstat (limited to 'src')
| -rw-r--r-- | src/stub-phar.php | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/stub-phar.php b/src/stub-phar.php new file mode 100644 index 0000000..72e367d --- /dev/null +++ b/src/stub-phar.php @@ -0,0 +1,65 @@ +<?php +/** + * Phar stub file for phorkie. Handles startup of the .phar file. + * + * PHP version 5 + * + * @category Tools + * @package Phorkie + * @author Christian Weiske <cweiske@cweiske.de> + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @link http://phorkie.sf.net/ + */ +if (!in_array('phar', stream_get_wrappers()) || !class_exists('Phar', false)) { + echo "Phar extension not avaiable\n"; + exit(255); +} + +$web = 'www/index.php'; +//FIXME +$cli = 'scripts/index.php'; + +/** + * Rewrite the HTTP request path to an internal file. + * Maps "" and "/" to "www/index.php". + * + * @param string $path Path from the browser, relative to the .phar + * + * @return string Internal path. + */ +function rewritePath($path) +{ + if ($path == '') { + //we need a / to get the relative links on index.php work + if (!isset($_SERVER['REQUEST_SCHEME'])) { + $_SERVER['REQUEST_SCHEME'] = 'http'; + } + $url = $_SERVER['REQUEST_SCHEME'] . '://' + . $_SERVER['HTTP_HOST'] + . preg_replace('/[?#].*$/', '', $_SERVER['REQUEST_URI']) + . '/'; + header('Location: ' . $url); + exit(0); + } else if ($path == '/') { + return 'www/index.php'; + } + + if (substr($path, -4) == '.css') { + header('Expires: ' . date('r', time() + 86400 * 7)); + } + return $path; +} + +//Phar::interceptFileFuncs(); +set_include_path( + 'phar://' . __FILE__ + . PATH_SEPARATOR . 'phar://' . __FILE__ . '/lib/' +); +Phar::webPhar(null, $web, null, array(), 'rewritePath'); + +//TODO: implement CLI script runner +echo "phorkie can only be used in the browser\n"; +exit(1); +__HALT_COMPILER(); +?> |
