What PHP 8.4 changes for WordPress plugins
These are the functions, constants and settings that PHP 8.4 removes, deprecates or no longer ships, with what to use instead. A removed function or constant stops a plugin with a fatal error when that code runs. A deprecated one keeps working and logs a notice.
No longer ships with PHP 8.4
imap_open()and 74 more. It works only if your host installs the imap extension from PECL. Ask your host before you upgrade.imap_open(),imap_reopen(),imap_close(),imap_is_open(),imap_num_msg(),imap_num_recent(),imap_headers(),imap_headerinfo(),imap_rfc822_parse_headers(),imap_rfc822_write_address(),imap_rfc822_parse_adrlist(),imap_body(),imap_fetchtext(),imap_bodystruct(),imap_fetchbody(),imap_fetchmime(),imap_savebody(),imap_fetchheader(),imap_fetchstructure(),imap_gc(),imap_expunge(),imap_delete(),imap_undelete(),imap_check(),imap_listscan(),imap_scan(),imap_scanmailbox(),imap_mail_copy(),imap_mail_move(),imap_mail_compose(),imap_createmailbox(),imap_create(),imap_renamemailbox(),imap_rename(),imap_deletemailbox(),imap_subscribe(),imap_unsubscribe(),imap_append(),imap_ping(),imap_base64(),imap_qprint(),imap_8bit(),imap_binary(),imap_utf8(),imap_status(),imap_mailboxmsginfo(),imap_setflag_full(),imap_clearflag_full(),imap_sort(),imap_uid(),imap_msgno(),imap_list(),imap_listmailbox(),imap_lsub(),imap_listsubscribed(),imap_getsubscribed(),imap_getmailboxes(),imap_fetch_overview(),imap_alerts(),imap_errors(),imap_last_error(),imap_search(),imap_utf7_decode(),imap_utf7_encode(),imap_utf8_to_mutf7(),imap_mutf7_to_utf8(),imap_mime_header_decode(),imap_thread(),imap_timeout(),imap_get_quota(),imap_get_quotaroot(),imap_set_quota(),imap_setacl(),imap_getacl(),imap_mail()pspell_new()and 18 more. It works only if your host installs the pspell extension from PECL. Ask your host before you upgrade.pspell_new(),pspell_new_personal(),pspell_new_config(),pspell_check(),pspell_suggest(),pspell_store_replacement(),pspell_add_to_personal(),pspell_add_to_session(),pspell_clear_session(),pspell_save_wordlist(),pspell_config_create(),pspell_config_runtogether(),pspell_config_mode(),pspell_config_ignore(),pspell_config_personal(),pspell_config_dict_dir(),pspell_config_data_dir(),pspell_config_repl(),pspell_config_save_repl()oci_define_by_name()and 123 more. It works only if your host installs the oci8 extension from PECL. Ask your host before you upgrade.oci_define_by_name(),ocidefinebyname(),oci_bind_by_name(),ocibindbyname(),oci_bind_array_by_name(),oci_free_descriptor(),ocifreedesc(),oci_lob_save(),ocisavelob(),oci_lob_import(),ocisavelobfile(),oci_lob_load(),ociloadlob(),oci_lob_read(),oci_lob_eof(),oci_lob_tell(),oci_lob_rewind(),oci_lob_seek(),oci_lob_size(),oci_lob_write(),oci_lob_append(),oci_lob_truncate(),oci_lob_erase(),oci_lob_flush(),ocisetbufferinglob(),ocigetbufferinglob(),oci_lob_copy(),oci_lob_is_equal(),oci_lob_export(),ociwritelobtofile(),oci_new_descriptor(),ocinewdescriptor(),oci_rollback(),ocirollback(),oci_commit(),ocicommit(),oci_field_name(),ocicolumnname(),oci_field_size(),ocicolumnsize(),oci_field_scale(),ocicolumnscale(),oci_field_precision(),ocicolumnprecision(),oci_field_type(),ocicolumntype(),oci_field_type_raw(),ocicolumntyperaw(),oci_field_is_null(),ocicolumnisnull(),oci_execute(),ociexecute(),oci_cancel(),ocicancel(),oci_fetch(),ocifetch(),ocifetchinto(),oci_fetch_all(),ocifetchstatement(),oci_fetch_object(),oci_fetch_row(),oci_fetch_assoc(),oci_fetch_array(),oci_free_statement(),ocifreestatement(),oci_free_cursor(),ocifreecursor(),oci_close(),ocilogoff(),oci_new_connect(),ocinlogon(),oci_connect(),ocilogon(),oci_pconnect(),ociplogon(),oci_error(),ocierror(),oci_num_fields(),ocinumcols(),oci_parse(),ociparse(),oci_get_implicit_resultset(),oci_set_prefetch(),ocisetprefetch(),oci_set_prefetch_lob(),oci_set_client_identifier(),oci_set_edition(),oci_set_module_name(),oci_set_action(),oci_set_client_info(),oci_set_db_operation(),oci_set_call_timeout(),oci_password_change(),ocipasswordchange(),oci_new_cursor(),ocinewcursor(),oci_result(),ociresult(),oci_client_version(),oci_server_version(),ociserverversion(),oci_statement_type(),ocistatementtype(),oci_num_rows(),ocirowcount(),oci_free_collection(),ocifreecollection(),oci_collection_append(),ocicollappend(),oci_collection_element_get(),ocicollgetelem(),oci_collection_assign(),oci_collection_element_assign(),ocicollassignelem(),oci_collection_size(),ocicollsize(),oci_collection_max(),ocicollmax(),oci_collection_trim(),ocicolltrim(),oci_new_collection(),ocinewcollection(),oci_register_taf_callback(),oci_unregister_taf_callback()
Deprecated
mysqli_ping(),mysqli_kill(),mysqli_refresh(). Run the equivalent SQL statement.lcg_value(). Use Random\Randomizer::getFloat().xml_set_object(). Pass a callable that includes the object to the xml_set_ functions.E_STRICT,CURLOPT_BINARYTRANSFER,SOAP_FUNCTIONS_ALL,SUNFUNCS_RET_TIMESTAMP,SUNFUNCS_RET_STRING,SUNFUNCS_RET_DOUBLE. The constant is deprecated.session.sid_length,session.sid_bits_per_character,session.use_trans_sid,session.trans_sid_tags,session.trans_sid_hosts,session.referer_check. The setting is deprecated.
Bumpcheck also checks syntax changes, such as array offsets with curly braces and constructors named after their class. The full list is on the plugin page.