From: Tim Starling Date: Mon, 25 Jan 2010 04:59:46 +0000 (+0000) Subject: Made the bug #21793 test only check for the PHP 5.3.x version of the bug, and allow... X-Git-Tag: 1.31.0-rc.0~38111 X-Git-Url: https://git.cyclocoop.org/admin/?a=commitdiff_plain;h=8a09b9d26126bab29ccc4391a5ebb4de256522a5;p=lhc%2Fweb%2Fwiklou.git Made the bug #21793 test only check for the PHP 5.3.x version of the bug, and allow the PHP 5.2.x version. There isn't actually any reported MW bug arising from the 5.2.x version at this time. --- diff --git a/maintenance/install-utils.inc b/maintenance/install-utils.inc index 70bcf519fa..bb2cac3999 100644 --- a/maintenance/install-utils.inc +++ b/maintenance/install-utils.inc @@ -44,17 +44,15 @@ function install_version_checks() { } $test = new PhpRefCallBugTester; - $ok = false; - call_user_func_array( array( $test, 'test' ), array( &$ok ) ); - if ( !$ok ) { - echo "PHP 5.2.11, 5.2.12, and 5.3.1 (your version: " . phpversion() . ") are not compatible with\n" . - "MediaWiki due to a bug involving reference parameters to __call. Upgrade to\n" . - "PHP 5.3.2 (5.2.13 for 5.2 users), or downgrade to PHP 5.3.0 (5.2.10 for 5.2\n" . - "users) to fix this. ABORTING (see http://bugs.php.net/bug.php?id=50394 for details)\n"; + $test->execute(); + if ( !$test->ok ) { + echo "PHP 5.3.1 is not compatible with MediaWiki due to a bug involving\n" . + "reference parameters to __call. Upgrade to PHP 5.3.2 or higher, or \n" . + "downgrade to PHP 5.3.0 to fix this.\n" . + "ABORTING (see http://bugs.php.net/bug.php?id=50394 for details)\n"; die( 1 ); } - global $wgCommandLineMode; $wgCommandLineMode = true; umask( 000 ); @@ -84,11 +82,26 @@ class PhpXmlBugTester { } /** - * Test for PHP bug #50394 + * Test for PHP bug #50394 (PHP 5.3.x conversion to null only, not 5.2.x) */ class PhpRefCallBugTester { + public $ok = false; + function __call( $name, $args ) { - $args[0] = true; + $old = error_reporting( E_ALL & ~E_WARNING ); + call_user_func_array( array( $this, 'checkForBrokenRef' ), $args ); + error_reporting( $old ); + } + + function checkForBrokenRef( &$var ) { + if ( $var ) { + $this->ok = true; + } + } + + function execute() { + $var = true; + call_user_func_array( array( $this, 'foo' ), array( &$var ) ); } }