Error during Initial build

**Silverstripe Version: silverstripe 4

Question:
Running into the following error when trying to run /dev/build?flush=1 for the first time.
I am using WAMP. Someone else created the project and I have cloned and am attempting to work on it as well:

[Emergency] Uncaught Error: Call to a member function obj() on null

GET /dev/build?flush=1

Line 180 in C:\wamp64\www\pilgrimage\vendor\silverstripe\framework\src\View\SSViewer_Scope.php

here is my .env

### Environment {#environment}
SS_DEFAULT_ADMIN_USERNAME="pass"
SS_DEFAULT_ADMIN_PASSWORD="pass"
SS_ENVIRONMENT_TYPE="dev"

### DB credentials
SS_BASE_URL="https://pilgrim"
SS_DATABASE_CLASS="MySQLDatabase"
SS_DATABASE_NAME="pilgrimage"
SS_DATABASE_SERVER="localhost"
SS_DATABASE_USERNAME="root"
SS_DATABASE_PASSWORD=

### Email
MAILER_DSN="<redacted>"

### Multifactor Authentication for Content Providers
# SS_MFA_SECRET_KEY="<redacted>"  For multifactor authentication when live

### SilverShop
SS_SHOP_REFERENCE_PREFIX="TEST"

### Turnstile
### Turnstile
#TURNSTILE_SITE_KEY="<redacted>"
#TURNSTILE_SECRET_KEY="<redacted>"

(edited by admin to remove potentially sensitive information)

Do you have any more information about the error? There should have been a lot more in the stack trace than just that one line.

Are you running the same versions of PHP / MySQL as the person who built the project?

How did you install the code for the project? Did you use any composer commands?

Do you have any additional modules installed?

The error does suggest that it could be template related, so it may also be worth looking in the templates to see if there’s any unusual code in there.

Here in the full stack trace:

[Emergency] Uncaught Error: Call to a member function obj() on null

GET /dev/build

Line 180 in C:\wamp64\www\pilgrimage\vendor\silverstripe\framework\src\View\SSViewer_Scope.php

Source

