Page MenuHomePhorge

Fix PHP 8.1 "strlen(null)" exceptions which block rendering Log In page after user logout
ClosedPublic

Authored by aklapper on May 10 2023, 18:32.
Tags
None
Referenced Files
F3761123: D25217.1745830586.diff
Sun, Apr 27, 08:56
F3673493: D25217.1745475112.diff
Wed, Apr 23, 06:11
F3604431: D25217.1745196664.diff
Sun, Apr 20, 00:51
F3585599: D25217.1745130137.diff
Sat, Apr 19, 06:22
F3530039: D25217.1744869270.diff
Wed, Apr 16, 05:54
F3527304: D25217.1744839562.diff
Tue, Apr 15, 21:39
F3390548: D25217.1744468870.diff
Fri, Apr 11, 14:41
F3372747: D25217.1744251835.diff
Wed, Apr 9, 02:23

Details

Summary

strlen() was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts phutil_nonempty_string() as a replacement.

Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.

Closes T15384

Test Plan

Applied these four changes; logged in again; logged out again; finally saw "Log In" page with "Username or Email" and "Password" field on /auth/loggedout/ rendered in web browser.

Diff Detail

Repository
rP Phorge
Branch
userLogout (branched from master)
Lint
Lint Passed
Unit
Test Failures
Build Status
Buildable 394
Build 394: arc lint + arc unit

Unit TestsFailed

TimeTest
167 msPhabricatorAuthPasswordTestCase::testPasswordEngine
EXCEPTION (RuntimeException): Implicit conversion from float 178.5 to int loses precision #0 /var/www/html/phorge/phorge/src/applications/files/builtin/PhabricatorFilesComposeAvatarBuiltinFile.php(192): PhutilErrorHandler::handleError(8192, '...', '...', 192) #1 /var/www/html/phorge/phorge/src/applications/files/builtin/PhabricatorFilesComposeAvatarBuiltinFile.php(148): PhabricatorFilesComposeAvatarBuiltinFile::rgba2gd(Array)
192 msPhabricatorAuthPasswordTestCase::testPasswordUpgrade
EXCEPTION (RuntimeException): Implicit conversion from float 178.5 to int loses precision #0 /var/www/html/phorge/phorge/src/applications/files/builtin/PhabricatorFilesComposeAvatarBuiltinFile.php(192): PhutilErrorHandler::handleError(8192, '...', '...', 192) #1 /var/www/html/phorge/phorge/src/applications/files/builtin/PhabricatorFilesComposeAvatarBuiltinFile.php(148): PhabricatorFilesComposeAvatarBuiltinFile::rgba2gd(Array)
102 msPhabricatorAuthSSHKeyTestCase::testRevokeSSHKey
EXCEPTION (RuntimeException): Implicit conversion from float 178.5 to int loses precision #0 /var/www/html/phorge/phorge/src/applications/files/builtin/PhabricatorFilesComposeAvatarBuiltinFile.php(192): PhutilErrorHandler::handleError(8192, '...', '...', 192) #1 /var/www/html/phorge/phorge/src/applications/files/builtin/PhabricatorFilesComposeAvatarBuiltinFile.php(148): PhabricatorFilesComposeAvatarBuiltinFile::rgba2gd(Array)
379 msPhabricatorAuthPasswordTestCase::testCompare
2 assertions passed.
22 msPhabricatorAuthPasswordTestCase::testPasswordBlocklisting
15 assertions passed.
View Full Test Results (3 Failed · 9 Passed)