Implicitly nullable parameter warning in PHP
Which PHP version does your site report?
We read only what your site already sends in public: the headers and the top of the homepage. No scan, no login.
What the message means
Implicitly marking parameter as nullable is deprecatedA deprecation is an early warning that a feature still works today but will be removed in a future PHP version, so code using it must be changed in time. concerns a typed parameter whose default is null. Since PHPPHP is a programming language that builds your web pages on the computer that hosts your site, just before they reach the visitor. WordPress runs on it. 8.4, that implicit acceptance of null is deprecated. An explicitly nullable type such as ?
string makes the contract visible. This differs from passing null into a built-in function that accepts only text.
Before changing anything
Keep the complete error line and its timestamp in a private note. Record the action that failed, the active PHP versionA PHP version is a numbered edition of PHP, like 8.3. Each edition is looked after for a limited time, then gets security fixes only, then nothing. and the components updated at the same time. Share only information needed for the investigation.
Public support forums are not an appropriate place for customer details, credentials or complete server paths.
Back up files and the database before making changes. Check that the backupA backup is a separate copy of your website's files and database, so you can bring the site back after a mistake, a hack or a failed update. is usable. Work on a private test copy with the same PHP version and relevant settings.
Disable real payments and outgoing customer email there. Agree who will make the change and who will check the outcome. The steps below are investigation advice rather than a diagnosis of your particular website.
Possible cause
Inspect the function declaration named in the log, rather than only its caller. A pluginA WordPress plugin is an add-on you install in WordPress to give your site extra features, such as contact forms, SEO tools or a webshop. library may retain an old declaration while its function still works. Do not simply remove the default: optional input might become mandatory.
Also review whether a required parameter follows it and which callers depend on the current arrangement.
Fix it in five steps
- Record the function and parameter from the message. Locate the declaration and establish whether null is a default value or explicitly included in the type.
- Ask what absence means for the application. Distinguish no value, empty text and a supplied value so the revised declaration preserves the intended contract.
- Assess an appropriate supplier update or targeted type change. Review the order of required and optional parameters in the affected function at the same time.
- Test a call omitting the optional input, a call supplying null and one supplying a valid value. Compare expected behaviour for every case.
- Check saved settings when they are loaded again. Keep the revised declaration and results; the absence of a warning alone does not prove the default remains correct.
A concrete acceptance test
An optional delivery note provides a proposed acceptance case. Agree whether no note differs from an empty note. Test a new request and a previously saved request on the test copy.
Check that the form displays the right text and does not introduce a new required field. This example describes a possible test rather than a confirmed plugin defect. Ask for help when several packages call the same function and the consequences of changing it are unclear.
Identify who maintains the code
For a plugin or themeA WordPress theme is a ready-made package that decides how your WordPress site looks and how its pages are laid out. Change the theme and the design changes., first ask which release fits the intended PHP environment. Give its maintainer the error line and the action that reproduces it. Request a focused change with an explanation of the expected result.
The same explanation belongs in a handover to the developer of custom code.
Avoid changing unrelated components during the same investigation. Keep the original message separate from any new messages after an adjustment. Record the code version and test inputs for each attempt.
This lets you associate a result with a specific change. A test where nobody knows which files changed cannot provide useful acceptance evidence.
Agree in advance what would make the test fail. Examples include incorrect content, lost settings or a visitor action that can no longer be completed. Making a warning disappear is only part of the check.
Ask the website owner to assess the result that a visitor actually needs, alongside the technical review of the change.
When to get help
Use the existing PHP update service or the help form below if you cannot access the code or do not maintain the affected library. Describe the failed action and intended outcome. Do not send passwords.
Ask which correction is proposed and which test will establish that it works.
Use the Exposure Check through the Check your PHP version link as an initial version check. A public check cannot always determine the PHP version and does not prove the cause or repair of this error. If the result is unknown, ask the host to confirm the active version for this website.
After repair, keep versions, test results and fresh log entries with your maintenance notes. Let the responsible administrator decide when the tested change can reach the live website.
List the calls covered by the handover. An example with supplied text does not cover omitted input. Retain the result of the test without a note so a later change to the form can check the same contract.