detect correct root path when run from the phar

This commit is contained in:
Christian Weiske 2011-08-16 07:56:07 +02:00
parent f93c3bbe76
commit 64923095e6
2 changed files with 53 additions and 2 deletions

View File

@ -61,8 +61,17 @@ class SemanticScuttle_Environment
return $GLOBALS['root'];
}
$pieces = explode('/', $_SERVER['SCRIPT_NAME']);
$rootTmp = '/';
if (isset($_SERVER['PHAR_PATH_TRANSLATED'])) {
$rootTmp = $_SERVER['SCRIPT_NAME'] . '/';
$_SERVER['SCRIPT_NAME'] = substr(
$_SERVER['PATH_TRANSLATED'],
strpos($_SERVER['PATH_TRANSLATED'], $rootTmp)
+ strlen($rootTmp)
);
}
$pieces = explode('/', $_SERVER['SCRIPT_NAME']);
foreach ($pieces as $piece) {
//we eliminate possible sscuttle subfolders (like gsearch for example)
if ($piece != '' && !strstr($piece, '.php')
@ -78,7 +87,7 @@ class SemanticScuttle_Environment
//we do not prepend http since we also want to support https connections
// "http" is not required; it's automatically determined by the browser
// depending on the current connection.
return '//'. $_SERVER['HTTP_HOST'] . $rootTmp;
return '//' . $_SERVER['HTTP_HOST'] . $rootTmp;
}
}
?>

View File

@ -272,6 +272,48 @@ class SemanticScuttle_EnvironmentTest extends PHPUnit_Framework_TestCase
SemanticScuttle_Environment::getRoot()
);
}
public function testGetRootFromPharIndex()
{
$_SERVER = array(
'HTTP_HOST' => 'dist.bm.bogo',
'DOCUMENT_ROOT' => '/etc/apache2/htdocs',
'SCRIPT_FILENAME' => '/home/cweiske/Dev/html/hosts/dist.bm.bogo/SemanticScuttle-0.98.X.phar',
'QUERY_STRING' => '',
'REQUEST_URI' => '/SemanticScuttle-0.98.X.phar/www/index.php',
'SCRIPT_NAME' => '/SemanticScuttle-0.98.X.phar',
'PATH_INFO' => '/www/index.php',
'PATH_TRANSLATED' => 'phar:///home/cweiske/Dev/semanticscuttle/cwdev/dist/SemanticScuttle-0.98.X.phar/www/index.php',
'PHP_SELF' => '/SemanticScuttle-0.98.X.phar/www/index.php',
'PHAR_PATH_TRANSLATED' => '/home/cweiske/Dev/html/hosts/dist.bm.bogo/www/index.php',
);
$this->assertEquals(
'//dist.bm.bogo/SemanticScuttle-0.98.X.phar/www/',
SemanticScuttle_Environment::getRoot()
);
}
public function testGetRootFromPharWithSubpath()
{
$_SERVER = array(
'HTTP_HOST' => 'dist.bm.bogo',
'DOCUMENT_ROOT' => '/etc/apache2/htdocs',
'SCRIPT_FILENAME' => '/home/cweiske/Dev/html/hosts/dist.bm.bogo/SemanticScuttle-0.98.X.phar',
'QUERY_STRING' => 'no value',
'REQUEST_URI' => '/SemanticScuttle-0.98.X.phar/www/index.php/foo/bar/',
'SCRIPT_NAME' => '/SemanticScuttle-0.98.X.phar',
'PATH_INFO' => '/foo/bar/',
'PATH_TRANSLATED' => 'phar:///home/cweiske/Dev/semanticscuttle/cwdev/dist/SemanticScuttle-0.98.X.phar/www/index.php',
'PHP_SELF' => '/SemanticScuttle-0.98.X.phar/www/index.php/foo/bar/',
'REQUEST_TIME' => '1313425297',
'PHAR_PATH_INFO' => '/www/index.php/foo/bar/',
'PHAR_PATH_TRANSLATED' => '/home/cweiske/Dev/html/hosts/dist.bm.bogo/www/index.php/foo/bar/',
);
$this->assertEquals(
'//dist.bm.bogo/SemanticScuttle-0.98.X.phar/www/',
SemanticScuttle_Environment::getRoot()
);
}
}
?>