Page MenuHomePhorge

PHP 8.1 "strlen(null)" exception rendering AphrontStackTraceView
Closed, ResolvedPublic

Description

  1. PHP 8.3.9; Phorge at 1b5d2f83c3aa03dada5cbed4a18d341733348425
  2. Intentionally bug Phorge with an Array to string conversion by applying the following code change:
diff --git a/src/applications/settings/panel/PhabricatorEmailPreferencesSettingsPanel.php b/src/applications/settings/panel/PhabricatorEmailPreferencesSettingsPanel.php
index 50d64072f5..3705ce4e7f 100644
--- a/src/applications/settings/panel/PhabricatorEmailPreferencesSettingsPanel.php
+++ b/src/applications/settings/panel/PhabricatorEmailPreferencesSettingsPanel.php
@@ -60,7 +60,7 @@ final class PhabricatorEmailPreferencesSettingsPanel
 
     $mailtags = $preferences->getSettingValue(
       PhabricatorEmailTagsSetting::SETTINGKEY);
-
+phlog(pht('intentionally buggy %s', $mailtags));
     $form = id(new AphrontFormView())
       ->setUser($viewer);
  1. Go to http://phorge.localhost/settings/user/testadmin/page/emailpreferences/ and check the resulting stacktrace:
ERROR 8192: file_exists(): Passing null to parameter #1 ($filename) of type string is deprecated at [/var/www/html/phorge/arcanist/src/filesystem/Filesystem.php:1068]; 
arcanist(head=master, ref.master=331b255b1508), ava(head=wmf/stable, ref.master=d3f5a1c67bb4, ref.wmf/stable=0b414fb56fe3), phorge(head=master, ref.master=1b5d2f83c3aa), translations(head=wmf/stable, ref.master=09fe573a932a, ref.wmf/stable=22bfc12ddd7e); 
  #0 file_exists(NULL) called at [<arcanist>/src/filesystem/Filesystem.php:1068]; 
  #1 Filesystem::pathExists(NULL) called at [<arcanist>/src/filesystem/Filesystem.php:1180]; 
  #2 Filesystem::assertExists(NULL) called at [<arcanist>/src/filesystem/Filesystem.php:1020]; 
  #3 Filesystem::isDescendant(NULL, string) called at [<phorge>/src/view/widget/AphrontStackTraceView.php:33]; 
  #4 AphrontStackTraceView::render() called at [<phorge>/src/view/AphrontView.php:222]; 
  #5 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115]; 
  #6 phutil_escape_html(AphrontStackTraceView) called at [<phorge>/src/infrastructure/markup/render.php:139]; 
  #7 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:97]; 
  #8 phutil_tag(string, array, array) called at [<phorge>/src/aphront/handler/PhabricatorDefaultRequestExceptionHandler.php:62]; 
  #9 PhabricatorDefaultRequestExceptionHandler::handleRequestThrowable(AphrontRequest, RuntimeException) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:752]; 
  #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]

Related Objects

View Standalone Graph
This task is connected to more than 200 other tasks. Only direct parents and subtasks are shown here. Use View Standalone Graph to show more of the graph.