Skip to content

Incompatible with PHP 8.4 (occasional fatal error) #248

@indigoxela

Description

@indigoxela

On PHP 8.4, whenever flushing caches, I get a fatal error:

Error: Class "RulesEventSet" not found in rules_get_cache() (line 418 of .../modules/rules/rules.module).

Switching back to PHP 8.1 and the site works again, another try with 8.4 and flushing caches - another fatal.

Edit: However, above fatal is tricky to reproduce. If it happens, it happens constantly, if not ... everything works as expected.
Unclear, what's going on there.

Additionally, there a several deprecation notices (if commenting out the line that causes the fatal):

    Deprecated function: rules_log(): Implicitly marking parameter $element as nullable is deprecated, the explicit nullable type must be used instead in include_once() (line 1595 of ...core/includes/bootstrap.inc).
    Deprecated function: rules_get_event_handler(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in include_once() (line 1595 of ...core/includes/bootstrap.inc).
    Deprecated function: rules_log(): Implicitly marking parameter $element as nullable is deprecated, the explicit nullable type must be used instead in include_once() (line 1595 of ...core/includes/bootstrap.inc).
    Deprecated function: rules_get_event_handler(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in include_once() (line 1595 of ...core/includes/bootstrap.inc).
    Deprecated function: RulesAction::executeCallback(): Implicitly marking parameter $state as nullable is deprecated, the explicit nullable type must be used instead in require_once() (line 4157 of ...core/includes/bootstrap.inc).
    Deprecated function: RulesCondition::executeCallback(): Implicitly marking parameter $state as nullable is deprecated, the explicit nullable type must be used instead in require_once() (line 4157 of ...core/includes/bootstrap.inc).
    Deprecated function: RulesReactionRule::event(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in require_once() (line 4157 of ...core/includes/bootstrap.inc).
    Deprecated function: RulesPluginUI::path(): Implicitly marking parameter $element as nullable is deprecated, the explicit nullable type must be used instead in require_once() (line 4157 of ...core/includes/bootstrap.inc).

In order to actually trigger the fatal, it might be necessary to add a rule on event Backdrop is initializing - the fatal also occurs, if the rule is inactive (disabled), though.

The deprecation nagging's reproducible reliably, so let's fix these.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions