Magento2.3 – Product Page White Screen Empty Body Issue

magento2.3

I've been tearing my hair out with this and have been through numerous posts here and across various forums, all say the same thing but don't actually offer a solution or somewhere to start. Sad face.

== Problem ==
I am currently in the process of migrating from 1.9.4.2 to 2.3.2 using the Migration Tool.

So far, so good… I have products etc moved over successfully but I keep encountering some odd behaviour that I am struggling to pin down.

When navigating through the site and finally to a product detail page, some of the products simply WSOD but not in the usual fashion, I'm left with an empty body tag and a partially loaded head. There are no errors being displayed.

<!doctype html>
<html lang="en">
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# product: http://ogp.me/ns/product#">
        <script>
    var BASE_URL = 'https://mydomainname.com/';
    var require = {
        "baseUrl": "https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB"
    };
</script>
        <meta charset="utf-8"/>
<meta name="description" content="***redacted***"/>
<meta name="robots" content="INDEX,FOLLOW"/>
<meta name="title" content="***redacted***"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="format-detection" content="telephone=no"/>
<title>***redacted***</title>
<link  rel="stylesheet" type="text/css"  media="all" href="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/mage/calendar.css" />
<link  rel="stylesheet" type="text/css"  media="all" href="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/css/styles-m.css" />
<link  rel="stylesheet" type="text/css"  media="all" href="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/mage/gallery/gallery.css" />
<link  rel="stylesheet" type="text/css"  media="screen and (min-width: 768px)" href="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/css/styles-l.css" />
<link  rel="stylesheet" type="text/css"  media="print" href="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/css/print.css" />
<link  rel="icon" type="image/x-icon" href="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/Magento_Theme/favicon.ico" />
<link  rel="shortcut icon" type="image/x-icon" href="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/Magento_Theme/favicon.ico" />
<script  type="text/javascript"  src="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/requirejs/require.js"></script>
<script  type="text/javascript"  src="https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/mage/polyfill.js"></script>

<meta property="og:type" content="product" />
<meta property="og:title" content="***redacted***" />
<meta property="og:image" content="https://mydomainname.com/pub/media/catalog/product/cache/11ffc1561674b852a0767715e35515e5/f/v/fvbag.jpg" />
<meta property="og:description" content="***redacted***" />
<meta property="og:url" content="https://mydomainname.com/***redacted***.html" />
    <meta property="product:price:amount" content="16.1"/>
    <meta property="product:price:currency" content="GBP"/>
    </head>
    <body data-container="body" data-mage-init='{"loaderAjax": {}, "loader": { "icon": "https://mydomainname.com/pub/static/version1569421027/frontend/Magento/luma/en_GB/images/loader-2.gif"}}' itemtype="http://schema.org/Product" itemscope="itemscope" class="catalog-product-view product-product-name-redacted page-layout-no-layout-updates">
            </body>
</html>

What's baffling to me at the moment is that there is nothing of note in the logs folder or in my apache error logs.

For transparency, there are lot of variations on the following error in the debug.log and system.log files, but having spent hours trawling the Magento Github pages, this seems fairly common.

main.INFO: Broken reference: the 'header.panel.wrapper' element cannot be added as child to 'header.container', because the latter doesn't exist [] []

Has anyone experienced this and found a reliable solution?

I have tried the various scrubbing of cache suggestions, turning caching off entirely, re-deploying content etc, so far, no dice.

To add some more weirdness to the mix, manually clicking "save" on the product from the admin, in 9/10 cases will solve the problem and the product will load on the next refresh… Note: 9/10 times.

Someone please tell me I'm not going mad…

=== DEBUG LOG ===

[2019-09-26 08:09:03] main.INFO: Broken reference: the 'catalog.compare.sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:03] main.INFO: Broken reference: the 'sale.reorder.sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:03] main.INFO: Broken reference: the 'wishlist_sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:03] main.INFO: Broken reference: the 'paypal.partner.right.logo' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:03] main.INFO: Broken reference: the 'bml.right.logo' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:24] main.INFO: Broken reference: the 'catalog.compare.sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:24] main.INFO: Broken reference: the 'sale.reorder.sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:24] main.INFO: Broken reference: the 'wishlist_sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:24] main.INFO: Broken reference: the 'paypal.partner.right.logo' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:09:24] main.INFO: Broken reference: the 'bml.right.logo' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'header.panel.wrapper' element cannot be added as child to 'header.container', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'theme.active.editor' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'head.components' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'requirejs-config' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'translate-config' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'translate' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'js_cookies' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'global_notices' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'skip_to_content.target' element cannot be added as child to 'main.content', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'header-wrapper' element cannot be added as child to 'header.container', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'navigation.sections' element cannot be added as child to 'page.top', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'top.container' element cannot be added as child to 'page.top', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'breadcrumbs' element cannot be added as child to 'page.top', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'page.main.title' element cannot be added as child to 'columns.top', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'page.messages' element cannot be added as child to 'columns.top', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'content.top' element cannot be added as child to 'main', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'content' element cannot be added as child to 'main', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'content.aside' element cannot be added as child to 'main', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'content.bottom' element cannot be added as child to 'main', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'page.bottom' element cannot be added as child to 'page.bottom.container', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'footer' element cannot be added as child to 'footer-container', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'absolute_footer' element cannot be added as child to 'before.body.end', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'frontend-storage-manager' element cannot be added as child to 'before.body.end', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'catalog.compare.sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'sale.reorder.sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'cookie_notices' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'logger' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'paypal.express-in-context.component' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'wishlist_sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'emailCapture' element cannot be added as child to 'before.body.end', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'ddg.checkout.tag' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'googleoptimizer.experiment.script' element cannot be added as child to 'after.body.start', because the latter doesn't exist [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'header.panel.wrapper' tries to reorder itself towards '', but their parents are different: 'header.container' and '' respectively. [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'skip_to_content.target' tries to reorder itself towards '', but their parents are different: 'main.content' and '' respectively. [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'navigation.sections' tries to reorder itself towards '', but their parents are different: 'page.top' and '' respectively. [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'frontend-storage-manager' tries to reorder itself towards '', but their parents are different: 'before.body.end' and '' respectively. [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'skip_gallery_before' tries to reorder itself towards 'product.info.media.image', but their parents are different: 'skip_gallery_before.wrapper' and 'product.info.media' respectively. [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'skip_gallery_after' tries to reorder itself towards 'product.info.media.image', but their parents are different: 'skip_gallery_after.wrapper' and 'product.info.media' respectively. [] []
[2019-09-26 08:13:53] main.INFO: Broken reference: the 'googleoptimizer.experiment.script' tries to reorder itself towards '', but their parents are different: 'after.body.start' and '' respectively. [] []
[2019-09-26 08:13:53] main.WARNING: Broken reference: The element with the "before.body.end" ID wasn't found. Verify the ID and try again. [] []

The SYSTEM LOG is the same.

Best Answer

After going in many different directions, I resorted to directly comparing a working product vs a non-working product in the db. Arguably, I should have done this first.

There were some variations between the two and I have managed to trace this to 'page_layout' (attribute_id = 107 (for me at least)) with a value of 'No layout updates' in the value column of the catalog_product_entity_varchar table.

Scrubbing these records - There may be a record saved for each of the store views (admin, default etc) - and clearing the cache solved my issue.

Hopefully this helps someone in the future.

Related Topic