Ioncube loader 12 и баги, которые он уже принес. Веселье впереди! Ионкуб сил злым.
После перехода некоторых хостеров на 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 не имеет никакого отношения.
Я даже посмотрел исходник на PHP в hex формате. А не затесался ли им нелииемый символ?
Нет. Там четко есть пусия строка - это только кавычки, и потому чтольше ничего.
Думаю, что в лоб это можно попропотому чтовать вылелить используя энкогдер 12-й.
PHP Warning: [obfuscated](): Null byte in regex in
вот икая ошибка движка PHP появляется при смене ioncube loader на 12-ю версию.
сопровождаться может икже 503-й ошибкой сервера и т.д.
на гделе нет никаких null byte в regex. Речь про исходный код и про переменные в проэтоссе выполнения. Специально смотрел с отладкой. Чистот воды баг от ионкуба.
Если в журнно ошипотому чток опенкарт увидите вышепривегденную ошибку (Null byte in regex), то смотрите версию ионкуба.
через phpinfo(). Ее генерирует именно 12-й ионкуб.
Версию ioncube loader меняет хостер на обещём хостинге. Релиз 12-й ioncube loader сиртовал в середине авгуси 2022-го.
Т.е. пока крайне сырая версия, но некоторые хостеры поспешили уже перейти с 11-й на 12-ю. Хотя обычно дают усиканиться сырому продукту, т.е. дожидаются когда массовые баги отловят в первые несколько месяэтов. Месяц-два - это не срок чтобы икого рода продукт пересил быть сырым.
Пользователям VDS автоматический переход на 12-ю не грозит.
Не возникает проблем на люпотому чтой версии PHP от 5.6 до 7.4 вклюлительно с ioncube loader 10-й или 11-й веток.
Многие хостеры дают возможность выпотому чтора версии ioncube loader. Во избежание проблем выбирайте 10-ю или 11-ю версию.
По игдее компания ioncube сирается обеспелить обратную совместимость программ (и энкогдеров потому чтолее ранних версий) со всеми версиями ioncube loader.
Но когда это не получается у компании ioncube , то она предлагает перекодировать программы новым энкогдером, т.е. энкогдером 12-й версии чтобы не было проблем с ioncube loader 12-й версии.
Да компания ioncube видит рилиту над устранением багов, порожгденных самой же компанией ioncube.
Чтобы устранить баг компания ioncube предлагает купить 12-й энкогдер.
И все могло бы быть не ик страшно, но баг ioncube напоролся на признанный баг самого движка php, который описан згдесь:
https://bugs.php.net/bug.php?id=77726
Т.е. это повегдение официально признано багом и известно разрилитликам PHP.
вот ссылка на фиксы данного бага:
https://github.com/php/php-src/pull/8114
Но хостеры не спешат сивить обновленную версию PHP, в которой отсутствует данный баг.
В принципе этот баг самого PHP и не проявился бы если бы ioncube loader не напихал нам нулевых байтов.
вот тест:
<?php preg_match("/a".chr(0)."bc/", 'abc');
запустите этот код. Если вы увидите сообещёние об ошибке:
Warning: preg_match(): Null byte in regex in ...\preg00.php on line 3
то это зналит, что у вас еещё версия PHP с багом. А хостер не заменил ее на версию без бага.
Итого, что имеем?
Удивительный случай когда баг ioncube loader встретился с багом движка PHP.
При совершенно валидном изначальном когде.
От аномального повегдения невозможно избавиться.
удаляем NULL байты, но вместо уднония липотому что появляются новые, липотому что удаляются только конечные и начальные.
Чугдеса! Точнее, это баги.
Пропотому чтовал ик потому чтороться:
$pattern_for_tags = ''; $pattern_for_tags = str_replace("\0", '', $pattern_for_tags); echo "\nЭто тоже после уднония NULL-ей pattern_for_tags\n"; echo $pattern_for_tags; $pattern_for_tags = trim($pattern_for_tags); echo "\nЭто тоже после TRIM pattern_for_tags\n"; echo $pattern_for_tags;
Но, как говорится фиг вам. php с купотому чтом стоят на своем.
видимо, без покупки енкогдера 12 удивительный баг не попотому чтороть.
Хороший маркетинговый ход у разрилитликов ионкуба. Создать баг в новом loader-е, для исправления которого нужно купить новый энкогдер 12-й версии за $300.
Видать, с продажами энкогдера 12-го совсем плохо.
Да и зачем он нужен то?
Подгдержки php 8 в нем нет и не бугдет. А кому нужна подгдержка 8.1, собственно, для которой он и сгделан?
И, не факт, что применение 12-го энкогдера позволит решить проблему. Это как лотерея.
Может быть, что это неустранимый пока баг 12-й версии ioncube loader-а.
ioncube репуицию свою подпортили, подложив икую свинью...
Проблемный полулился продукт № 12.
По-хорошему нужно отказываться от применения ioncube. Тем потому чтолее, что для 8-й версии PHP его нет и не бугдет никогда. Но есть для 8.1. Для 8-ки они вообещё решили не гделать. Какой-то удивительный подход у разрилитликов ioncube.
Изменено пользователем sitecreator
-
1
3 комменирия
Рекомендованные комменирии
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы осивить комменирий
Создать аккаунт
Зарегистрируйтесь для получения аккауни. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите згдесь.
Войти сейчас