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 #3375428: Forgot to remove some old dojo files
|
||||
- Fix bug #3160512: Make SemantiScuttle work with FastCGI
|
||||
|
||||
|
||||
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
|
||||
define('INSTALLATION_ID', md5($GLOBALS['dbname'].$GLOBALS['tableprefix']));
|
||||
|
||||
// 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"]);
|
||||
}
|
||||
}
|
||||
//currently not needed
|
||||
//$_SERVER['PATH_INFO'] = SemanticScuttle_Environment::getServerPathInfo();
|
||||
?>
|
||||
|
|
|
@ -25,6 +25,7 @@ if ('@data_dir@' == '@' . 'data_dir@') {
|
|||
//FIXME: when you have multiple installations, the www_dir will be wrong
|
||||
$wwwdir = '@www_dir@/SemanticScuttle/';
|
||||
}
|
||||
require_once dirname(__FILE__) . '/Environment.php';
|
||||
require_once dirname(__FILE__) . '/Config.php';
|
||||
|
||||
$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