#typo3 #typo3-7.6.x #realurl
#опечатка3 #typo3-7.6.x #realurl
Вопрос:
Это исключение, которое выдается, когда в URL-адресе присутствует неправильный L
параметр. Это загрязняет typo3_log в /typo3temp/logs/
папке.
Это исключение, по-видимому, введено с версией 2.3.0
realurl. Если я понижу версию до 2.2.1
, ошибка больше не будет регистрироваться. С версией 2.3.1
я также получаю огромный дамп стека, который содержит весь массив конфигурации TypoScript.
Примерами URL-адресов, которые вызывают эту ошибку, являются:
- нецелые значения:
https://www.example.org/index.php?uid=1amp;L=a
- целые числа, которые не соответствуют настройкам TypoScript:
config.linkVars = L(0-1)
https://www.example.org/index.php?uid=1amp;L=5
- целые числа, которые соответствуют настройкам TypoScript, но не соответствуют настройкам в
realurl_config.php
файлеconfig.linkVars = L(0-6)
'preVars' => array (
0 => array (
'GETvar' => 'L',
'valueMap' => array (
'en' => '1',
'fr' => '2',
'es' => '3',
'it' => '4',
),
'noMatch' => 'bypass',
),
)https://www.example.org/index.php?uid=1amp;L=6
- целые числа, которые не соответствуют существующему языку, определенному в
sys_language
таблице базы данных
Сообщения об ошибках выглядят следующим образом
компонент=»Дмитрийдулепов.Настоящий завиток.Кодировщик.URLEncoder»: Неверный параметр «L» («X») был обнаружен realurl. Кэширование страницы отключено, чтобы предотвратить распространение неправильного значения «L» — «<длинный дамп здесь>«
где X
неправильный параметр
Длинный дамп содержит не версию 2.3.2
realurl, а версию 2.3.1
У меня абсолютно нормальная настройка, которая хорошо работала с версией 2.2.x
realurl, подобной этой
TypoScript
config.linkVars = L(0-1)
page.config.linkVars < config.linkVars
config.uniqueLinkVars = 1
config.language = de
config.locale_all = de_DE
config.htmlTag_langKey = de
config.sys_language_uid = 0
[globalVar = GP:L = 1]
config.language = en
config.locale_all = en_SUS
config.htmlTag_langKey = en
config.sys_language_uid = 1
[global]
realurl_conf.php
'preVars' => array (
0 => array (
'GETvar' => 'L',
'valueMap' => array (
'en' => '1',
),
'noMatch' => 'bypass',
),
),
Активированные языки Английский: id = 1, язык по умолчанию немецкий
Я искал сообщение об ошибке, но все, что я нашел, были ответы на форуме Дмитрия (автора realurl), который утверждает, что конфигурация неправильная, но без намека на то, что не так.
Примечание
Ошибка не срабатывает, потому что некоторые ссылки на моем сайте имеют неправильный параметр L. Журнал доступа показывает, что эти ссылки с неправильными параметрами исходят от ботов или без реферера, или от внешних ссылок
Ответ №1:
Я сделал это исправление несколько раз назад, которое, похоже, решает проблему :
index 1ce3874..c7004ea 100644
--- a/Classes/Encoder/UrlEncoder.php
b/Classes/Encoder/UrlEncoder.php
@@ -1605,10 1605,10 @@ class UrlEncoder extends EncodeDecoderBase {
addslashes($sysLanguageUid)
);
$this->tsfe->set_no_cache($message);
- $this->logger->error($message);
- if (version_compare(TYPO3_version, '7.6.0', '>=')) {
- $this->logger->debug($message, debug_backtrace());
- }
//$this->logger->error($message);
//if (version_compare(TYPO3_version, '7.6.0', '>=')) {
// $this->logger->debug($message, debug_backtrace());
//}
throw new InvalidLanguageParameterException($sysLanguageUid);
}
Я думаю, что в конфигурации realurl нет ничего, что могло бы это исправить. Итак, вы должны применить этот патч. Я лично использую cweagans / composer-patches, что прекрасно, если вы используете composer для управления зависимостями вашего сайта.
Комментарии:
1. Это было бы только последним средством
2. В противном случае вам нужно будет настроить регистратор TYPO3 ( docs.typo3.org/typo3cms/CoreApiReference/7.6/ApiOverview /… ), чтобы избежать записи сообщения уровня «debug» в рабочей среде.