Перейти к содержанию

Лидеры

  1. sitecreator

    sitecreator

    Разработчик


    • Баллы

      2

    • Постов

      172


Популярный контент

Показан контент с высокой репутацией 29.10.2022 в Записи блога

  1. После перехода некоторых хостеров на Ioncube loader 12 с 10-й или 11-й версии начали появляться чудеса в виде ошибок, которых никогда не было ранее, А именно: PHP Warning: [obfuscated](): Null byte in regex in При том, что код абсолютно валидный. И никаких проблем на 10-й или 11-й версии ioncube loader не возникало на любой версии php от 5.6. до 7.4. Откуда же взялись нулевые байты в regex? Программистам может быть интересно. Исходный код: $pattern_for_tags = ''; echo "\nЭто тоже 000 pattern_for_tags\n"; echo $pattern_for_tags; элементарнейший код. Присвоили переменной пустую строку. И сразу же вывели ее. Ожидали, что будет выведена пустая строка. Т.е. на выходе не будет ничего. а вот, что имеем на выходе с ioncube loader 12-й версии: смотрим в браузере в "исходный код". php + ионкуб превратили пустую строку в последовательность шестнадцатеричных нулей. Чудеса? Нет, это баг. Т.е. ионкуб пихает в строки последовательности нулей. И это даже будет незаметно до поры, до времени. Т.к. браузер даже не чихнет на эти лишние нули, т.к. он их просто не отобразит. И вам будет казаться, что все работает. Но как только вы такую строку захотите использовать как паттерн для регулярного выражения, то php начинает ругаться на нули, т.к. они, действительно, там появились. И впихнул их именно ioncube loader 12-й версии по одному ему ведомой прихоти. И делает он это не закономерно, т.е. в начале кода эта строка будет обработана нормально, например, но в другом месте будут подставлены нули. Т.е. тут как повезет. Проблема к модулю не имеет никакого отношения. Я даже посмотрел исходник на PHP в hex формате. А не затесался ли там нечитаемый символ? Нет. Там четко есть пустая строка - это только кавычки, и больше ничего. Думаю, что в лоб это можно попробовать вылечить используя энкодер 12-й.
    2 балла
×
×
  • Создать...