Cannot redeclare boolval() with PHP5.5

Oliver Georgi edited this page Jan 11, 2017 · 1 revision

You might be confronted by a fatal error message like this one here:
Fatal error: Cannot redeclare boolval() in /include/inc_lib/general.inc.php on line 2533
when upgrading to PHP5.5+ with an older installation of phpwcms.

The problem is caused by the function boolval() which was introduced with PHP 5.5.0 but is a function phpwcms has implemented since a long time.

To fix the error there is no need to update phpwcms. Sure, it's always recommend to have a newer release running but it can be solved very easy.

Open the file general.inc.php and search for function boolval or go directly to the given line number in the error message.

Change the section to:

/**
 * Try alternative way to test for bool value
 *
 * @param mixed
 * @param bool
 */
if(!function_exists('boolval')) {
	function boolval($BOOL, $STRICT=false) {

		if(is_string($BOOL)) {
			$BOOL = strtoupper($BOOL);
		}
	
		// no strict test, check only against false bool
		if( !$STRICT && in_array($BOOL, array(false, 0, NULL, 'FALSE', 'NO', 'N', 'OFF', '0'), true) ) {

			return false;

		// strict, check against true bool
		} elseif($STRICT && in_array($BOOL, array(true, 1, 'TRUE', 'YES', 'Y', 'ON', '1'), true) ) {

			return true;

		}

		// let PHP decide
	    return $BOOL ? true : false;
	}
}

Newer releases of phpwcms doesn't have the problem.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.