[TASK][TRAC-13103] Check DB_CHARSET before installing WP Core#12087
[TASK][TRAC-13103] Check DB_CHARSET before installing WP Core#12087ramonfincken wants to merge 8 commits into
Conversation
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the Unlinked AccountsThe following contributors have not linked their GitHub and WordPress.org accounts: @ramon@creativepulses.nl, @ramon-fincken@chat.wordpress.org. Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases. Core Committers: Use this line as a base for the props when committing in SVN: To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
Test using WordPress PlaygroundThe changes in this pull request can previewed and tested using a WordPress Playground instance. WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser. Some things to be aware of
For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation. |
mukeshpanchal27
left a comment
There was a problem hiding this comment.
Thanks @ramonfincken for the PR!
Let some initial feedbacks
mikachan
left a comment
There was a problem hiding this comment.
Thanks for working on this, @ramonfincken! I've left a few inline comments.
Co-authored-by: Sarah Norris <1645628+mikachan@users.noreply.github.com>
Co-authored-by: Sarah Norris <1645628+mikachan@users.noreply.github.com>
Co-authored-by: Sarah Norris <1645628+mikachan@users.noreply.github.com>
Co-authored-by: Sarah Norris <1645628+mikachan@users.noreply.github.com>
mikachan
left a comment
There was a problem hiding this comment.
Thanks for the changes! I've left a couple more inline comments. I notice there are a few failing tests too, let's address those next.
| $mysql_db_charset_compat = false; | ||
|
|
||
| $compat = sprintf( | ||
| /* translators: %s: the value of the wp-config DB_CHARSET string. */ |
There was a problem hiding this comment.
| /* translators: %s: the value of the wp-config DB_CHARSET string. */ | |
| /* translators: %s: the value of the wp-config DB_CHARSET string. */ |
| $compat = sprintf( | ||
| /* translators: %s: the value of the wp-config DB_CHARSET string. */ | ||
| __( 'You cannot install because the DB_CHARSET defined in wp-config.php ("%s") is not supported by your database.' ), | ||
| DB_CHARSET |
There was a problem hiding this comment.
Just spotted that we have this DB_CHARSET reference on its own as well, which probably needs to be guarded too:
| DB_CHARSET | |
| defined( 'DB_CHARSET' ) ? DB_CHARSET : '' |
| if ( ! defined( 'DB_CHARSET' ) || ! DB_CHARSET || ! $wpdb->get_row( $wpdb->prepare( 'SHOW CHARACTER SET WHERE Charset = %s', DB_CHARSET ) ) ) { | ||
| $mysql_db_charset_compat = false; | ||
|
|
||
| $compat = sprintf( |
There was a problem hiding this comment.
It looks like the $compat variable is shared across all three compatibility checks (PHP version, MySQL version, and now DB charset), but die() only renders it once. The existing check at lines 258-287 sets $compat to a version-mismatch message when either $php_compat or $mysql_compat is false. The new charset block then unconditionally re-assigns $compat whenever the charset check fails. So if someone has both an outdated PHP/MySQL version and an unsupported DB_CHARSET, the version error message is overwritten by the charset message before die() runs.
We should be able to address this by adding another guard before setting $compat here:
| $compat = sprintf( | |
| if ( $mysql_compat && $php_compat ) { | |
| $compat = sprintf( | |
| ... |
Or we could restructure this so each check has its own die(), and there's no shared variable to overwrite. What do you think?
Trac ticket: https://core.trac.wordpress.org/ticket/13103
This will check the DB_CHARSET compatibility upon installing, preventing a non-supported (defined) DB_CHARSET to be used in DB installer.
Based on 13103.patch (816 bytes) - added by SergeyBiryukov 14 years ago.
Updated for latest (current) trunk version of git-ified WP Core.
Use of AI Tools
None
This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.