Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

History not working in Silverstipe 4.11 CMS with GraphQL 4 and PHP 8.1 #2750

Closed
micobarac opened this issue Jul 11, 2022 · 8 comments
Closed

Comments

@micobarac
Copy link

micobarac commented Jul 11, 2022

Request:

URL: POST http://localhost/silverstripe/admin/graphql

Payload:

{"operationName":"ReadHistoryViewerPage","variables":{"limit":30,"offset":0,"page_id":1},"query":"query ReadHistoryViewerPage($page_id: ID!, $limit: Int!, $offset: Int!) {\n  readOnePage(versioning: {mode: ALL_VERSIONS}, filter: {id: {eq: $page_id}}) {\n    id\n    versions(limit: $limit, offset: $offset, sort: {version: DESC}) {\n      pageInfo {\n        totalCount\n        __typename\n      }\n      nodes {\n        version\n        absoluteLink\n        author {\n          firstName\n          surname\n          __typename\n        }\n        publisher {\n          firstName\n          surname\n          __typename\n        }\n        deleted\n        draft\n        published\n        liveVersion\n        latestDraftVersion\n        lastEdited\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n}\n"}

Response:

Status: [HTTP/1.1 500 Internal Server Error]

Error: [Network error]: ServerParseError: JSON.parse: unexpected character at line 1 column 1 of the JSON data [bundle.js:1:6732](http://localhost/silverstripe/_resources/vendor/silverstripe/admin/client/dist/js/bundle.js?m=1655944491)

[Deprecated] strtolower(): Passing null to parameter #1 ($string) of type string is deprecated

Line 164 in /Users/***/Sites/silverstripe/vendor/silverstripe/framework/src/Core/CustomMethods.php

Source:

155      * @return array List of custom method details, if defined for this method
156      */
157     protected function getExtraMethodConfig($method)
158     {
159         // Lazy define methods
160         if (!isset(self::$extra_methods[static::class])) {
161             $this->defineMethods();
162         }
163 
164         if (isset(self::$extra_methods[static::class][strtolower($method)])) {
165             return self::$extra_methods[static::class][strtolower($method)];
166         }
167         return null;
168     }
169 
170     /**

PRs

@micobarac
Copy link
Author

I believe, this is the solution to the problem (escaping $method parameter):

/Users/***/Sites/silverstripe/vendor/silverstripe/framework/src/Core/CustomMethods.php

    /**
     * Get meta-data details on a named method
     *
     * @param string $method
     * @return array List of custom method details, if defined for this method
     */
    protected function getExtraMethodConfig($method)
    {
        // Lazy define methods
        if (!isset(self::$extra_methods[static::class])) {
            $this->defineMethods();
        }

        if (isset(self::$extra_methods[static::class][strtolower($method ?? '')])) {
            return self::$extra_methods[static::class][strtolower($method ?? '')];
        }
        return null;
    }

@micobarac
Copy link
Author

micobarac commented Jul 11, 2022

Strange enough, the $method parameter is already escaped in the method above:

    /**
     * Return TRUE if a method exists on this object
     *
     * This should be used rather than PHP's inbuild method_exists() as it takes into account methods added via
     * extensions
     *
     * @param string $method
     * @return bool
     */
    public function hasMethod($method)
    {
        return method_exists($this, $method ?? '') || $this->getExtraMethodConfig($method);
    }

@GuySartorelli
Copy link
Member

Looks like the strtolower calls in this class were missed when we did the PHP 8.1 work... but the fact that null is being passed in at all is a bit odd and could point to a wider problem. Would you mind tracing this with a debugger and seeing where the null is coming from? I'm unable to reproduce it locally.

@thats4shaw
Copy link

I've also hit this issue.

I've traced it to the 'lastEdited' field name @GuySartorelli.

Full stack trace:

CustomMethods.php:164, SilverStripe\View\ViewableData->getExtraMethodConfig()
CustomMethods.php:148, SilverStripe\View\ViewableData->hasMethod()
DBDateArgs.php:66, SilverStripe\GraphQL\Schema\DataObject\Plugin\DBFieldArgs\DBDateArgs::resolve()
ComposedResolver.php:51, call_user_func_array:{/vendor/silverstripe/graphql/src/Schema/Resolver/ComposedResolver.php:51}()
ComposedResolver.php:51, SilverStripe\GraphQL\Schema\Resolver\ComposedResolver->SilverStripe\GraphQL\Schema\Resolver\{closure:/vendor/silverstripe/graphql/src/Schema/Resolver/ComposedResolver.php:35-62}()
ReferenceExecutor.php:623, GraphQL\Executor\ReferenceExecutor->resolveFieldValueOrError()
ReferenceExecutor.php:550, GraphQL\Executor\ReferenceExecutor->resolveField()
ReferenceExecutor.php:1195, GraphQL\Executor\ReferenceExecutor->executeFields()
ReferenceExecutor.php:1145, GraphQL\Executor\ReferenceExecutor->collectAndExecuteSubfields()
ReferenceExecutor.php:1106, GraphQL\Executor\ReferenceExecutor->completeObjectValue()
ReferenceExecutor.php:793, GraphQL\Executor\ReferenceExecutor->completeValue()
ReferenceExecutor.php:654, GraphQL\Executor\ReferenceExecutor->completeValueCatchingError()
ReferenceExecutor.php:887, GraphQL\Executor\ReferenceExecutor->completeListValue()
ReferenceExecutor.php:761, GraphQL\Executor\ReferenceExecutor->completeValue()
ReferenceExecutor.php:654, GraphQL\Executor\ReferenceExecutor->completeValueCatchingError()
ReferenceExecutor.php:557, GraphQL\Executor\ReferenceExecutor->resolveField()
ReferenceExecutor.php:1195, GraphQL\Executor\ReferenceExecutor->executeFields()
ReferenceExecutor.php:1145, GraphQL\Executor\ReferenceExecutor->collectAndExecuteSubfields()
ReferenceExecutor.php:1106, GraphQL\Executor\ReferenceExecutor->completeObjectValue()
ReferenceExecutor.php:793, GraphQL\Executor\ReferenceExecutor->completeValue()
ReferenceExecutor.php:654, GraphQL\Executor\ReferenceExecutor->completeValueCatchingError()
ReferenceExecutor.php:557, GraphQL\Executor\ReferenceExecutor->resolveField()
ReferenceExecutor.php:1195, GraphQL\Executor\ReferenceExecutor->executeFields()
ReferenceExecutor.php:1145, GraphQL\Executor\ReferenceExecutor->collectAndExecuteSubfields()
ReferenceExecutor.php:1106, GraphQL\Executor\ReferenceExecutor->completeObjectValue()
ReferenceExecutor.php:793, GraphQL\Executor\ReferenceExecutor->completeValue()
ReferenceExecutor.php:654, GraphQL\Executor\ReferenceExecutor->completeValueCatchingError()
ReferenceExecutor.php:557, GraphQL\Executor\ReferenceExecutor->resolveField()
ReferenceExecutor.php:1195, GraphQL\Executor\ReferenceExecutor->executeFields()
ReferenceExecutor.php:264, GraphQL\Executor\ReferenceExecutor->executeOperation()
ReferenceExecutor.php:215, GraphQL\Executor\ReferenceExecutor->doExecute()
Executor.php:156, GraphQL\Executor\Executor::promiseToExecute()
GraphQL.php:162, GraphQL\GraphQL::promiseToExecute()
GraphQL.php:94, GraphQL\GraphQL::executeQuery()
QueryHandler.php:102, SilverStripe\GraphQL\QueryHandler\QueryHandler->SilverStripe\GraphQL\QueryHandler\{closure:/vendor/silverstripe/graphql/src/QueryHandler/QueryHandler.php:101-103}()
HTTPMethodMiddleware.php:38, SilverStripe\GraphQL\Middleware\HTTPMethodMiddleware->process()
QueryHandler.php:241, SilverStripe\GraphQL\QueryHandler\QueryHandler->SilverStripe\GraphQL\QueryHandler\{closure:/vendor/silverstripe/graphql/src/QueryHandler/QueryHandler.php:240-242}()
CSRFMiddleware.php:35, SilverStripe\GraphQL\Middleware\CSRFMiddleware->process()
QueryHandler.php:241, SilverStripe\GraphQL\QueryHandler\QueryHandler->SilverStripe\GraphQL\QueryHandler\{closure:/vendor/silverstripe/graphql/src/QueryHandler/QueryHandler.php:240-242}()
QueryHandler.php:245, SilverStripe\GraphQL\QueryHandler\QueryHandler->callMiddleware()
QueryHandler.php:105, SilverStripe\GraphQL\QueryHandler\QueryHandler->queryAndReturnResult()
QueryHandler.php:80, SilverStripe\GraphQL\QueryHandler\QueryHandler->query()
Controller.php:118, SilverStripe\GraphQL\Controller->index()
RequestHandler.php:323, SilverStripe\Control\RequestHandler->handleAction()
Controller.php:286, SilverStripe\Control\Controller->handleAction()
RequestHandler.php:202, SilverStripe\Control\RequestHandler->handleRequest()
Controller.php:212, SilverStripe\Control\Controller->handleRequest()
Director.php:360, SilverStripe\Control\Director->SilverStripe\Control\{closure:/vendor/silverstripe/framework/src/Control/Director.php:356-364}()
VersionedHTTPMiddleware.php:41, SilverStripe\Versioned\VersionedHTTPMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
LoginSessionMiddleware.php:53, SilverStripe\SessionManager\Middleware\LoginSessionMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
ExecMetricMiddleware.php:20, SilverStripe\Control\Middleware\ExecMetricMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
ConfirmationMiddleware.php:254, SilverStripe\Control\Middleware\ConfirmationMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
ConfirmationMiddleware.php:254, SilverStripe\Control\Middleware\ConfirmationMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
PasswordExpirationMiddleware.php:84, SilverStripe\Security\PasswordExpirationMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
BasicAuthMiddleware.php:68, SilverStripe\Security\BasicAuthMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
AuthenticationMiddleware.php:61, SilverStripe\Security\AuthenticationMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
TrailingSlashRedirector.php:114, Axllent\TrailingSlash\Middleware\TrailingSlashRedirector->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
CanonicalURLMiddleware.php:190, SilverStripe\Control\Middleware\CanonicalURLMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
HTTPCacheControlMiddleware.php:42, SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
ChangeDetectionMiddleware.php:28, SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
FlushMiddleware.php:27, SilverStripe\Control\Middleware\FlushMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
RequestProcessor.php:66, SilverStripe\Control\RequestProcessor->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
SessionMiddleware.php:20, SilverStripe\Control\Middleware\SessionMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
AllowedHostsMiddleware.php:60, SilverStripe\Control\Middleware\AllowedHostsMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
TrustedProxyMiddleware.php:176, SilverStripe\Control\Middleware\TrustedProxyMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
HTTPMiddlewareAware.php:65, SilverStripe\Control\Director->callMiddleware()
Director.php:369, SilverStripe\Control\Director->handleRequest()
HTTPApplication.php:117, SilverStripe\Control\HTTPApplication::SilverStripe\Control\{closure:/vendor/silverstripe/framework/src/Control/HTTPApplication.php:116-118}()
HTTPApplication.php:136, call_user_func:{/vendor/silverstripe/framework/src/Control/HTTPApplication.php:136}()
HTTPApplication.php:136, SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure:/vendor/silverstripe/framework/src/Control/HTTPApplication.php:133-137}()
ErrorControlChainMiddleware.php:67, call_user_func:{/vendor/silverstripe/framework/src/Core/Startup/ErrorControlChainMiddleware.php:67}()
ErrorControlChainMiddleware.php:67, SilverStripe\Core\Startup\ErrorControlChainMiddleware->process()
HTTPMiddlewareAware.php:62, SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure:/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php:61-63}()
HTTPMiddlewareAware.php:65, SilverStripe\Control\HTTPApplication->callMiddleware()
HTTPApplication.php:137, SilverStripe\Control\HTTPApplication->execute()
HTTPApplication.php:116, SilverStripe\Control\HTTPApplication->handle()
index.php:26, {main}()