171 * @param string $name 172 * @param array $arguments 173 * @param bool $cache 174 * @param string $cacheName 175 * @return mixed 176 / 177 public function getObj($name, $arguments = [], $cache = false, $cacheName = null) 178 { 179 $on = $this->itemIterator ? $this->itemIterator->current() : $this->item; 180 return $on->obj($name, $arguments, $cache, $cacheName); 181 } 182 183 /* 184 * @param string $name 185 * @param array $arguments 186 * @param bool $cache

Trace

  • SilverStripe\View\SSViewer_Scope->getObj(MenuItems, , 1, )
    SSViewer_DataPresenter.php:298

  • SilverStripe\View\SSViewer_DataPresenter->getObj(MenuItems, , 1, )
    SSViewer_Scope.php:218

  • SilverStripe\View\SSViewer_Scope->obj(MenuItems, , 1, )
    SSViewer_DataPresenter.php:285

  • SilverStripe\View\SSViewer_DataPresenter->obj(MenuItems, , 1)
    .cachethemes.base.templates.Includes.Navigation.ss:34

  • include(C:\Windows\Temp\silverstripe-cache-php8.1.26C–wamp64-www-pilgrimage\ANZ-CD237DZK4.cachethemes.base.templates.Includes.Navigation.ss)
    SSViewer.php:576

  • SilverStripe\View\SSViewer->includeGeneratedTemplate(C:\Windows\TEMP\silverstripe-cache-php8.1.26C–wamp64-www-pilgrimage\ANZ-CD237DZK4.cachethemes.base.templates.Includes.Navigation.ss, SilverStripe\ErrorPage\ErrorPageController, Array, Array, SilverStripe\View\SSViewer_DataPresenter)
    SSViewer.php:648

  • SilverStripe\View\SSViewer->process(SilverStripe\ErrorPage\ErrorPageController, Array, SilverStripe\View\SSViewer_DataPresenter)
    SSViewer.php:738

  • SilverStripe\View\SSViewer::execute_template(Array, SilverStripe\ErrorPage\ErrorPageController, Array, SilverStripe\View\SSViewer_DataPresenter, 1)
    .cachethemes.base.templates.Includes.Header.ss:7

  • include(C:\Windows\Temp\silverstripe-cache-php8.1.26C–wamp64-www-pilgrimage\ANZ-CD237DZK4.cachethemes.base.templates.Includes.Header.ss)
    SSViewer.php:576

  • SilverStripe\View\SSViewer->includeGeneratedTemplate(C:\Windows\TEMP\silverstripe-cache-php8.1.26C–wamp64-www-pilgrimage\ANZ-CD237DZK4.cachethemes.base.templates.Includes.Header.ss, SilverStripe\ErrorPage\ErrorPageController, Array, Array, SilverStripe\View\SSViewer_DataPresenter)
    SSViewer.php:648

  • SilverStripe\View\SSViewer->process(SilverStripe\ErrorPage\ErrorPageController, Array, SilverStripe\View\SSViewer_DataPresenter)
    SSViewer.php:738

  • SilverStripe\View\SSViewer::execute_template(Array, SilverStripe\ErrorPage\ErrorPageController, Array, SilverStripe\View\SSViewer_DataPresenter, 1)
    .cachethemes.base.templates.Page.ss:79

  • include(C:\Windows\Temp\silverstripe-cache-php8.1.26C–wamp64-www-pilgrimage\ANZ-CD237DZK4.cachethemes.base.templates.Page.ss)
    SSViewer.php:576

  • SilverStripe\View\SSViewer->includeGeneratedTemplate(C:\Windows\TEMP\silverstripe-cache-php8.1.26C–wamp64-www-pilgrimage\ANZ-CD237DZK4.cachethemes.base.templates.Page.ss, SilverStripe\ErrorPage\ErrorPageController, , Array, )
    SSViewer.php:648

  • SilverStripe\View\SSViewer->process(SilverStripe\ErrorPage\ErrorPageController)
    Controller.php:290

  • SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, index)
    RequestHandler.php:200

  • SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
    Controller.php:200

  • SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
    ContentController.php:219

  • SilverStripe\CMS\Controllers\ContentController->handleRequest(SilverStripe\Control\HTTPRequest)
    ErrorPageController.php:35

  • SilverStripe\ErrorPage\ErrorPageController->handleRequest(SilverStripe\Control\HTTPRequest)
    ModelAsController.php:91

  • SilverStripe\CMS\Controllers\ModelAsController->handleRequest(SilverStripe\Control\HTTPRequest)
    Director.php:349

  • SilverStripe\Control\Director->SilverStripe\Control{closure}(SilverStripe\Control\HTTPRequest)
    VersionedHTTPMiddleware.php:41

  • SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    LoginSessionMiddleware.php:30

  • SilverStripe\SessionManager\Middleware\LoginSessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    ConfirmationMiddleware.php:254

  • SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    ConfirmationMiddleware.php:254

  • SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    PasswordExpirationMiddleware.php:84

  • SilverStripe\Security\PasswordExpirationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    BasicAuthMiddleware.php:68

  • SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    AuthenticationMiddleware.php:61

  • SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    ExecMetricMiddleware.php:20

  • SilverStripe\Control\Middleware\ExecMetricMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    CanonicalURLMiddleware.php:245

  • SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    HTTPCacheControlMiddleware.php:39

  • SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    ChangeDetectionMiddleware.php:28

  • SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    FlushMiddleware.php:31

  • SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    SessionMiddleware.php:20

  • SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    AllowedHostsMiddleware.php:60

  • SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    TrustedProxyMiddleware.php:176

  • SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    HTTPMiddlewareAware.php:65

  • SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
    Director.php:358

  • SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
    Director.php:123

  • SilverStripe\Control\Director::SilverStripe\Control{closure}(SilverStripe\Control\HTTPRequest)

  • call_user_func(Closure, SilverStripe\Control\HTTPRequest)
    Director.php:268

  • SilverStripe\Control\Director::mockRequest(Closure, page-not-found, Array, Array, , , Array, Array, SilverStripe\Control\HTTPRequest)
    Director.php:122

  • SilverStripe\Control\Director::test(page-not-found?stage=Live)
    ErrorPage.php:327

  • SilverStripe\ErrorPage\ErrorPage->SilverStripe\ErrorPage{closure}()
    Member.php:726

  • SilverStripe\Security\Member::actAs(, Closure)
    ErrorPage.php:329

  • SilverStripe\ErrorPage\ErrorPage->writeStaticPage()
    ErrorPage.php:202

  • SilverStripe\ErrorPage\ErrorPage->requireDefaultRecordFixture(Array)
    ErrorPage.php:168

  • SilverStripe\ErrorPage\ErrorPage->requireDefaultRecords()
    DatabaseAdmin.php:339

  • SilverStripe\ORM\DatabaseAdmin->doBuild(, 1)
    DatabaseAdmin.php:151

  • SilverStripe\ORM\DatabaseAdmin->build()
    DatabaseAdmin.php:123

  • SilverStripe\ORM\DatabaseAdmin->index(SilverStripe\Control\HTTPRequest)
    RequestHandler.php:321

  • SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, index)
    Controller.php:274

  • SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, index)
    RequestHandler.php:200

  • SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
    Controller.php:200

  • SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
    DevBuildController.php:34

  • SilverStripe\Dev\DevBuildController->build(SilverStripe\Control\HTTPRequest)
    RequestHandler.php:321

  • SilverStripe\Control\RequestHandler->handleAction(SilverStripe\Control\HTTPRequest, build)
    Controller.php:274

  • SilverStripe\Control\Controller->handleAction(SilverStripe\Control\HTTPRequest, build)
    RequestHandler.php:200

  • SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
    Controller.php:200

  • SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
    RequestHandler.php:224

  • SilverStripe\Control\RequestHandler->handleRequest(SilverStripe\Control\HTTPRequest)
    Controller.php:200

  • SilverStripe\Control\Controller->handleRequest(SilverStripe\Control\HTTPRequest)
    Director.php:349

  • SilverStripe\Control\Director->SilverStripe\Control{closure}(SilverStripe\Control\HTTPRequest)
    VersionedHTTPMiddleware.php:41

  • SilverStripe\Versioned\VersionedHTTPMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    LoginSessionMiddleware.php:30

  • SilverStripe\SessionManager\Middleware\LoginSessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    ConfirmationMiddleware.php:254

  • SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    ConfirmationMiddleware.php:254

  • SilverStripe\Control\Middleware\ConfirmationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    PasswordExpirationMiddleware.php:84

  • SilverStripe\Security\PasswordExpirationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    BasicAuthMiddleware.php:68

  • SilverStripe\Security\BasicAuthMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    AuthenticationMiddleware.php:61

  • SilverStripe\Security\AuthenticationMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    ExecMetricMiddleware.php:20

  • SilverStripe\Control\Middleware\ExecMetricMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    CanonicalURLMiddleware.php:245

  • SilverStripe\Control\Middleware\CanonicalURLMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    HTTPCacheControlMiddleware.php:39

  • SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    ChangeDetectionMiddleware.php:28

  • SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    FlushMiddleware.php:31

  • SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    SessionMiddleware.php:20

  • SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    AllowedHostsMiddleware.php:60

  • SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    TrustedProxyMiddleware.php:176

  • SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure)
    HTTPMiddlewareAware.php:62

  • SilverStripe\Control\Director->SilverStripe\Control\Middleware{closure}(SilverStripe\Control\HTTPRequest)
    HTTPMiddlewareAware.php:65

  • SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
    Director.php:358

  • SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest)
    HTTPApplication.php:116

  • SilverStripe\Control\HTTPApplication::SilverStripe\Control{closure}(SilverStripe\Control\HTTPRequest)

  • call_user_func(Closure, SilverStripe\Control\HTTPRequest)
    HTTPApplication.php:139

  • SilverStripe\Control\HTTPApplication->SilverStripe\Control{closure}(SilverStripe\Control\HTTPRequest)
    HTTPMiddlewareAware.php:65

  • SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure)
    HTTPApplication.php:140

  • SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, 1)
    HTTPApplication.php:115

  • SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest)
    index.php:24

I he was on 8.1 for PHP so I have now moved to that as well however for MYSQL he is on 5.7 and on my WAMP server its 8.2.0. However he explained it should work with MYSQL 5.6 and up ?

OK, so this needs to be sorted before you go any further. Silverstripe 4 isn’t PHP 8.2 compatible, so you’ll need to build it on PHP 8.1. In general, it’s important to run the same version of PHP in all your environments for a project, since composer will install some dependencies based on the version.

Now you’ve switched to 8.1, have you re-installed the composer packages?