Page 1 of 1

PHP 8 TypeError in email_store() when submitting new issue

Posted: 25 Feb 2026, 21:10
by satu
Environment:
- Application: MantisBT 2.28.0
- PHP version: 8.x
- Deployment: Native WebStation (Synology DSM 7.3.2)

Issue Description:
- When creating a new issue, MantisBT displayed:
INTERNAL APPLICATION ERROR
- No email was generated and no record was inserted into mantis_email_table for the "Issue reported" notification.

Bugnote notifications worked correctly.

Error Message:
email_store(): Argument #4 ($p_headers) must be of type array, null given,
called in core/email_api.php on line 1807

Root Cause

In the email_bug_info_to_one_user() function, the call to:

Code: Select all

email_store( $t_user_email, $t_subject, $t_message, $t_mail_headers );
passed null as the 4th argument ($p_headers) under certain conditions.

The email_store() function signature enforces:

array $p_headers = []

Under PHP 8, passing null to a strictly typed array parameter results in a TypeError, which terminates execution before the email queue insert occurs.

This behavior is stricter in PHP 8 compared to PHP 7.

Fix Implemented

The call was modified to guarantee that the 4th parameter is always an array:

Code: Select all

$t_id = email_store(
    $t_user_email,
    $t_subject,
    $t_message,
    $t_mail_headers ?? []
);
This ensures PHP 8 type compliance even if $t_mail_headers becomes null.

Result

New issue notifications are now correctly inserted into mantis_email_table.

No more internal application error.

Fully compatible with PHP 8 strict type enforcement.

Impact

This fix resolves a PHP 8 compatibility issue affecting only the "new issue" notification path.
Bugnote notifications were not affected.

Re: PHP 8 TypeError in email_store() when submitting new issue

Posted: 25 Feb 2026, 23:33
by atrol
satu wrote: 25 Feb 2026, 21:10 In the email_bug_info_to_one_user() function, the call to:

Code: Select all

email_store( $t_user_email, $t_subject, $t_message, $t_mail_headers );
passed null as the 4th argument ($p_headers) under certain conditions.
Please explain what you mean with "certain conditions", how $t_mail_headers can become null.