Skip to content

Commit cc1efa5

Browse files
committed
Remove deprecated mbstring INI settings
1 parent 1b6f61e commit cc1efa5

10 files changed

+68
-290
lines changed

ext/mbstring/mbstring.c

Lines changed: 53 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -888,116 +888,6 @@ static PHP_INI_MH(OnUpdate_mbstring_detect_order)
888888
}
889889
/* }}} */
890890

891-
static int _php_mb_ini_mbstring_http_input_set(const char *new_value, size_t new_value_length) {
892-
const mbfl_encoding **list;
893-
size_t size;
894-
if (FAILURE == php_mb_parse_encoding_list(new_value, new_value_length, &list, &size, 1, 0) || size == 0) {
895-
return FAILURE;
896-
}
897-
if (MBSTRG(http_input_list)) {
898-
pefree(MBSTRG(http_input_list), 1);
899-
}
900-
MBSTRG(http_input_list) = list;
901-
MBSTRG(http_input_list_size) = size;
902-
return SUCCESS;
903-
}
904-
905-
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_http_input) */
906-
static PHP_INI_MH(OnUpdate_mbstring_http_input)
907-
{
908-
if (new_value) {
909-
php_error_docref("ref.mbstring", E_DEPRECATED, "Use of mbstring.http_input is deprecated");
910-
}
911-
912-
if (!new_value || !ZSTR_VAL(new_value)) {
913-
const char *encoding = php_get_input_encoding();
914-
MBSTRG(http_input_set) = 0;
915-
_php_mb_ini_mbstring_http_input_set(encoding, strlen(encoding));
916-
return SUCCESS;
917-
}
918-
919-
MBSTRG(http_input_set) = 1;
920-
return _php_mb_ini_mbstring_http_input_set(ZSTR_VAL(new_value), ZSTR_LEN(new_value));
921-
}
922-
/* }}} */
923-
924-
static int _php_mb_ini_mbstring_http_output_set(const char *new_value) {
925-
const mbfl_encoding *encoding = mbfl_name2encoding(new_value);
926-
if (!encoding) {
927-
return FAILURE;
928-
}
929-
930-
MBSTRG(http_output_encoding) = encoding;
931-
MBSTRG(current_http_output_encoding) = encoding;
932-
return SUCCESS;
933-
}
934-
935-
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_http_output) */
936-
static PHP_INI_MH(OnUpdate_mbstring_http_output)
937-
{
938-
if (new_value) {
939-
php_error_docref("ref.mbstring", E_DEPRECATED, "Use of mbstring.http_output is deprecated");
940-
}
941-
942-
if (new_value == NULL || ZSTR_LEN(new_value) == 0) {
943-
MBSTRG(http_output_set) = 0;
944-
_php_mb_ini_mbstring_http_output_set(php_get_output_encoding());
945-
return SUCCESS;
946-
}
947-
948-
MBSTRG(http_output_set) = 1;
949-
return _php_mb_ini_mbstring_http_output_set(ZSTR_VAL(new_value));
950-
}
951-
/* }}} */
952-
953-
/* {{{ static _php_mb_ini_mbstring_internal_encoding_set */
954-
static int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, size_t new_value_length)
955-
{
956-
const mbfl_encoding *encoding;
957-
958-
if (!new_value || !new_value_length || !(encoding = mbfl_name2encoding(new_value))) {
959-
/* falls back to UTF-8 if an unknown encoding name is given */
960-
encoding = mbfl_no2encoding(mbfl_no_encoding_utf8);
961-
}
962-
MBSTRG(internal_encoding) = encoding;
963-
MBSTRG(current_internal_encoding) = encoding;
964-
#if HAVE_MBREGEX
965-
{
966-
const char *enc_name = new_value;
967-
if (FAILURE == php_mb_regex_set_default_mbctype(enc_name)) {
968-
/* falls back to UTF-8 if an unknown encoding name is given */
969-
enc_name = "UTF-8";
970-
php_mb_regex_set_default_mbctype(enc_name);
971-
}
972-
php_mb_regex_set_mbctype(new_value);
973-
}
974-
#endif
975-
return SUCCESS;
976-
}
977-
/* }}} */
978-
979-
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */
980-
static PHP_INI_MH(OnUpdate_mbstring_internal_encoding)
981-
{
982-
if (new_value) {
983-
php_error_docref("ref.mbstring", E_DEPRECATED, "Use of mbstring.internal_encoding is deprecated");
984-
}
985-
986-
if (OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage) == FAILURE) {
987-
return FAILURE;
988-
}
989-
990-
if (new_value && ZSTR_LEN(new_value)) {
991-
MBSTRG(internal_encoding_set) = 1;
992-
return _php_mb_ini_mbstring_internal_encoding_set(ZSTR_VAL(new_value), ZSTR_LEN(new_value));
993-
} else {
994-
const char *encoding = php_get_internal_encoding();
995-
MBSTRG(internal_encoding_set) = 0;
996-
return _php_mb_ini_mbstring_internal_encoding_set(encoding, strlen(encoding));
997-
}
998-
}
999-
/* }}} */
1000-
1001891
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_substitute_character) */
1002892
static PHP_INI_MH(OnUpdate_mbstring_substitute_character)
1003893
{
@@ -1091,9 +981,6 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output_conv_mimetypes)
1091981
PHP_INI_BEGIN()
1092982
PHP_INI_ENTRY("mbstring.language", "neutral", PHP_INI_ALL, OnUpdate_mbstring_language)
1093983
PHP_INI_ENTRY("mbstring.detect_order", NULL, PHP_INI_ALL, OnUpdate_mbstring_detect_order)
1094-
PHP_INI_ENTRY("mbstring.http_input", NULL, PHP_INI_ALL, OnUpdate_mbstring_http_input)
1095-
PHP_INI_ENTRY("mbstring.http_output", NULL, PHP_INI_ALL, OnUpdate_mbstring_http_output)
1096-
STD_PHP_INI_ENTRY("mbstring.internal_encoding", NULL, PHP_INI_ALL, OnUpdate_mbstring_internal_encoding, internal_encoding_name, zend_mbstring_globals, mbstring_globals)
1097984
PHP_INI_ENTRY("mbstring.substitute_character", NULL, PHP_INI_ALL, OnUpdate_mbstring_substitute_character)
1098985