@GuySartorelli
Copy link
Member

GuySartorelli commented Jul 17, 2022

@thats4shaw are you able to give me some steps which would let me reproduce the issue from a fresh install? That would be a big help.

@thats4shaw
Copy link

@GuySartorelli just gave it a try on a nudge on a complete fresh install and got the same behaviour as the 2 existing projects I've upgraded to 8.1 in the past week. Literally just loading up the site and visiting the history tab of the home page after composer create-project silverstripe/installer test is the only steps needed for me.

Running PHP 8.1.8 .

bramus/ansi-php                       3.1      ANSI Control Functions and ANSI Control Sequences (Colors, Erasing, etc.) for PHP CLI Apps
bramus/monolog-colored-line-formatter 2.0.3    Colored Line Formatter for Monolog
composer/ca-bundle                    1.3.2    Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.
composer/installers                   v1.12.0  A multi-framework Composer library installer
composer/semver                       3.3.2    Semver library that offers utilities, version constraint parsing and validation.
doctrine/instantiator                 1.4.1    A small, lightweight utility to instantiate objects in PHP without invoking their constructors
doctrine/lexer                        1.2.3    PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
egulias/email-validator               3.2.1    A library for validating emails against several RFCs
embed/embed                           v4.4.4   PHP library to retrieve page info using oembed, opengraph, etc
guzzlehttp/guzzle                     7.4.5    Guzzle is a PHP HTTP client library
guzzlehttp/promises                   1.5.1    Guzzle promises library
guzzlehttp/psr7                       2.4.0    PSR-7 message implementation that also provides common utility methods
intervention/image                    2.7.2    Image handling and manipulation library with support for Laravel integration
league/csv                            9.8.0    CSV data manipulation made easy in PHP
league/flysystem                      1.1.9    Filesystem abstraction: Many filesystems, one API.
league/mime-type-detection            1.11.0   Mime-type detection for Flysystem
m1/env                                2.2.0    Env is a lightweight library bringing .env file parser compatibility to PHP. In short - it enables you to read .env files with PHP.
marcj/topsort                         2.0.0    High-Performance TopSort/Dependency resolving algorithm
ml/iri                                1.1.4    IRI handling for PHP
ml/json-ld                            1.2.0    JSON-LD Processor for PHP
monolog/monolog                       1.27.1   Sends your logs to files, sockets, inboxes, databases and various web services
myclabs/deep-copy                     1.11.0   Create deep copies (clones) of your objects
nikic/php-parser                      v4.14.0  A PHP parser written in PHP
oscarotero/html-parser                v0.1.6   Parse html strings to DOMDocument
phar-io/manifest                      2.0.3    Component for reading phar.io manifest information from a PHP Archive (PHAR)
phar-io/version                       3.2.1    Library for handling version information and constraints
phpdocumentor/reflection-common       2.2.0    Common reflection classes used by phpdocumentor to reflect the code structure
phpdocumentor/reflection-docblock     5.3.0    With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.
phpdocumentor/type-resolver           1.6.1    A PSR-5 based resolver of Class names, Types and Structural Element Names
phpspec/prophecy                      v1.15.0  Highly opinionated mocking framework for PHP 5.3+
phpunit/php-code-coverage             9.2.15   Library that provides collection, processing, and rendering functionality for PHP code coverage information.
phpunit/php-file-iterator             3.0.6    FilterIterator implementation that filters files based on a list of suffixes.
phpunit/php-invoker                   3.1.1    Invoke callables with a timeout
phpunit/php-text-template             2.0.4    Simple template engine.
phpunit/php-timer                     5.0.3    Utility class for timing
phpunit/phpunit                       9.5.21   The PHP Unit Testing framework.
psr/cache                             2.0.0    Common interface for caching libraries
psr/container                         1.1.2    Common Container Interface (PHP FIG PSR-11)
psr/event-dispatcher                  1.0.0    Standard interfaces for event handling.
psr/http-client                       1.0.1    Common interface for HTTP clients
psr/http-factory                      1.0.1    Common interfaces for PSR-7 HTTP message factories
psr/http-message                      1.0.1    Common interface for HTTP messages
psr/log                               1.1.4    Common interface for logging libraries
psr/simple-cache                      1.0.1    Common interfaces for simple caching
ralouphie/getallheaders               3.0.3    A polyfill for getallheaders.
sebastian/cli-parser                  1.0.1    Library for parsing CLI options
sebastian/code-unit                   1.0.8    Collection of value objects that represent the PHP code units
sebastian/code-unit-reverse-lookup    2.0.3    Looks up which function or method a line of code belongs to
sebastian/comparator                  4.0.6    Provides the functionality to compare PHP values for equality
sebastian/complexity                  2.0.2    Library for calculating the complexity of PHP code units
sebastian/diff                        4.0.4    Diff implementation
sebastian/environment                 5.1.4    Provides functionality to handle HHVM/PHP environments
sebastian/exporter                    4.0.4    Provides the functionality to export PHP variables for visualization
sebastian/global-state                5.0.5    Snapshotting of global state
sebastian/lines-of-code               1.0.3    Library for counting the lines of code in PHP source code
sebastian/object-enumerator           4.0.4    Traverses array structures and object graphs to enumerate all referenced objects
sebastian/object-reflector            2.0.4    Allows reflection of object attributes, including inherited and non-public ones
sebastian/recursion-context           4.0.4    Provides functionality to recursively process PHP variables
sebastian/resource-operations         3.0.3    Provides a list of PHP built-in functions that operate on resources
sebastian/type                        3.0.0    Collection of value objects that represent the types of the PHP type system
sebastian/version                     3.0.2    Library that helps with managing the version number of Git-hosted PHP projects
silverstripe-themes/simple            3.2.1    The SilverStripe simple theme (default SilverStripe 3 theme)
silverstripe/admin                    1.11.1   SilverStripe admin interface
silverstripe/asset-admin              1.11.1   Asset management for the SilverStripe CMS
silverstripe/assets                   1.11.0   SilverStripe Assets component
silverstripe/campaign-admin           1.11.0   SilverStripe campaign admin interface
silverstripe/cms                      4.11.2   The SilverStripe Content Management System
silverstripe/config                   1.4.0    SilverStripe configuration based on YAML and class statics
silverstripe/errorpage                1.11.0   ErrorPage component for SilverStripe CMS
silverstripe/event-dispatcher         0.1.3    Publish and subscribe to events in Silverstripe CMS or your Silverstripe application
silverstripe/framework                4.11.4   The SilverStripe framework
silverstripe/graphql                  4.0.0    GraphQL server for SilverStripe models and other data
silverstripe/login-forms              4.7.0    A collection of templates for the CMS login screens
silverstripe/mimevalidator            2.4.0    Checks uploaded file content roughly matches a known MIME type for the file extension.
silverstripe/recipe-cms               4.11.0   SilverStripe recipe for fully featured page and asset content editing
silverstripe/recipe-core              4.11.0   SilverStripe framework-only core recipe
silverstripe/recipe-plugin            1.7.0    Helper plugin to install SilverStripe recipes
silverstripe/reports                  4.11.0   Reports module for SilverStripe CMS
silverstripe/session-manager          1.3.0    Allow users to manage and revoke access to multiple login sessions across devices.
silverstripe/siteconfig               4.11.0   Site wide settings administration.
silverstripe/vendor-plugin            1.6.0    Allows vendor modules to expose directories to the webroot
silverstripe/versioned                1.11.0   SilverStripe Versioned component
silverstripe/versioned-admin          1.11.0   SilverStripe versioned admin interface
sminnee/callbacklist                  0.1.1    PHP class that manages a list of callbacks
swiftmailer/swiftmailer               v6.3.0   Swiftmailer, free feature-rich PHP mailer
symfony/cache                         v4.4.43  Provides an extended PSR-6, PSR-16 (and tags) implementation
symfony/cache-contracts               v2.5.2   Generic abstractions related to caching
symfony/config                        v4.4.42  Helps you find, load, combine, autofill and validate configuration values of any kind
symfony/deprecation-contracts         v3.1.1   A generic function and convention to trigger deprecation notices
symfony/event-dispatcher              v5.4.9   Provides tools that allow your application components to communicate with each other by dispatching events and listening to them
symfony/event-dispatcher-contracts    v3.1.1   Generic abstractions related to dispatching event
symfony/filesystem                    v5.4.9   Provides basic utilities for the filesystem
symfony/finder                        v4.4.41  Finds files and directories via an intuitive fluent interface
symfony/polyfill-ctype                v1.26.0  Symfony polyfill for ctype functions
symfony/polyfill-iconv                v1.26.0  Symfony polyfill for the Iconv extension
symfony/polyfill-intl-idn             v1.26.0  Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions
symfony/polyfill-intl-normalizer      v1.26.0  Symfony polyfill for intl's Normalizer class and related functions
symfony/polyfill-mbstring             v1.26.0  Symfony polyfill for the Mbstring extension
symfony/polyfill-php72                v1.26.0  Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions
symfony/polyfill-php73                v1.26.0  Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions
symfony/polyfill-php80                v1.26.0  Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions
symfony/polyfill-php81                v1.26.0  Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions
symfony/service-contracts             v2.5.2   Generic abstractions related to writing services
symfony/translation                   v4.4.41  Provides tools to internationalize your application
symfony/translation-contracts         v2.5.2   Generic abstractions related to translation
symfony/var-exporter                  v5.4.10  Allows exporting any serializable PHP data structure to plain PHP code
symfony/yaml                          v4.4.43  Loads and dumps YAML files
theseer/tokenizer                     1.2.1    A small library for converting tokenized PHP source code into XML and potentially other formats
ua-parser/uap-php                     v3.9.14  A multi-language port of Browserscope's user agent parser.
webmozart/assert                      1.11.0   Assertions to validate method input/output with nice error messages.
webonyx/graphql-php                   v14.11.6 A PHP port of GraphQL reference implementation

@emteknetnz
Copy link
Member

Created a simple PR to fix silverstripe/silverstripe-framework#10417

@emteknetnz
Copy link
Member

Linked PR has been merged and released in framework 4.11.5

Please update your version of framework and let us know on this issue if this did not solve the reported issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants