Page MenuHomePhorge

PHP 8.1 "strlen(null)" exception blocks rendering a project's page when Reports prototype enabled
Closed, ResolvedPublic

Description

  1. PHP 8.2.5; Phorge at 651e3f7263b58e46cd65285cce7ba266af480aef
  2. Have an existing project already created
  3. Go to http://phorge.localhost/project/view/1/ - works.
  4. Run ./bin/config set phabricator.show-prototypes true in terminal
  5. Go to http://phorge.localhost/project/view/1/
[2023-05-06 13:28:34] EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261]
arcanist(head=renderDashboardTabPanelContent, ref.master=d47289622650, ref.renderDashboardTabPanelContent=d47289622650), phorge(head=projViewReportsProtoEnabled, ref.master=651e3f7263b5, ref.projViewReportsProtoEnabled=651e3f7263b5)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/applications/project/menuitem/PhabricatorProjectReportsProfileMenuItem.php:49]
  #1 <#2> PhabricatorProjectReportsProfileMenuItem::getDisplayName(PhabricatorProfileMenuItemConfiguration) called at [<phorge>/src/applications/project/menuitem/PhabricatorProjectReportsProfileMenuItem.php:73]
  #2 <#2> PhabricatorProjectReportsProfileMenuItem::newMenuItemViewList(PhabricatorProfileMenuItemConfiguration) called at [<phorge>/src/applications/search/menuitem/PhabricatorProfileMenuItem.php:77]
  #3 <#2> PhabricatorProfileMenuItem::getMenuItemViewList(PhabricatorProfileMenuItemConfiguration) called at [<phorge>/src/applications/search/storage/PhabricatorProfileMenuItemConfiguration.php:129]
  #4 <#2> PhabricatorProfileMenuItemConfiguration::getMenuItemViewList() called at [<phorge>/src/applications/search/engine/PhabricatorProfileMenuEngine.php:1293]
  #5 <#2> PhabricatorProfileMenuEngine::newProfileMenuItemViewList() called at [<phorge>/src/applications/project/controller/PhabricatorProjectController.php:212]
  #6 <#2> PhabricatorProjectController::newNavigation(PhabricatorProject, string) called at [<phorge>/src/applications/project/controller/PhabricatorProjectBoardViewController.php:335]
  #7 <#2> PhabricatorProjectBoardViewController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/AphrontController.php:71]
  #8 <#2> AphrontController::delegateToController(PhabricatorProjectBoardViewController) called at [<phorge>/src/applications/project/controller/PhabricatorProjectViewController.php:45]
  #9 <#2> PhabricatorProjectViewController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284]
  #10 phlog(RuntimeException) called at [<phorge>/src/aphront/handler/PhabricatorDefaultRequestExceptionHandler.php:41]
  #11 PhabricatorDefaultRequestExceptionHandler::handleRequestThrowable(AphrontRequest, RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:751]
  #12 AphrontApplicationConfiguration::handleThrowable(RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:296]
  #13 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203]
  #14 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]

Fix that exception; afterwards page gets rendered in web browser.