White screen of death on upgrade from 3.3.1 to 3.3.2 or 3.3.3

hi all,

I have the same problem. White screen of death (wsod) with phplist 3.3.2 and 3.3.3. I first tried upgrading from 3.3.1 to 3.3.3 and got the wsod. Rolled back and tried 3.3.1 to 3.3.2 first and also got the wsod.

I am using ubuntu 16.04. There is nothing in the log files :frowning: for this error but other errors, like incorrect db configuration results in errors in the log file which I think means logging is working.

Via use of print statements I have traced the problem to the loading of plugins. In partucular I have traced the failure to this block of code, starting on line 70, in " admin/pluginlib.php"

foreach ($pluginFiles as $file) {
list($className, $ext) = explode(‘.’, basename($file));
if (preg_match(“/[\w]+/”, $className)) {
// && !in_array($className,$GLOBALS[‘plugins_disabled’])) {
if (!class_exists($className)) {
include_once $file;
if (class_exists($className)) {
$pluginInstance = new $className();
$pluginInstance->origin = $file;
// print “Instance $className
”;
//# bit of a duplication of plugins, but $GLOBALS[‘plugins’] should only contain active ones
//# using “allplugins” allow listing them, and switch on/off in the plugins page
$GLOBALS[‘allplugins’][$className] = $pluginInstance;

            if (!in_array($className, $GLOBALS['plugins_disabled'])) {
                $plugin_initialised = getConfig(md5('plugin-'.$className.'-initialised'));

                if (!empty($plugin_initialised)) {
                    $GLOBALS['plugins'][$className] = $pluginInstance;
                    $pluginInstance->enabled = true;
                } elseif (in_array($className, $auto_enable_plugins)) {
                    $GLOBALS['plugins'][$className] = $pluginInstance;
                    $pluginInstance->initialise();
                    $pluginInstance->enabled = true;
                } else {
                    // plugin is not enabled and not disabled, so disable it and don't process this plugin any further
                    $pluginInstance->enabled = false;
                    $disabled_plugins[$className] = 1;
                    saveConfig('plugins_disabled', serialize($disabled_plugins), 0);
                    continue;
                }
                // remember the first plugins that provide editor, authentication or email sending
                if (!$GLOBALS['editorplugin'] && $pluginInstance->editorProvider && method_exists($pluginInstance,
                        'editor')
                ) {
                    $GLOBALS['editorplugin'] = $className;
                }
                if (!$GLOBALS['authenticationplugin'] && $pluginInstance->authProvider && method_exists($pluginInstance,
                        'validateLogin')
                ) {
                    $GLOBALS['authenticationplugin'] = $className;
                }

                if (!$GLOBALS['emailsenderplugin'] && $pluginInstance instanceof EmailSender) {
                    $GLOBALS['emailsenderplugin'] = $pluginInstance;
                }

                if (!empty($pluginInstance->DBstruct)) {
                    foreach ($pluginInstance->DBstruct as $tablename => $tablecolumns) {
                        $GLOBALS['tables'][$className.'_'.$tablename] = $GLOBALS['table_prefix'].$className.'_'.$tablename;
                    }
                }
            } else {
                $pluginInstance->enabled = false;
                dbg($className.' disabled');
            }
        } else {
            Error('initialisation of plugin '.$className.' failed');
        }
        //print "$className = ".$pluginInstance->name."<br/>";
    }
}

}

I cannot trace which module is causing the problem. I have tried deleting the file “/admin/plugins/SegmentPlugin.php” as suggested by the post entitled “blank screen on fresh install” as a temporary measure but this did not solve the problem.

Any help appreciated.

@mxc4 Remove one by one the other .php files in the plugin directory to see when the problem disappears. If you have removed SegmentPlugin.php then I would guess that the cause might be CommonPlugin.php so try that first.

You didn’t say which version of php you are using, which is probably very relevant.

Thanks for the reply @duncanc. I am using Ubuntu 16.04 andthe PHP version is "PHP 5.6.36-1+ubuntu16.04.1+deb.sury.org+1 ". I thought this version met the min requirements for phplist?

I have gone through the plugins and it does appear to be the SegmentPlugin.php plugin. Sorry about that. Must have got confused with all the upgrades and downgrades. Does 3.3.3 include the SegmentPlugin.php fix or should I pull the latest file from the repo and deploy If it includes the fix discussed in the other forum topic then I must have another problem with the script?

This should be fine regardless. The problem with Segment plugin was an inadvertent change that would not work with php < 5.6.

Are you sure that is the php version being used by the web server because you should not have a problem with the Segment plugin at all.

Unless you want to use the Segment plugin then just deleting that one file is fine. The plugin has been fixed, so you can install the latest version of the plugin through the Manage Plugins page using the package url
https://github.com/bramley/phplist-plugin-segment/archive/master.zip

Thanks. Refreshing the plugins via the url provided seems to have done the trick. Will see what I can find out about the php versions but it should be the default Ubuntu package