Fix bug #3160512: Make SemantiScuttle work with FastCGI
This commit is contained in:
parent
0396dee730
commit
320d673344
5 changed files with 151 additions and 12 deletions
|
@ -7,6 +7,7 @@ ChangeLog for SemantiScuttle
|
||||||
-------------------
|
-------------------
|
||||||
- Fix bug #3375635: XML parsing problem in top.inc.php
|
- Fix bug #3375635: XML parsing problem in top.inc.php
|
||||||
- Fix bug #3375428: Forgot to remove some old dojo files
|
- Fix bug #3375428: Forgot to remove some old dojo files
|
||||||
|
- Fix bug #3160512: Make SemantiScuttle work with FastCGI
|
||||||
|
|
||||||
|
|
||||||
0.98.0 - 2011-07-21
|
0.98.0 - 2011-07-21
|
||||||
|
|
52
src/SemanticScuttle/Environment.php
Normal file
52
src/SemanticScuttle/Environment.php
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* SemanticScuttle - your social bookmark manager.
|
||||||
|
*
|
||||||
|
* PHP version 5.
|
||||||
|
*
|
||||||
|
* @category Bookmarking
|
||||||
|
* @package SemanticScuttle
|
||||||
|
* @author Christian Weiske <cweiske@cweiske.de>
|
||||||
|
* @license AGPL http://www.gnu.org/licenses/agpl.html
|
||||||
|
* @link http://sourceforge.net/projects/semanticscuttle
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Server environment handling methods
|
||||||
|
*
|
||||||
|
* @category Bookmarking
|
||||||
|
* @package SemanticScuttle
|
||||||
|
* @author Christian Weiske <cweiske@cweiske.de>
|
||||||
|
* @license AGPL http://www.gnu.org/licenses/agpl.html
|
||||||
|
* @link http://sourceforge.net/projects/semanticscuttle
|
||||||
|
*/
|
||||||
|
class SemanticScuttle_Environment
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determines the correct $_SERVER['PATH_INFO'] value
|
||||||
|
*
|
||||||
|
* @return string New value
|
||||||
|
*/
|
||||||
|
public static function getServerPathInfo()
|
||||||
|
{
|
||||||
|
/* old code that does not work today.
|
||||||
|
if you find that this code helps you, tell us
|
||||||
|
and send us the output of var_export($_SERVER);
|
||||||
|
// Correct bugs with PATH_INFO (maybe for Apache 1 or CGI) -- for 1&1 host...
|
||||||
|
if (isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO'])) {
|
||||||
|
if (strlen($_SERVER["PATH_INFO"])<strlen($_SERVER["ORIG_PATH_INFO"])) {
|
||||||
|
$_SERVER["PATH_INFO"] = $_SERVER["ORIG_PATH_INFO"];
|
||||||
|
}
|
||||||
|
if (strcasecmp($_SERVER["PATH_INFO"], $_SERVER["SCRIPT_NAME"]) == 0) {
|
||||||
|
unset($_SERVER["PATH_INFO"]);
|
||||||
|
}
|
||||||
|
if (strpos($_SERVER["PATH_INFO"], '.php') !== false) {
|
||||||
|
unset($_SERVER["PATH_INFO"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
return $_SERVER['PATH_INFO'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
|
@ -69,16 +69,6 @@ define('PAGE_WATCHLIST', "watchlist");
|
||||||
// installations on the same host server
|
// installations on the same host server
|
||||||
define('INSTALLATION_ID', md5($GLOBALS['dbname'].$GLOBALS['tableprefix']));
|
define('INSTALLATION_ID', md5($GLOBALS['dbname'].$GLOBALS['tableprefix']));
|
||||||
|
|
||||||
// Correct bugs with PATH_INFO (maybe for Apache 1 or CGI) -- for 1&1 host...
|
//currently not needed
|
||||||
if (isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO'])) {
|
//$_SERVER['PATH_INFO'] = SemanticScuttle_Environment::getServerPathInfo();
|
||||||
if (strlen($_SERVER["PATH_INFO"])<strlen($_SERVER["ORIG_PATH_INFO"])) {
|
|
||||||
$_SERVER["PATH_INFO"] = $_SERVER["ORIG_PATH_INFO"];
|
|
||||||
}
|
|
||||||
if (strcasecmp($_SERVER["PATH_INFO"], $_SERVER["SCRIPT_NAME"]) == 0) {
|
|
||||||
unset($_SERVER["PATH_INFO"]);
|
|
||||||
}
|
|
||||||
if (strpos($_SERVER["PATH_INFO"], '.php') !== false) {
|
|
||||||
unset($_SERVER["PATH_INFO"]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -25,6 +25,7 @@ if ('@data_dir@' == '@' . 'data_dir@') {
|
||||||
//FIXME: when you have multiple installations, the www_dir will be wrong
|
//FIXME: when you have multiple installations, the www_dir will be wrong
|
||||||
$wwwdir = '@www_dir@/SemanticScuttle/';
|
$wwwdir = '@www_dir@/SemanticScuttle/';
|
||||||
}
|
}
|
||||||
|
require_once dirname(__FILE__) . '/Environment.php';
|
||||||
require_once dirname(__FILE__) . '/Config.php';
|
require_once dirname(__FILE__) . '/Config.php';
|
||||||
|
|
||||||
$cfg = new SemanticScuttle_Config();
|
$cfg = new SemanticScuttle_Config();
|
||||||
|
|
95
tests/SemanticScuttle/EnvironmentTest.php
Normal file
95
tests/SemanticScuttle/EnvironmentTest.php
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class SemanticScuttle_EnvironmentTest extends PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
public function testServerPathInfoModPhp()
|
||||||
|
{
|
||||||
|
$_SERVER = array(
|
||||||
|
'HTTP_USER_AGENT' => 'Opera/9.80 (X11; Linux x86_64; U; de) Presto/2.9.168 Version/11.50',
|
||||||
|
'HTTP_HOST' => 'bm-cgi.bogo',
|
||||||
|
'HTTP_ACCEPT' => 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
|
||||||
|
'HTTP_ACCEPT_LANGUAGE' => 'de-DE,de;q=0.9,en;q=0.8',
|
||||||
|
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
|
||||||
|
'HTTP_COOKIE' => 'PHPSESSID=ga446jhs0e09hkt60u9bsmp0n0',
|
||||||
|
'HTTP_CACHE_CONTROL' => 'no-cache',
|
||||||
|
'HTTP_CONNECTION' => 'Keep-Alive',
|
||||||
|
'PATH' => '/usr/local/bin:/usr/bin:/bin',
|
||||||
|
'SERVER_SIGNATURE' => '<address>Apache/2.2.17 (Ubuntu) Server at bm-cgi.bogo Port 80</address>',
|
||||||
|
'SERVER_SOFTWARE' => 'Apache/2.2.17 (Ubuntu)',
|
||||||
|
'SERVER_NAME' => 'bm-cgi.bogo',
|
||||||
|
'SERVER_ADDR' => '127.0.0.1',
|
||||||
|
'SERVER_PORT' => '80',
|
||||||
|
'REMOTE_ADDR' => '127.0.0.1',
|
||||||
|
'DOCUMENT_ROOT' => '/etc/apache2/htdocs',
|
||||||
|
'SERVER_ADMIN' => '[no address given]',
|
||||||
|
'SCRIPT_FILENAME' => '/home/cweiske/Dev/html/hosts/bm-cgi.bogo/profile.php',
|
||||||
|
'REMOTE_PORT' => '45349',
|
||||||
|
'GATEWAY_INTERFACE' => 'CGI/1.1',
|
||||||
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
|
'REQUEST_METHOD' => 'GET',
|
||||||
|
'QUERY_STRING' => '',
|
||||||
|
'REQUEST_URI' => '/profile.php/dummy',
|
||||||
|
'SCRIPT_NAME' => '/profile.php',
|
||||||
|
'PATH_INFO' => '/dummy',
|
||||||
|
'PATH_TRANSLATED' => '/home/cweiske/Dev/html/hosts/bm-cgi.bogo/dummy',
|
||||||
|
'PHP_SELF' => '/profile.php/dummy',
|
||||||
|
'REQUEST_TIME' => 1311422546,
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'/dummy', SemanticScuttle_Environment::getServerPathInfo()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testServerPathInfoFastCgi()
|
||||||
|
{
|
||||||
|
$_SERVER = array(
|
||||||
|
'PHP_FCGI_MAX_REQUESTS' => '5000',
|
||||||
|
'PHPRC' => '/etc/php5/cgi/5.3.6/',
|
||||||
|
'PHP_FCGI_CHILDREN' => '3',
|
||||||
|
'PWD' => '/var/www/cgi-bin',
|
||||||
|
'FCGI_ROLE' => 'RESPONDER',
|
||||||
|
'REDIRECT_HANDLER' => 'php-cgi',
|
||||||
|
'REDIRECT_STATUS' => '200',
|
||||||
|
'HTTP_USER_AGENT' => 'Opera/9.80 (X11; Linux x86_64; U; de) Presto/2.9.168 Version/11.50',
|
||||||
|
'HTTP_HOST' => 'bm-cgi.bogo',
|
||||||
|
'HTTP_ACCEPT' => 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
|
||||||
|
'HTTP_ACCEPT_LANGUAGE' => 'de-DE,de;q=0.9,en;q=0.8',
|
||||||
|
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
|
||||||
|
'HTTP_COOKIE' => 'PHPSESSID=ga446jhs0e09hkt60u9bsmp0n0',
|
||||||
|
'HTTP_CONNECTION' => 'Keep-Alive',
|
||||||
|
'PATH' => '/usr/local/bin:/usr/bin:/bin',
|
||||||
|
'SERVER_SIGNATURE' => '<address>Apache/2.2.17 (Ubuntu) Server at bm-cgi.bogo Port 80</address>',
|
||||||
|
'SERVER_SOFTWARE' => 'Apache/2.2.17 (Ubuntu)',
|
||||||
|
'SERVER_NAME' => 'bm-cgi.bogo',
|
||||||
|
'SERVER_ADDR' => '127.0.0.1',
|
||||||
|
'SERVER_PORT' => '80',
|
||||||
|
'REMOTE_ADDR' => '127.0.0.1',
|
||||||
|
'DOCUMENT_ROOT' => '/etc/apache2/htdocs',
|
||||||
|
'SERVER_ADMIN' => '[no address given]',
|
||||||
|
'SCRIPT_FILENAME' => '/home/cweiske/Dev/html/hosts/bm-cgi.bogo/profile.php',
|
||||||
|
'REMOTE_PORT' => '45342',
|
||||||
|
'REDIRECT_URL' => '/profile.php/dummy',
|
||||||
|
'GATEWAY_INTERFACE' => 'CGI/1.1',
|
||||||
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
|
'REQUEST_METHOD' => 'GET',
|
||||||
|
'QUERY_STRING' => '',
|
||||||
|
'REQUEST_URI' => '/profile.php/dummy',
|
||||||
|
'SCRIPT_NAME' => '/profile.php',
|
||||||
|
'PATH_INFO' => '/dummy',
|
||||||
|
'PATH_TRANSLATED' => '/etc/apache2/htdocs/dummy',
|
||||||
|
'ORIG_PATH_INFO' => '/profile.php/dummy',
|
||||||
|
'ORIG_SCRIPT_NAME' => '/cgi-bin-php/php-cgi-5.3.6',
|
||||||
|
'ORIG_SCRIPT_FILENAME' => '/var/www/cgi-bin/php-cgi-5.3.6',
|
||||||
|
'ORIG_PATH_TRANSLATED' => '/home/cweiske/Dev/html/hosts/bm-cgi.bogo/profile.php/dummy',
|
||||||
|
'PHP_SELF' => '/profile.php/dummy',
|
||||||
|
'REQUEST_TIME' => 1311422521,
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'/dummy', SemanticScuttle_Environment::getServerPathInfo()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
Loading…
Reference in a new issue