To ensure compatibility of PHP code with PHP 8.x
There's some breaking changes in 8.1 and 8.2.
To ensure compatibility of PHP code with PHP 8.x
There's some breaking changes in 8.1 and 8.2.
Looking at src/applications/repository/storage/PhabricatorRepository.php I see stuff like $has_shortname = ($this->getRepositorySlug() !== null); so it seems that a repository "slug" is what the UI calls a "short name". That's also seconded by code in DiffusionRepositoryEditEngine.
Copying from Q182:
PhabricatorEditorURIEngine.php:283, occurrences: 4 preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated arcanist(head=stable, ref.master=989690868513, ref.stable=05abd055019c), libphremoteuser(head=clarion, ref.master=944307decd9c, ref.clarion=d0da6c048bd5), phorge(head=stable, custom=4), translations(head=wmf/stable, ref.wmf/stable=76bb64361cec) #0 preg_replace(string, string, NULL) called at [<phorge>/src/infrastructure/editor/PhabricatorEditorURIEngine.php:283] #1 PhabricatorEditorURIEngine::escapeToken(NULL) called at [<phorge>/src/infrastructure/editor/PhabricatorEditorURIEngine.php:144] #2 PhabricatorEditorURIEngine::newURITokensForRepository() called at [<phorge>/src/infrastructure/editor/PhabricatorEditorURIEngine.php:128] #3 PhabricatorEditorURIEngine::getURITokensForRepository(string) called at [<phorge>/src/infrastructure/editor/PhabricatorEditorURIEngine.php:84] #4 PhabricatorEditorURIEngine::getURITokensForPath(string) called at [<phorge>/src/applications/differential/view/DifferentialChangesetDetailView.php:371] #5 DifferentialChangesetDetailView::getEditorURITemplate() called at [<phorge>/src/applications/differential/view/DifferentialChangesetDetailView.php:272] #6 DifferentialChangesetDetailView::render() called at [<phorge>/src/applications/differential/view/DifferentialChangesetListView.php:240] #7 DifferentialChangesetListView::render() called at [<phorge>/src/view/AphrontView.php:222] #8 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115] #9 phutil_escape_html(DifferentialChangesetListView) called at [<phorge>/src/infrastructure/markup/render.php:139] #10 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:139] #11 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:97] #12 phutil_tag(string, array, array) called at [<phorge>/src/view/phui/PHUITwoColumnView.php:236] #13 PHUITwoColumnView::buildFooter() called at [<phorge>/src/view/phui/PHUITwoColumnView.php:123] #14 PHUITwoColumnView::getTagContent() called at [<phorge>/src/view/AphrontTagView.php:161] #15 AphrontTagView::render() called at [<phorge>/src/view/AphrontView.php:222] #16 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115] #17 phutil_escape_html(PHUITwoColumnView) called at [<phorge>/src/infrastructure/markup/render.php:139] #18 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:139] #19 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:97] #20 phutil_tag(string, array, array) called at [<phorge>/src/view/formation/PHUIFormationContentView.php:13] #21 PHUIFormationContentView::render() called at [<phorge>/src/view/AphrontView.php:222] #22 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115] #23 phutil_escape_html(PHUIFormationContentView) called at [<phorge>/src/infrastructure/markup/render.php:139] #24 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:97] #25 phutil_tag(string, array, array) called at [<phorge>/src/view/formation/PHUIFormationView.php:58] #26 PHUIFormationView::render() called at [<phorge>/src/view/AphrontView.php:222] #27 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115] #28 phutil_escape_html(PHUIFormationView) called at [<phorge>/src/infrastructure/markup/render.php:171] #29 phutil_implode_html(string, array) called at [<phorge>/src/view/page/PhabricatorBarePageView.php:58] #30 PhabricatorBarePageView::willRenderPage() called at [<phorge>/src/view/page/PhabricatorStandardPageView.php:217] #31 PhabricatorStandardPageView::willRenderPage() called at [<phorge>/src/view/page/AphrontPageView.php:46] #32 AphrontPageView::render() called at [<phorge>/src/view/page/PhabricatorStandardPageView.php:918] #33 PhabricatorStandardPageView::produceAphrontResponse() called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:724] #34 AphrontApplicationConfiguration::produceResponse(AphrontRequest, PhabricatorStandardPageView) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:299] #35 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203] #36 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]
If I guess correctly, isNewObject is automatically guessed correctly, so, the root problem is probably here:
Can you discover what's happening here? In theory the editor should detect isNewObject.
getIsCreateTransaction() should return true here but it doesn't.
I believe that this underlying problem can also trigger an exception, see https://phabricator.wikimedia.org/T361459
Yet another one strlen(null)...
Thanks. I pinpoint also here your super-relevant extra details: https://we.phorge.it/D25887#26924
Can confirm that this appears on all commands rather than just unit, so have renamed the task accordingly.
@mturdus: Could you land this one please, or would you like any help? Thanks!
Patch based on my understanding of taavi's comments in T15963 (as I fail to set up an LDAP server locally):
diff --git a/src/applications/auth/adapter/PhutilLDAPAuthAdapter.php b/src/applications/auth/adapter/PhutilLDAPAuthAdapter.php index 14047c1761..e25659a4aa 100644 --- a/src/applications/auth/adapter/PhutilLDAPAuthAdapter.php +++ b/src/applications/auth/adapter/PhutilLDAPAuthAdapter.php @@ -305,7 +305,16 @@ final class PhutilLDAPAuthAdapter extends PhutilAuthAdapter { 'port' => $this->port, ));
Done. Thank you for your tips!
@xtex: Hi, would you like to arc land your patch? Or do you need any help? Thanks!