1099986
STD_PHP_INI_BOOLEAN("mbstring.encoding_translation", "0",
@@ -1116,24 +1003,6 @@ PHP_INI_BEGIN()
11161003
PHP_INI_END()
11171004
/* }}} */
11181005

1119-
static void mbstring_internal_encoding_changed_hook(void) {
1120-
/* One of the internal_encoding / input_encoding / output_encoding ini settings changed. */
1121-
if (!MBSTRG(internal_encoding_set)) {
1122-
const char *encoding = php_get_internal_encoding();
1123-
_php_mb_ini_mbstring_internal_encoding_set(encoding, strlen(encoding));
1124-
}
1125-
1126-
if (!MBSTRG(http_output_set)) {
1127-
const char *encoding = php_get_output_encoding();
1128-
_php_mb_ini_mbstring_http_output_set(encoding);
1129-
}
1130-
1131-
if (!MBSTRG(http_input_set)) {
1132-
const char *encoding = php_get_input_encoding();
1133-
_php_mb_ini_mbstring_http_input_set(encoding, strlen(encoding));
1134-
}
1135-
}
1136-
11371006
/* {{{ module global initialize handler */
11381007
static PHP_GINIT_FUNCTION(mbstring)
11391008
{
@@ -1142,7 +1011,7 @@ ZEND_TSRMLS_CACHE_UPDATE();
11421011
#endif
11431012

11441013
mbstring_globals->language = mbfl_no_language_uni;
1145-
mbstring_globals->internal_encoding = NULL;
1014+
mbstring_globals->internal_encoding = &mbfl_encoding_utf8;
11461015
mbstring_globals->current_internal_encoding = mbstring_globals->internal_encoding;
11471016
mbstring_globals->http_output_encoding = &mbfl_encoding_pass;
11481017
mbstring_globals->current_http_output_encoding = &mbfl_encoding_pass;
@@ -1197,6 +1066,58 @@ static PHP_GSHUTDOWN_FUNCTION(mbstring)
11971066
}
11981067
/* }}} */
11991068

1069+
static void mbstring_internal_encoding_changed_hook(void) {
1070+
/* One of the internal_encoding / input_encoding / output_encoding ini settings changed. */
1071+
const char *php_encoding = php_get_internal_encoding();
1072+
const mbfl_encoding *encoding;
1073+
1074+
if (!MBSTRG(internal_encoding_set)) {
1075+
if (!(encoding = mbfl_name2encoding(php_encoding))) {
1076+
/* falls back to UTF-8 if an unknown encoding name is given */
1077+
encoding = mbfl_no2encoding(mbfl_no_encoding_utf8);
1078+
}
1079+
MBSTRG(internal_encoding) = encoding;
1080+
MBSTRG(current_internal_encoding) = encoding;
1081+
#if HAVE_MBREGEX
1082+
{
1083+
const char *enc_name = php_encoding;
1084+
if (FAILURE == php_mb_regex_set_default_mbctype(enc_name)) {
1085+
/* falls back to UTF-8 if an unknown encoding name is given */
1086+
enc_name = "UTF-8";
1087+
php_mb_regex_set_default_mbctype(enc_name);
1088+
}
1089+
php_mb_regex_set_mbctype(enc_name);
1090+
}
1091+
#endif
1092+
}
1093+
1094+
if (!MBSTRG(http_output_set)) {
1095+
php_encoding = php_get_output_encoding();
1096+
encoding = mbfl_name2encoding(php_encoding);
1097+
if (!encoding) {
1098+
/* falls back to UTF-8 if an unknown encoding name is given */
1099+
encoding = &mbfl_encoding_utf8;
1100+
}
1101+
MBSTRG(http_output_encoding) = encoding;
1102+
MBSTRG(current_http_output_encoding) = encoding;
1103+
}
1104+
1105+
if (!MBSTRG(http_input_set)) {
1106+
php_encoding = php_get_input_encoding();
1107+
const mbfl_encoding **list;
1108+
size_t size;
1109+
if (FAILURE == php_mb_parse_encoding_list(php_encoding, strlen(php_encoding), &list, &size, 1, 0) || size == 0) {
1110+
/* on failure leave as is */
1111+
return;
1112+
}
1113+
if (MBSTRG(http_input_list)) {
1114+
pefree(MBSTRG(http_input_list), 1);
1115+
}
1116+
MBSTRG(http_input_list) = list;
1117+
MBSTRG(http_input_list_size) = size;
1118+
}
1119+
}
1120+
12001121
/* {{{ PHP_MINIT_FUNCTION(mbstring) */
12011122
PHP_MINIT_FUNCTION(mbstring)
12021123
{

ext/mbstring/tests/bug48697.phpt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,20 @@ Bug #48697 (mb_internal_encoding() value gets reset by parse_str() or mb_parse_s
44
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
55
--FILE--
66
<?php
7-
ini_set('mbstring.internal_encoding', 'ISO-8859-15');
87
ini_set('mbstring.encoding_translation', true);
98
var_dump(mb_internal_encoding());
10-
mb_internal_encoding('UTF-8');
9+
mb_internal_encoding('ISO-8859-15');
1110
var_dump(mb_internal_encoding());
1211
parse_str('a=b', $ary);
1312
var_dump(mb_internal_encoding());
14-
mb_internal_encoding('UTF-8');
13+
mb_internal_encoding('ISO-8859-15');
1514
var_dump(mb_internal_encoding());
1615
parse_str('a=b', $ary);
1716
var_dump(mb_internal_encoding());
1817
?>
19-
--EXPECTF--
20-
Deprecated: ini_set(): Use of mbstring.internal_encoding is deprecated in %s on line %d
21-
string(11) "ISO-8859-15"
22-
string(5) "UTF-8"
23-
string(5) "UTF-8"
24-
string(5) "UTF-8"
18+
--EXPECT--
2519
string(5) "UTF-8"
20+
string(11) "ISO-8859-15"
21+
string(11) "ISO-8859-15"
22+
string(11) "ISO-8859-15"
23+
string(11) "ISO-8859-15"

ext/mbstring/tests/ini_encoding.phpt

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@ Encoding INI test
33
--SKIPIF--
44
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
55
--INI--
6-
error_reporting=E_ALL & ~E_DEPRECATED
76
default_charset=Shift_JIS
87
internal_encoding=
98
input_encoding=
109
output_encoding=
11-
mbstring.internal_encoding=Shift_JIS
12-
mbstring.http_input=Shift_JIS
13-
mbstring.http_output=Shift_JIS
1410
--FILE--
1511
<?php
1612
echo "Getting INI\n";
@@ -19,54 +15,36 @@ var_dump(ini_get('internal_encoding'));
1915
var_dump(ini_get('input_encoding'));
2016
var_dump(ini_get('output_encoding'));
2117

22-
var_dump(ini_get('mbstring.internal_encoding'));
2318
var_dump(mb_internal_encoding());
24-
var_dump(ini_get('mbstring.http_input'));
25-
var_dump(ini_get('mbstring.http_output'));
2619

2720
echo "Setting INI\n";
2821
var_dump(ini_set('default_charset', 'UTF-8'));
2922
var_dump(ini_set('internal_encoding', 'UTF-8'));
3023
var_dump(ini_set('input_encoding', 'UTF-8'));
3124
var_dump(ini_set('output_encoding', 'UTF-8'));
32-
var_dump(ini_set('mbstring.internal_encoding', 'UTF-8'));
33-
var_dump(ini_set('mbstring.http_input', 'UTF-8'));
34-
var_dump(ini_set('mbstring.http_output', 'UTF-8'));
3525

3626
echo "Getting INI\n";
3727
var_dump(ini_get('default_charset'));
3828
var_dump(ini_get('internal_encoding'));
3929
var_dump(ini_get('input_encoding'));
4030
var_dump(ini_get('output_encoding'));
4131

42-
var_dump(ini_get('mbstring.internal_encoding'));
4332
var_dump(mb_internal_encoding());
44-
var_dump(ini_get('mbstring.http_input'));
45-
var_dump(ini_get('mbstring.http_output'));
4633
--EXPECT--
4734
Getting INI
4835
string(9) "Shift_JIS"
4936
string(0) ""
5037
string(0) ""
5138
string(0) ""
52-
string(9) "Shift_JIS"
5339
string(4) "SJIS"
54-
string(9) "Shift_JIS"
55-
string(9) "Shift_JIS"
5640
Setting INI
5741
string(9) "Shift_JIS"
5842
string(0) ""
5943
string(0) ""
6044
string(0) ""
61-
string(9) "Shift_JIS"
62-
string(9) "Shift_JIS"
63-
string(9) "Shift_JIS"
6445
Getting INI
6546
string(5) "UTF-8"
6647
string(5) "UTF-8"
6748
string(5) "UTF-8"
6849
string(5) "UTF-8"
6950
string(5) "UTF-8"
70-
string(5) "UTF-8"
71-
string(5) "UTF-8"
72-
string(5) "UTF-8"

ext/mbstring/tests/ini_encoding2.phpt

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@ Encoding INI test
33
--SKIPIF--
44
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
55
--INI--
6-
error_reporting=E_ALL & ~E_DEPRECATED
76
default_charset=
87
internal_encoding=EUC-JP
98
input_encoding=
109
output_encoding=
11-
mbstring.internal_encoding=
12-
mbstring.http_input=
13-
mbstring.http_output=
1410
--FILE--
1511
<?php
1612
echo "Getting INI\n";
@@ -19,54 +15,36 @@ var_dump(ini_get('internal_encoding'));
1915
var_dump(ini_get('input_encoding'));
2016
var_dump(ini_get('output_encoding'));
2117

22-
var_dump(ini_get('mbstring.internal_encoding'));
2318
var_dump(mb_internal_encoding());
24-
var_dump(ini_get('mbstring.http_input'));
25-
var_dump(ini_get('mbstring.http_output'));
2619

2720
echo "Setting INI\n";
2821
var_dump(ini_set('default_charset', 'UTF-8'));
2922
var_dump(ini_set('internal_encoding', 'UTF-8'));
3023
var_dump(ini_set('input_encoding', 'UTF-8'));
3124
var_dump(ini_set('output_encoding', 'UTF-8'));
32-
var_dump(ini_set('mbstring.internal_encoding', 'UTF-8'));
33-
var_dump(ini_set('mbstring.http_input', 'UTF-8'));
34-
var_dump(ini_set('mbstring.http_output', 'UTF-8'));
3525

3626
echo "Getting INI\n";
3727
var_dump(ini_get('default_charset'));
3828
var_dump(ini_get('internal_encoding'));
3929
var_dump(ini_get('input_encoding'));
4030
var_dump(ini_get('output_encoding'));
4131

42-
var_dump(ini_get('mbstring.internal_encoding'));
4332
var_dump(mb_internal_encoding());
44-
var_dump(ini_get('mbstring.http_input'));
45-
var_dump(ini_get('mbstring.http_output'));
4633
--EXPECT--
4734
Getting INI
4835
string(0) ""
4936
string(6) "EUC-JP"
5037
string(0) ""
5138
string(0) ""
52-
string(0) ""
5339
string(6) "EUC-JP"
54-
string(0) ""
55-
string(0) ""
5640
Setting INI
5741
string(0) ""
5842
string(6) "EUC-JP"
5943
string(0) ""
6044
string(0) ""
61-
string(0) ""
62-
string(0) ""
63-
string(0) ""
6445
Getting INI
6546
string(5) "UTF-8"
6647
string(5) "UTF-8"
6748
string(5) "UTF-8"
6849
string(5) "UTF-8"
6950
string(5) "UTF-8"
70-
string(5) "UTF-8"
71-
string(5) "UTF-8"
72-
string(5) "UTF-8"

0 commit comments

Comments
 (0)