From 66cb5e36892b74047b5e9f3a5c2e1e7de2c2cb18 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Wed, 18 Aug 2021 21:57:21 +0000 Subject: [PATCH] Code Modernization: Silence the deprecation warning for `auto_detect_line_endings`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since PHP 8.1, the `auto_detect_line_endings` setting is deprecated: > The `auto_detect_line_endings` ini setting modifies the behavior of `file()` and `fgets()` to support an isolated `\r` (as opposed to `\n` or `\r\n`) as a newline character. These newlines were used by “Classic” Mac OS, a system which has been discontinued in 2001, nearly two decades ago. Interoperability with such systems is no longer relevant. Reference: [https://wiki.php.net/rfc/deprecations_php_8_1#auto_detect_line_endings_ini_setting PHP RFC: Deprecations for PHP 8.1: auto_detect_line_endings ini setting] > The `auto_detect_line_endings` ini setting has been deprecated. If necessary, handle `\r` line breaks manually instead. Reference: [https://github.com/php/php-src/blob/1cf4fb739f7a4fa8404a4c0958f13d04eae519d4/UPGRADING#L456-L457 PHP 8.1 Upgrade Notes]. This commit fixes the warning when running tests for the `PO` class: {{{ Deprecated: auto_detect_line_endings is deprecated in /var/www/src/wp-includes/pomo/po.php on line 16 }}} While deprecated, the actual `auto_detect_line_endings` functionality has not been removed from PHP (yet) and will still work until PHP 9.0. For now, we're silencing the deprecation notice as there may still be translation files around which haven't been updated in a long time and which still use the old MacOS standalone `\r` as a line ending. This should be revisited when PHP 9.0 is in alpha/beta. Follow-up to [51633]. Props jrf. See #53635. git-svn-id: https://develop.svn.wordpress.org/trunk@51636 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/pomo/po.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/wp-includes/pomo/po.php b/src/wp-includes/pomo/po.php index 22b94c11bf..e4e5849d20 100644 --- a/src/wp-includes/pomo/po.php +++ b/src/wp-includes/pomo/po.php @@ -13,10 +13,15 @@ if ( ! defined( 'PO_MAX_LINE_LEN' ) ) { define( 'PO_MAX_LINE_LEN', 79 ); } -// This setting has been deprecated in PHP 8.1. -if ( PHP_VERSION_ID < 80100 ) { - ini_set( 'auto_detect_line_endings', 1 ); -} +/* + * The `auto_detect_line_endings` setting has been deprecated in PHP 8.1, + * but will continue to work until PHP 9.0. + * For now, we're silencing the deprecation notice as there may still be + * translation files around which haven't been updated in a long time and + * which still use the old MacOS standalone `\r` as a line ending. + * This fix should be revisited when PHP 9.0 is in alpha/beta. + */ +@ini_set( 'auto_detect_line_endings', 1 ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged /** * Routines for working with PO files