Page MenuHomePhorge

PHP 8.1 "strlen(null)" exceptions block rendering page to import ICS calendar file
Closed, ResolvedPublic

Description

  1. PHP 8.2.5; Phorge at e9e2c954132cf9d548e0ac9eb7f75c88f8308c8d
  2. ./bin/config set phabricator.show-prototypes true
  3. Go to http://phorge.localhost/calendar/
  4. Select Import/Export > Imports in the sidebar
  5. Select Import Events in upper right corner to go to http://phorge.localhost/calendar/import/edit/
  6. Set Import .ics File as Import Type
  7. Select Continue button
[2023-05-06 22:42:21] 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=master, ref.master=e9e2c954132c)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/applications/calendar/import/PhabricatorCalendarICSFileImportEngine.php:59]
  #1 <#2> PhabricatorCalendarICSFileImportEngine::getDisplayName(PhabricatorCalendarImport) called at [<phorge>/src/applications/calendar/storage/PhabricatorCalendarImport.php:94]
  #2 <#2> PhabricatorCalendarImport::getDisplayName() called at [<phorge>/src/applications/calendar/editor/PhabricatorCalendarImportEditEngine.php:101]
  #3 <#2> PhabricatorCalendarImportEditEngine::buildCustomEditFields(PhabricatorCalendarImport) called at [<phorge>/src/applications/transactions/editengine/PhabricatorEditEngine.php:152]
  #4 <#2> PhabricatorEditEngine::buildEditFields(PhabricatorCalendarImport) called at [<phorge>/src/applications/transactions/editengine/PhabricatorEditEngine.php:1038]
  #5 <#2> PhabricatorEditEngine::buildEditResponse(PhabricatorCalendarImport) called at [<phorge>/src/applications/transactions/editengine/PhabricatorEditEngine.php:1000]
  #6 <#2> PhabricatorEditEngine::buildResponse() called at [<phorge>/src/applications/calendar/controller/PhabricatorCalendarImportEditController.php:42]
  #7 <#2> PhabricatorCalendarImportEditController::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:203]
  #12 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]
  1. Fix exception; get Create Import page rendered.
  2. Enter no data but click `Create New Import button.
[2023-05-06 22:45:09] 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=importICScal, ref.master=e9e2c954132c, ref.importICScal=e9e2c954132c)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/applications/calendar/xaction/PhabricatorCalendarImportICSFileTransaction.php:56]
  #1 <#2> PhabricatorCalendarImportICSFileTransaction::validateTransactions(PhabricatorCalendarImport, array) called at [<phorge>/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php:2871]
  #2 <#2> PhabricatorApplicationTransactionEditor::validateTransaction(PhabricatorCalendarImport, string, array) called at [<phorge>/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php:1234]
  #3 <#2> PhabricatorApplicationTransactionEditor::applyTransactions(PhabricatorCalendarImport, array) called at [<phorge>/src/applications/transactions/editengine/PhabricatorEditEngine.php:1149]
  #4 <#2> PhabricatorEditEngine::buildEditResponse(PhabricatorCalendarImport) called at [<phorge>/src/applications/transactions/editengine/PhabricatorEditEngine.php:1000]
  #5 <#2> PhabricatorEditEngine::buildResponse() called at [<phorge>/src/applications/calendar/controller/PhabricatorCalendarImportEditController.php:42]
  #6 <#2> PhabricatorCalendarImportEditController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284]
  #7 phlog(RuntimeException) called at [<phorge>/src/aphront/handler/PhabricatorDefaultRequestExceptionHandler.php:41]
  #8 PhabricatorDefaultRequestExceptionHandler::handleRequestThrowable(AphrontRequest, RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:751]
  #9 AphrontApplicationConfiguration::handleThrowable(RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:296]
  #10 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203]
  #11 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]
  1. After fixing that error, Create Import page correctly renders two error messages:
    • You must select an ".ics" file to import.
    • You can not attach an ICS URI to an import type other than an ICS URI import (type is "icsfile").