Page MenuHomePhorge

PHP 8.1 "strlen(null)" exceptions block creating a project with an empty Description field
Closed, ResolvedPublic

Description

  1. PHP 8.1.8, fresh installation
  2. Go to http://phorge.localhost/project/
  3. Select Create Project in upper right corner to go to http://phorge.localhost/project/edit/form/default/
  4. Enter name in Name field
  5. Leave Description field empty
[2023-05-02 19:09:09] EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261]
arcanist(head=master, ref.master=82d1abd4edd1), phorge(head=master, ref.master=8f669ea08289)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<arcanist>/src/utils/utils.php:911]
  #1 <#2> phutil_split_lines(NULL, boolean) called at [<phorge>/src/infrastructure/markup/remarkup/PhutilRemarkupEngine.php:160]
  #2 <#2> PhutilRemarkupEngine::splitTextIntoBlocks(NULL) called at [<phorge>/src/infrastructure/markup/remarkup/PhutilRemarkupEngine.php:136]
  #3 <#2> PhutilRemarkupEngine::preprocessText(NULL) called at [<phorge>/src/infrastructure/markup/remarkup/PhutilRemarkupEngine.php:106]
  #4 <#2> PhutilRemarkupEngine::markupText(NULL) called at [<phorge>/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php:2366]
  #5 <#2> PhabricatorApplicationTransactionEditor::expandRemarkupBlockTransactions(PhabricatorProject, array, array, PhutilRemarkupEngine) called at [<phorge>/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php:2234]
  #6 <#2> PhabricatorApplicationTransactionEditor::expandSupportTransactions(PhabricatorProject, array) called at [<phorge>/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php:1222]
  #7 <#2> PhabricatorApplicationTransactionEditor::applyTransactions(PhabricatorProject, array) called at [<phorge>/src/applications/transactions/editengine/PhabricatorEditEngine.php:1149]
  #8 <#2> PhabricatorEditEngine::buildEditResponse(PhabricatorProject) called at [<phorge>/src/applications/transactions/editengine/PhabricatorEditEngine.php:1000]
  #9 <#2> PhabricatorEditEngine::buildResponse() called at [<phorge>/src/applications/project/controller/PhabricatorProjectEditController.php:91]
  #10 <#2> PhabricatorProjectEditController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284]
  #11 phlog(RuntimeException) called at [<phorge>/src/aphront/handler/PhabricatorDefaultRequestExceptionHandler.php:41]
  #12 PhabricatorDefaultRequestExceptionHandler::handleRequestThrowable(AphrontRequest, RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:751]
  #13 AphrontApplicationConfiguration::handleThrowable(RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:296]
  #14 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:204]
  #15 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]

Fix that line, get next exception:

[2023-05-02 19:10:44] EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261]
arcanist(head=emptyProjDesc, ref.master=82d1abd4edd1, ref.emptyProjDesc=82d1abd4edd1), phorge(head=master, ref.master=8f669ea08289)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldRemarkup.php:33]
  #1 <#2> PhabricatorStandardCustomFieldRemarkup::renderPropertyViewValue(array) called at [<phorge>/src/infrastructure/customfield/field/PhabricatorCustomField.php:1301]
  #2 <#2> PhabricatorCustomField::renderPropertyViewValue(array) called at [<phorge>/src/infrastructure/customfield/field/PhabricatorCustomFieldList.php:159]
  #3 <#2> PhabricatorCustomFieldList::appendFieldsToPropertyList(PhabricatorProject, PhabricatorUser, PHUIPropertyListView) called at [<phorge>/src/applications/project/controller/PhabricatorProjectManageController.php:152]
  #4 <#2> PhabricatorProjectManageController::buildPropertyListView(PhabricatorProject) called at [<phorge>/src/applications/project/controller/PhabricatorProjectManageController.php:33]
  #5 <#2> PhabricatorProjectManageController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/AphrontController.php:71]
  #6 <#2> AphrontController::delegateToController(PhabricatorProjectManageController) called at [<phorge>/src/applications/project/controller/PhabricatorProjectViewController.php:45]
  #7 <#2> PhabricatorProjectViewController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284]
  #8 phlog(RuntimeException) called at [<phorge>/src/aphront/handler/PhabricatorDefaultRequestExceptionHandler.php:41]
  #9 PhabricatorDefaultRequestExceptionHandler::handleRequestThrowable(AphrontRequest, RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:751]
  #10 AphrontApplicationConfiguration::handleThrowable(RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:296]
  #11 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:204]
  #12 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]

After fixing that line, page http://phorge.localhost/project/view/1/ gets rendered in web browser.

This issue does not happen when filling in the Description field.