ValueError: Path cannot be empty

I had a custom theme, lost some files to a battle with a hacker, and now the pages that use that theme are down. The error persists despite upgrades and theme changes. Here is some output: it breaks at line “include this template” Thanks for any help, no matter how weird!

/updates/concrete-cms-9.2.7/concrete/src/Block/View/BlockView.php

            $app = Application::getFacadeApplication();
 
            // If you hook into this event and use `preventRendering()`,
            // you can prevent the block from being displayed.
            $event = new BlockBeforeRender($this->block);
            $app->make('director')->dispatch('on_block_before_render', $event);
 
            return $event->proceed();
        };
 
        if (!$shouldRender()) {
            return;
        }
 
        unset($shouldRender);
 
        extract($scopeItems);
        if (!$this->outputContent) {
            ob_start();
            include $this->template;
            $this->outputContent = ob_get_contents();
            ob_end_clean();
        }
 
        // In case the view changes any scope items, the block header/footer
        // could break without extracting the scope items again. This can happen
        // if the block view changes any local variables such as the `$b`
        // variable which is possible as they can be user defined.
        extract($scopeItems);
 
        // The translatable texts in the block header/footer need to be printed
        // out in the system language.
        $loc = Localization::getInstance();
        $loc->pushActiveContext(Localization::CONTEXT_UI);
 
        if ($this->blockViewHeaderFile) {
            include $this->blockViewHeaderFile;
        }
 
        $this->controller->registerViewAssets($this->outputContent);

Arguments

  1. “Path cannot be empty”

Looks to me like you have a block or blocks that have lost their view.php file. All blocks should have a view.php. Even if your blocks are using a custom template, if that goes missing, the default view.php is used instead.

Making the assumption that you are using a clean concrete CMS core and that none of the core blocks are missing, then you should check any custom blocks in application/blocks and make sure view.php exists. This only applies if the block is a custom block, and not just an overrride of a core block.

You should also check that any blocks included with your theme’s package also have the view.php files. These blocks are in packages/your_package/blocks.

Also make sure file ownership and read permission is correct on all files. They should all be readable (and directories accessible) by the user that PHP is running as. This may be the apache/httpd user or your account user depending on your hosting configuration.