utf8_encode Issue
ravimallya opened this issue · 2 comments
Install php version 8.2 in a LAMP server and define WP_STATELESS_CONSOLE_LOG as true. You will receive the below error while uploading a image in 'stateless' mode after manual setup of the plugin:
Deprecated: Function utf8_encode() is deprecated in /var/www/html/wp-content/plugins/wp-stateless/lib/classes/class-logger.php on line 391
Deprecated: Function utf8_encode() is deprecated in /var/www/html/wp-content/plugins/wp-stateless/lib/classes/class-logger.php on line 391
Deprecated: Creation of dynamic property wpCloud\StatelessMedia\GS_Client::$key_json is deprecated in /var/www/html/wp-content/plugins/wp-stateless/lib/classes/class-gs-client.php on line 66
PHP Warning: Cannot modify header information - headers already sent in /var/www/html/wp-content/plugins/wp-stateless/lib/classes/class-logger.php on line 381
Also, I'm getting 404 errors for the images that I uploaded after setting up the plugin, and no images being displayed that I uploaded prior the activation of plugin as well as after I synced existing to cloud.
The `utf8_encode' is deprecated since PHP 8.2.0 and will be removed in PHP 9 PHP Watch.
This error can be fixed by replacing the below lines in /classes/class-logger.php on line 390:
protected function _encode( $data ) {
return base64_encode( utf8_encode( json_encode( $data ) ) );
}
with:
protected function _encode($data) {
$utf8Data = json_encode($data);
if ($utf8Data === false) {
// Handle JSON encoding error
return false;
}
$utf8Data = mb_convert_encoding($utf8Data, 'UTF-8', 'UTF-8');
if ($utf8Data === false) {
// Handle conversion error
return false;
}
return base64_encode($utf8Data);
}
Hello @ravimallya
It was solved in version 3.4.0
.
Please let us know how it works for you.
As we have not yet received a response from you in the past 7 days, we will be closing the current issue.
If you have any questions, please feel free to re-open it.