Blank frontend pages with MODX 3.0.3 an PHP8

I recently upgraded to Revo 3.0.3 and have the following Extras installed.

  • getCache
  • getResourceField
  • If
  • MIGX
  • pdoTools
  • pThumb
  • Resizer
  • sitemapFriend
  • translit

Everything works well with PHP 7.4. But after switching to PHP 8.0 I get empty pages in the frontend. I tried it with the blank template and just a little text in the ressource - no luck. The error log is empty. Turning off all plugins didn’t help.

The problem is that the hoster will turn of PHP 7.4 so I must find a solution. Has anyone any idea?

It could be that Resizer creates the problem. Maybe try setting the system setting phpthumbof.use_resizer to no to see if that fixes things.

Thank you. I will try it as soon as the website is running again.

Did you just check the MODX error log or also the server error log?

The MODx error log. There is no log on the server. phpthumbof.use_resizer is set to off

The system setting extension_packages is another way that code of extras can run on a request to MODX.

And in MODX 3, a bootstrap.php file in the package folder core/components/{package-name}/ can also be used to initialize an extra.

Thank you so much for your help. Nevertheless I will try it the other was round: Setting up a clean MODx3 and installing/importing extras, chunks, content step by step to see, when the trouble is starting. (Hopefully never.)

Okay, seems to be an outdated markdown-plugin that’s causing the problems.

I have the sam problem but with a Modx 2.8.5 installation:
Installed Extras:

  • Ace 1.9.3
  • Babel 3.1.1
  • BackupMODX 3.1.0
  • ClientConfig 2.3.3
  • ContentBlocks 1.12.5
  • CrossContextsSettings 1.2.4
  • FileDownload R 3.0.1
  • FileSluggy 1.3.5
  • getfolders 2.0.3
  • getImages 2.4.3
  • getPage 1.2.5
  • getUrlParam 1.0
  • if 1.1.1
  • image+ 2.9.4
  • Login 1.9.11
  • ObfuscateEmail-Revo 1.0.0
  • pdoTools 2.13.3
  • pThumb 2.3.3
  • Quickstart Buttons 1.3.0
  • Resizer 1.0.2
  • SEO Suite 2.0.6
  • SiteDashClient 1.6.1
  • TinyMCE Rich Text Editor 2.0.9
  • translit 1.0.0
  • Updater 0.4.1
  • Upgrade ModX 2.3.3

All runs with php 7.4 but when i update to php 8.1 the frontend is blank.
I also tried uninstalling all the extras one by one, but it didn’t help.

It also didn’t help when I deactivated the gateway plugin.

<?php
if($modx->context->get('key') != "mgr"){
    /* grab the current langauge from the cultureKey request var */
    switch ($_REQUEST['cultureKey']) {
        case 'de':
            /* switch the context */
            $modx->switchContext('web');
            break;
        default:
            /* Set the default context here */
            $modx->switchContext('en');
            break;
    }
    /* unset GET var to avoid
     * appending cultureKey=xy to URLs by other components */
    unset($_GET['cultureKey']);
}

The ModX Log is empty.
I tried all steps of this threat.

Did you also check the server error log? PHP syntax errors aren’t logged in the MODX error log (especially if they are fatal).

Thanks, i found the solution:

PHP Error:

PHP Fatal error:  Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given in /.../core/components/seosuite/model/seosuite/snippets/seosuitesnippets.class.php:141

SEOSuite was the problem. For Modx 2.x there is no update for php 8.1 of the Extra.

I changed the following code in /core/components/seosuite/model/seosuite/snippets/seosuitesnippets.class.php

from

'output' => implode($values, PHP_EOL)

to

'output' => implode(PHP_EOL,$values)

it works!

4 Likes