Fatal error uncaught error call to undefined function ereg in

I am using php v7.3.2 on Centos 7.6. Before upgrading php the version was 5.4. In v 5.4 i had no errors. But in v 7.3.2 i got this error : Fatal error: Uncaught Error: Call to undefined funct...

I am using php v7.3.2 on Centos 7.6.
Before upgrading php the version was 5.4.
In v 5.4 i had no errors.
But in v 7.3.2 i got this error :

Fatal error: Uncaught Error: Call to undefined function ereg() in
/usr/local/IBSng/interface/xmlrpc/xmlrpc.inc:1307 Stack trace: #0
/usr/local/IBSng/interface/xmlrpc/xmlrpc.inc(1284):
xmlrpcmsg->parseResponse(‘HTTP/1.0 200 OK…’) #1
/usr/local/IBSng/interface/xmlrpc/xmlrpc.inc(931):
xmlrpcmsg->parseResponseFile(Resource id #21) #2
/usr/local/IBSng/interface/xmlrpc/xmlrpc.inc(872):
xmlrpc_client->sendPayloadHTTP10(Object(xmlrpcmsg), ‘127.0.0.1’,
‘1235’, 240, », ») #3
/usr/local/IBSng/interface/IBSng/inc/xmlrpc.php(43):
xmlrpc_client->send(Object(xmlrpcmsg), 240) #4
/usr/local/IBSng/interface/IBSng/inc/xmlrpc.php(27):
IBSxmlrpc->__sendXmlRpcRequest(Object(xmlrpcmsg), 240) #5
/usr/local/IBSng/interface/IBSng/inc/request.php(60):
IBSxmlrpc->sendRequest(‘login.login’, Array) #6
/usr/local/IBSng/interface/IBSng/inc/auth.php(144): Request->send() #7
/usr/local/IBSng/interface/IBSng/inc/auth.php(111):
Auth->__sendAuthRequest() #8
/usr/local/IBSng/interface/IBSng/inc/auth.php(94):
Auth->__authenticateUser() #9 /usr/local/IBSng/ in
/usr/local/IBSng/interface/xmlrpc/xmlrpc.inc on line 1307

What is that error mean & how can i fix it?

Toto's user avatar

Toto

88.1k62 gold badges88 silver badges125 bronze badges

asked Feb 14, 2019 at 1:41

SilverLight's user avatar

SilverLightSilverLight

19.3k64 gold badges189 silver badges294 bronze badges

1

use preg_match() instead of ereg() function.

answered Apr 2, 2019 at 11:52

Cuado's user avatar

Содержание

  1. Бортовой журнал
  2. Полет нормальный. Без происшествий.
  3. Переход на PHP7: работа над ошибками
  4. SOLVED Call to undefined function eregi
  5. canou83
  6. sparek-3
  7. Drupal Русскоязычное сообщество
  8. Главные вкладки
  9. Комментарии

Бортовой журнал

Полет нормальный. Без происшествий.

Переход на PHP7: работа над ошибками

Итак, у вас есть старенький, но уж очень милый сердцу сайт, который вы решаетесь из жалости (или, возможно, перечитав Хабра) перевести на PHP7. С волнением ожидая резкого роста производительности, вы смахиваете пыль с бедного сайта и решительно переключаете в панели управления хостингом версию PHP.

Если сайт уже давно не молод, то с большой долей вероятности чудо не произойдет. В лучшем случае начнут появляться разного рода ошибки, а в худшем — вы увидите белый экран, дзен веб-разработки. В этот момент хочется по-быстрому переключить все обратно и забыть о своей внезапной слабости.

Но предположим, что ваша сильная сторона — настойчивость, к тому же вы располагаете некоторым количеством времени для экспериментов. Давайте попробуем все починить.

Резервные копии

Делаем резервные копии сайта (а заодно и баз данных). Ведь кто не делает резервные копи — сам себе враг, верно? Для разного рода экспериментов имеет смысл добавить еще один сайт на хостинге и скопировать в него файлы, которые мы сейчас будем править.

Журналы ошибок

Настроим ведение журнала ошибок PHP в файл .htaccess (если он не был настроен ранее):

php_value display_errors 0
php_value log_errors 1
php_value error_log /home/vasya/domains/mysite.ru/logs/error.log

Работа с MySQL

Допустим, сайт использует базы данных, и вы видите ошибки вроде такой:

Fatal error: Uncaught Error: Call to undefined function mysql_connect()

Это оттого, что в современных версиях PHP (начиная с PHP 5.5.0) оригинальное расширение MySQL не поддерживается. Разработчики рекомендуют использовать MySQLi или PDO. Попробуем перейти на MySQLi, это просто:

Предположим, что сайт написан с использованием процедурного подхода, который представляет собой классический говнокод многие и сейчас считают лаконичным и эффективным решением. В таком случае, следующую устаревшую конструкцию для подключения к базе данных:

$link = mysql_connect(‘localhost’, $user, $password)
mysql_select_db($dbname, $link)
mysql_query(‘set names cp1251’)

можно заменить на:

$link = mysqli_connect(‘localhost’, $user, $password, $dbname)
mysqli_query($link, ‘set names cp1251’)

Другие популярные функции легко меняются на их аналоги с буквой ‘i’:

mysqli_fetch_array()
mysqli_fetch_row()
mysqli_fetch_assoc()
mysqli_fetch_array()
mysqli_num_rows()
mysqli_insert_id()
mysqli_close()

В результате этих несложных действий данные из БД должны успешно собираться и отправляться.

Кодировка

Настоящий олдскул — это сайт в CP1251 (как минимум). Всё превратилось в ромбики или прочие козяблики?

Скорее всего, достаточно будет указать кодировку в .htaccess таким образом:

php_value default_charset «cp1251»

Регулярные выражения

Также вы можете наблюдать ошибки следующего рода:

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead

Это означает, что модификатор /e, который позволял передать произвольной функции результат регулярного выражения, теперь не поддерживается. В таких случаях рекомендуется использовать функцию preg_replace_callback

Допустим, у нас есть такое регулярное выражение:

с заменой на preg_replace_callback оно должно выглядеть вот так:

$string=preg_replace_callback(«/:([a-z]<1,10>):/», create_function(‘$matches’, ‘return print_smile($matches[1])’), $string)

здесь все просто, регулярное выражение теперь указывается в качестве первого аргумента (без модификатора /e, разумеется), а в качестве второго аргумента указывается анонимная функция (которая будет выполнена после применения регулярного выражения) с двумя аргументами: массив $matches, где будут сохранены данные, совпадающие с регулярным выражением и вызов внешней функции с аргументами. В данном примере внешняя функция называется print_smile и ей передается аргументом первое найденное вхождение. То, что в preg_replace было \1 (первое найденное вхождение) станет $matches[1] (если аргументов было больше, то будет $matches[2], $matches[3] и так далее).

Вот еще один пример, посложнее:

$out=preg_replace_callback(‘/ (.*?) /s’, create_function(‘$matches’, ‘return feed_out_sub_rm($matches[2], «‘.$base_prefix.’», «‘.$nick.’», «‘.$id_entry.’») ‘), $out)

здесь легко запутаться в кавычках, будьте внимательны.

Копаясь в регулярных выражениях, можно вспомнить еще про две функции, которые с версии PHP 5.3.0 считаются устаревшими (и не поддерживаются). Симптомы следующие:

Fatal error: Uncaught Error: Call to undefined function ereg_replace()

Если регулярное выражение в ereg_replace простое, то можно обойтись просто установкой граничных символов, как здесь:

Fatal error: Uncaught Error: Call to undefined function split()

Если регулярное выражение посложнее, то пробуем преобразовать к preg_split.

На этом пока все. Удачной отладки.
Много полезных материалов по теме можно найти на сайте разработчиков.

Если что-то не получается, или ваш случай совсем не похож на наши примеры — пишите комментарии, попробуем разобраться вместе.

Для того, чтобы оставлять комментарии к посту, авторизуйтесь, используя свой аккаунт в социальных сетях ВКонтакте/FaceBook, или аккаунт в Google/Яндекс.

Источник

SOLVED Call to undefined function eregi

canou83

Well-Known Member

Hello, I have a site that runs and must launch a CRON task all X periods.
This task imports orders into a commercial administration software.

This one is in PHP 5.6 php-fpm on easyapache4

The import of the commands in manual works, but in automatic, task CRON I have this error:

Fatal error: Uncaught Error: Call to undefined function eregi() in /home/xxxxx/public_html/scripts/ecommerce/ws_import.php:32
Stack trace:
#0


thrown in /home/xxxxx/public_html/scripts/ecommerce/ws_import.php on line 32
Import end dim. mars 18 10:50:02 CET 2018

Line 32 of this file is:

Well-Known Member

The ereg(i) function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0.

You probably should upgrade or rewrite the script to one that uses preg_match instead of eregi

An alternative is to ask your webhost to install a PHP 5.2 version if it is not already available to you, and switch to that.

If your orders > import > administration software principally run on a PHP version higher than 5.2, you will be better using the highest recommended PHP version for the orders and admin software, and re-writing the importation routines to be compatible.

This is not really a cPanel issue, and you will probably get better help from forums like eg Stack Overflow

sparek-3

Well-Known Member

Is this a piece of software that you wrote or that you obtained from some where else (free, commercially licensed, etc)?

If it’s something you obtained from some where else, then the script is outdated or abandoned. You need to update the script to the latest version since this version of the script is obviously not written for modern PHP versions and likely has many other security holes that malicious users may be able to abuse. If you are using the latest version, then the script is likely abandoned by it’s developer because eregi() has been deprecated for some time. Any developer worth their weight would have resolved this years ago.

Источник

Drupal Русскоязычное сообщество

Главные вкладки

При переезде проекта на Drepal 6 на новый сервер с php7 получил сообщение
Notice: Trying to get property of non-object in /srv/http/includes/path.inc on line 50
в этой строке вижу код
= $path_language ? $path_language : $language -> language ; ?>
Подскажите, как это вылечить?

  • Есть вопрос
  • Решение проблем
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Комментарии

заводить шестёрку на php 7 — это большое колдунство

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

LTS вроде поддерживает php7, но там маловато контрибных модулей.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

А без ubercart ? А проблема с views решена?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Убер- только модули адаптированы , можно выбросить — но не суть, views пофиксин

P.S. Это рабочий адопт используется на сайтах.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Спасибо, буду пробовать!

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Учти — это update, если сайта нет — сначала поставь коробку а потом обнови файлы из сборки.
Если будут вопросы для оперативной связи пиши скайп / летегу.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

В update нет модуля filter, выдает ошибку на split() в filter.module строка 914, заменил на explode

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Как раз то, что нужно, сайт есть, но переехал на хостинг где php7

Fatal error: Uncaught Error: Call to undefined function ereg() in /includes/file.inc:973
Заменил на preg_match

Fatal error: Uncaught Error: Call to undefined function split() in /modules/filter/filter.module:914

Сейчас выдает
Notice: unserialize(): Error at offset 499 of 986 bytes in /srv/http/includes/bootstrap.inc on line 817

Notice: unserialize(): Error at offset 143 of 291 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 135 of 267 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 125 of 224 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 42 of 83 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 20 of 37 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 315 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 315 bytes in /srv/http/includes/bootstrap.inc on line 559
.

Warning: Cannot modify header information — headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 734

Warning: Cannot modify header information — headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 735

Warning: Cannot modify header information — headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 736

Warning: Cannot modify header information — headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 737

Notice: Trying to get property of non-object in /srv/http/includes/path.inc on line 63

У Вас свой sites/default/settings из аповского надо добавить

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Во как, красиво! Попробую!

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Внес изменения в sites/default/settings
Но Notice: unserialize(): Error at offset. остались

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Определенная версия ПО (Программное Обеспечение)(в данном случае Drupal 6) разрабатывается и тестируется на определенном окружении (php, mysql и т.п.)
Разработчики могут гарантировать более-менее стабильную работу ПО только в том окружении, в котором это ПО тестировалось и показало удовлетворительные результаты тестирования.

Если вы решили использовать ПО не в том окружении для которого разрабатывалось данное ПО с использованием костылей, могу дать несколько советов:
1.Начинайте регулярно употреблять седативные средства (валокордин и прочие фенобарбиталы). Ибо когда в самый неожиданный момент и с самыми неожиданными последствиями все начнет работать не так как ожидалось, вам понадобится как минимум «холодная голова», как максимум чтобы не пришлось задействовать саппорт «Скорая медицинская помощь» для восстановления жизненных функций собственного организма.
2.Учредите статью расходов для восстановление работоспособности сайта при сбоях из-за костылезации его эксплуатации, и начинайте накапливать на ней ден.средства.
3.Застрахуйте бизнес и начинайте выплачивать страховые взносы.
4.На всякий пожарный, вывезите родных и близких в безопасное место.

возьмите нормальный облачный сервер, обеспечьте на нем необходимое для сайта окружение и забудьте про первую часть этого комментария.
Сейчас облачные выделенные сервера стоят копейки.

Проверяю таблицу variable на ошибки, выводит пустые строки

foreach($result as $variable)<

if ($variables[$variable->name] === FALSE) <
print $variable->name . ‘=’ . $variable->value . ‘***
‘;

Хотя нет, не пустые
admin_theme=s:7:»garland»;
.
boost_cache_css=i:1;

а как это вылечить?

Сайт заработал?
Почему @unserialize а не unserialize?
Почему name д.б. FALSE ?
Подключение к базе типа, прошло? $db_url = ‘mysqli://username:password@localhost/databasename’;
mysqli

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Критические ошибки исчезли, но остались
Notice: unserialize(): Error at offset 143 of 291 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 135 of 267 bytes in /srv/http/includes/bootstrap.inc on line 559
.
Можно авторизоваться, можно зайти в админку.

Подключение mysqli прошло без проблем

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Ага что-то индивидуальное, ясно.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Честно говоря не понимаю почему у меня возникает Notice: unserialize(): Error at offset 143 of 291 bytes
Сравнил значения в таблицах variable на старох хостинге и на новом, все идентично. Кодировки таблиц тоже.

Источник

Итак, у вас есть старенький, но уж очень милый сердцу сайт, который вы решаетесь из жалости (или, возможно, перечитав Хабра) перевести на PHP7. С волнением ожидая резкого роста производительности, вы смахиваете пыль с бедного сайта и решительно переключаете в панели управления хостингом версию PHP.

Если сайт уже давно не молод, то с большой долей вероятности чудо не произойдет. В лучшем случае начнут появляться разного рода ошибки, а в худшем  — вы увидите белый экран, дзен веб-разработки. В этот момент хочется по-быстрому переключить все обратно и забыть о своей внезапной слабости.

Но предположим, что ваша сильная сторона — настойчивость, к тому же вы располагаете некоторым количеством времени для экспериментов. Давайте попробуем все починить.

PHP7_sprinthost

Резервные копии

Делаем резервные копии сайта (а заодно и баз данных). Ведь кто не делает резервные копи — сам себе враг, верно? Для разного рода экспериментов имеет смысл добавить еще один сайт на хостинге и скопировать в него файлы, которые мы сейчас будем править.

Журналы ошибок

Настроим ведение журнала ошибок PHP в файл .htaccess (если он не был настроен ранее):

php_value display_errors 0
php_value log_errors 1
php_value error_log /home/vasya/domains/mysite.ru/logs/error.log

Подробно о ведении журналов мы уже писали в нашем блоге ранее.

Работа с MySQL

Допустим, сайт использует базы данных, и вы видите ошибки вроде такой:

Fatal error: Uncaught Error: Call to undefined function mysql_connect()

Это оттого, что в современных версиях PHP (начиная с PHP 5.5.0) оригинальное расширение MySQL не поддерживается. Разработчики рекомендуют использовать MySQLi или PDO. Попробуем перейти на MySQLi, это просто:

Предположим, что сайт написан с использованием процедурного подхода, который представляет собой классический говнокод многие и сейчас считают лаконичным и эффективным решением. В таком случае, следующую устаревшую конструкцию для подключения к базе данных:

$link = mysql_connect(‘localhost’, $user, $password)
mysql_select_db($dbname, $link)
mysql_query(‘set names cp1251’)

можно заменить на:

$link = mysqli_connect(‘localhost’, $user, $password, $dbname)
mysqli_query($link, ‘set names cp1251’)

для запросов:

$result=mysql_query($query,$cid)

заменить на:

$result=mysqli_query($cid, $query)

Другие популярные функции легко меняются на их аналоги с буквой ‘i’:

mysqli_fetch_array()
mysqli_fetch_row()
mysqli_fetch_assoc()
mysqli_fetch_array()
mysqli_num_rows()
mysqli_insert_id()
mysqli_close()

В результате этих несложных действий данные из БД должны успешно собираться и отправляться.

Кодировка

Настоящий олдскул — это сайт в CP1251 (как минимум). Всё превратилось в  ромбики или прочие козяблики?

incorrect

Скорее всего, достаточно будет указать кодировку в .htaccess таким образом:

php_value default_charset «cp1251»

Регулярные выражения

Также вы можете наблюдать ошибки следующего рода:

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead

Это означает, что модификатор /e, который позволял передать произвольной функции результат регулярного выражения, теперь не поддерживается. В таких случаях рекомендуется использовать функцию preg_replace_callback

Допустим, у нас есть такое регулярное выражение:

$string=preg_replace(«/:([a-z]{1,10}):/e», «print_smile(‘\1’)», $string)

с заменой на preg_replace_callback оно должно выглядеть вот так:

$string=preg_replace_callback(«/:([a-z]{1,10}):/», create_function(‘$matches’, ‘return print_smile($matches[1])’), $string)

здесь все просто, регулярное выражение теперь указывается в качестве первого аргумента (без модификатора /e, разумеется), а в качестве второго аргумента указывается анонимная функция (которая будет выполнена после применения регулярного выражения) с двумя аргументами: массив $matches, где будут сохранены данные, совпадающие с регулярным выражением и вызов внешней функции с аргументами. В данном примере внешняя функция называется print_smile и ей передается аргументом первое найденное вхождение. То, что в preg_replace было \1 (первое найденное вхождение) станет $matches[1] (если аргументов было больше, то будет $matches[2], $matches[3] и так далее).

Вот еще один пример, посложнее:

Было так:

$out=preg_replace(«/<[Rr][Mm]( [Mm][Ss][Gg]=[’»]{0,1}|)(.*?)([’»]{0,1})>(.*?)</[Rr][Mm]>/es», «feed_out_sub_rm(‘\2′,’$base_prefix’,’$nick’,’$id_entry’)», $out)

Стало вот так:

$out=preg_replace_callback(‘/<[Rr][Mm]( [Mm][Ss][Gg]=[’»]{0,1}|)(.*?)([’»]{0,1})>(.*?)</[Rr][Mm]>/s’, create_function(‘$matches’, ‘return feed_out_sub_rm($matches[2], «‘.$base_prefix.’», «‘.$nick.’», «‘.$id_entry.’»)    ‘), $out)

здесь легко запутаться в кавычках, будьте внимательны.

Копаясь в регулярных выражениях, можно вспомнить еще про две функции, которые с версии PHP 5.3.0 считаются устаревшими (и не поддерживаются). Симптомы следующие:

Fatal error: Uncaught Error: Call to undefined function ereg_replace()

Если регулярное выражение в ereg_replace простое, то можно обойтись просто установкой граничных символов, как здесь:

$str=ereg_replace(«[rtn]»,»»,$str)
$str=preg_replace(«/[rtn]/»,»»,$str)

Аналогичный симптом:

Fatal error: Uncaught Error: Call to undefined function split()

Было:

$var_pair=split(«=»,$tmp[3])

Стало:

$var_pair=explode(«=»,$tmp[3])

Если регулярное выражение посложнее, то пробуем преобразовать к preg_split.

На этом пока все. Удачной отладки.
Много полезных материалов по теме можно найти на сайте разработчиков.

Если что-то не получается, или ваш случай совсем не похож на наши примеры — пишите комментарии, попробуем разобраться вместе.

Для того, чтобы оставлять комментарии к посту, авторизуйтесь, используя свой аккаунт в социальных сетях ВКонтакте/FaceBook, или аккаунт в Google/Яндекс.

php7_elephant

  • #1

Hello, I have a site that runs and must launch a CRON task all X periods.
This task imports orders into a commercial administration software.

This one is in PHP 5.6 php-fpm on easyapache4

The import of the commands in manual works, but in automatic, task CRON I have this error:

Fatal error: Uncaught Error: Call to undefined function eregi() in /home/xxxxx/public_html/scripts/ecommerce/ws_import.php:32
Stack trace:
#0 {main}
thrown in /home/xxxxx/public_html/scripts/ecommerce/ws_import.php on line 32
Import end dim. mars 18 10:50:02 CET 2018

Line 32 of this file is:

Code:

if (eregi ('([^ \ /] +) $', $ script_file, $ reg)) $ script_file = $ reg [1];

Thanks for your help

rpvw

rpvw

Well-Known Member


  • #2

The ereg(i) function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0.

You probably should upgrade or rewrite the script to one that uses preg_match instead of eregi

An alternative is to ask your webhost to install a PHP 5.2 version if it is not already available to you, and switch to that.

If your orders > import > administration software principally run on a PHP version higher than 5.2, you will be better using the highest recommended PHP version for the orders and admin software, and re-writing the importation routines to be compatible.

This is not really a cPanel issue, and you will probably get better help from forums like eg Stack Overflow

Last edited: Mar 18, 2018

  • #3

Is this a piece of software that you wrote or that you obtained from some where else (free, commercially licensed, etc)?

If it’s something you obtained from some where else, then the script is outdated or abandoned. You need to update the script to the latest version since this version of the script is obviously not written for modern PHP versions and likely has many other security holes that malicious users may be able to abuse. If you are using the latest version, then the script is likely abandoned by it’s developer because eregi() has been deprecated for some time. Any developer worth their weight would have resolved this years ago.

  • #4

Thanks to you 2 for this information.

  • #5

Barring updating the code, it’s likely that your command line php is just running a later version than the site.

If your cron starts with php or /usr/bin/php or similar you can try changing it to:

/opt/cpanel/ea-php56/root/usr/bin/php

to specifically use the same version as your site.

rpvw

rpvw

Well-Known Member


  • #6

I’m going to hazard a guess the file in question is the one detailed at FHenry/speedealing and which would seem to have been first committed to github circa 2011

Perhaps the author can provide you with an up-to-date version — or help you bring your version up-to-date.

The previous suggestion from kdean does rather have some value although I wonder if you shouldn’t be calling the PHP 5.2 bianry for the cron job (assuming it is available) if you don’t want to get continual error messages.

Last edited: Mar 18, 2018

cPanelMichael


  • #8

Hello,

I’ve marked this thread as solved.

Thank you.

Аватар пользователя Arturus
Arturus


4 октября 2018 в 14:32


При переезде проекта на Drepal 6 на новый сервер с php7 получил сообщение
Notice: Trying to get property of non-object in /srv/http/includes/path.inc on line 50
в этой строке вижу код
<?php  $path_language $path_language $path_language $language->language;?>
Подскажите, как это вылечить?

  • Есть вопрос
  • Решение проблем
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Комментарии

Аватар пользователя Semantics
Semantics


4 октября 2018 в 14:38



1


заводить шестёрку на php 7 — это большое колдунство

Аватар пользователя Andruxa
Andruxa


4 октября 2018 в 17:52




LTS вроде поддерживает php7, но там маловато контрибных модулей.

Аватар пользователя sas@drupal.org
sas@drupal.org


5 октября 2018 в 7:36




Аватар пользователя Arturus
Arturus


5 октября 2018 в 8:27




А без ubercart ? А проблема с views решена?

Аватар пользователя sas@drupal.org
sas@drupal.org


5 октября 2018 в 9:08




Убер- только модули адаптированы , можно выбросить — но не суть, views пофиксин

P.S. Это рабочий адопт используется на сайтах.

Аватар пользователя Arturus
Arturus


5 октября 2018 в 9:11




Аватар пользователя sas@drupal.org
sas@drupal.org


5 октября 2018 в 9:14




Учти — это update, если сайта нет — сначала поставь коробку а потом обнови файлы из сборки.
Если будут вопросы для оперативной связи пиши скайп / летегу.

Аватар пользователя Arturus
Arturus


6 октября 2018 в 5:08




В update нет модуля filter, выдает ошибку на split() в filter.module строка 914, заменил на explode

Аватар пользователя Arturus
Arturus


5 октября 2018 в 9:14




Как раз то, что нужно, сайт есть, но переехал на хостинг где php7

Аватар пользователя Arturus
Arturus


6 октября 2018 в 5:17




Fatal error: Uncaught Error: Call to undefined function ereg() in /includes/file.inc:973
Заменил на preg_match

Аватар пользователя Arturus
Arturus


6 октября 2018 в 5:20




Fatal error: Uncaught Error: Call to undefined function split() in /modules/filter/filter.module:914

Аватар пользователя Arturus
Arturus


6 октября 2018 в 5:21




Сейчас выдает
Notice: unserialize(): Error at offset 499 of 986 bytes in /srv/http/includes/bootstrap.inc on line 817

Notice: unserialize(): Error at offset 143 of 291 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 135 of 267 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 125 of 224 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 42 of 83 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 20 of 37 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 315 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 43 of 315 bytes in /srv/http/includes/bootstrap.inc on line 559

Аватар пользователя Arturus
Arturus


6 октября 2018 в 6:18




Warning: Cannot modify header information — headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 734

Warning: Cannot modify header information — headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 735

Warning: Cannot modify header information — headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 736

Warning: Cannot modify header information — headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 737

Notice: Trying to get property of non-object in /srv/http/includes/path.inc on line 63

Аватар пользователя sas@drupal.org
sas@drupal.org


6 октября 2018 в 8:25



1


У Вас свой sites/default/settings из аповского надо добавить

if (!function_exists(‘ereg’)) {
  function ereg($pattern, $subject, array &$matches = NULL) {
    return preg_match(‘%’ . $pattern . ‘%’, $subject, $matches);
  }
}
if (!function_exists(‘eregi’)) {
  function eregi($pattern, $subject, array &$matches = NULL) {
    return preg_match(‘%’ . $pattern . ‘%i’, $subject, $matches);
  }
}
if (!function_exists(‘ereg_replace’)) {
  function ereg_replace($pattern, $replacement, $string) {
    return preg_replace(‘%’ . $pattern . ‘%’, $replacement, $string);
  }
}
if (!function_exists(‘eregi_replace’)) {
  function eregi_replace($pattern, $replacement, $string) {
    return preg_replace(‘%’ . $pattern . ‘%i’, $replacement, $string);
  }
}
if (!function_exists(‘split’)) {
  function split($pattern, $subject, $limit) {
    return preg_split(‘%’ . $pattern . ‘%’, $subject, $limit);
  }
}
if (!function_exists(‘spliti’)) {
  function spliti($pattern, $subject, $limit) {
    return preg_split(‘%’ . $pattern . ‘%i’, $subject, $limit);
  }
}

+

Изменена секция

/**
 * PHP settings:
 *
 * To see what PHP settings are possible, including whether they can
 * be set at runtime (ie., when ini_set() occurs), read the PHP
 * documentation at http://www.php.net/manual/en/ini.php#ini.list
 * and take a look at the .htaccess file to see which non-runtime
 * settings are used there. Settings defined here should not be
 * duplicated there so as to avoid conflict issues.
 */

ini_set(‘arg_separator.output’,     ‘&amp;’);
ini_set(‘magic_quotes_runtime’,     0);
ini_set(‘magic_quotes_sybase’,      0);
ini_set(‘session.cache_expire’,     200000);
ini_set(‘session.cache_limiter’,    ‘none’);
ini_set(‘session.cookie_lifetime’,  2000000);
ini_set(‘session.gc_maxlifetime’,   200000);
#ini_set(‘session.save_handler’,     ‘user’);
ini_set(‘session.use_cookies’,      1);
ini_set(‘session.use_only_cookies’, 1);
ini_set(‘session.use_trans_sid’,    0);
ini_set(‘url_rewriter.tags’,        »);

Аватар пользователя Arturus
Arturus


6 октября 2018 в 8:28




Во как, красиво! Попробую!

Аватар пользователя Arturus
Arturus


6 октября 2018 в 15:10




Внес изменения в sites/default/settings
Но Notice: unserialize(): Error at offset… остались

Аватар пользователя Orion76
Orion76


6 октября 2018 в 9:07




Определенная версия ПО (Программное Обеспечение)(в данном случае Drupal 6) разрабатывается и тестируется на определенном окружении (php, mysql и т.п.)
Разработчики могут гарантировать более-менее стабильную работу ПО только в том окружении, в котором это ПО тестировалось и показало удовлетворительные результаты тестирования.

Если вы решили использовать ПО не в том окружении для которого разрабатывалось данное ПО с использованием костылей, могу дать несколько советов:
1.Начинайте регулярно употреблять седативные средства (валокордин и прочие фенобарбиталы). Ибо когда в самый неожиданный момент и с самыми неожиданными последствиями все начнет работать не так как ожидалось, вам понадобится как минимум «холодная голова», как максимум чтобы не пришлось задействовать саппорт «Скорая медицинская помощь» для восстановления жизненных функций собственного организма.
2.Учредите статью расходов для восстановление работоспособности сайта при сбоях из-за костылезации его эксплуатации, и начинайте накапливать на ней ден.средства.
3.Застрахуйте бизнес и начинайте выплачивать страховые взносы.
4.На всякий пожарный, вывезите родных и близких в безопасное место.

или

возьмите нормальный облачный сервер, обеспечьте на нем необходимое для сайта окружение и забудьте про первую часть этого комментария.
Сейчас облачные выделенные сервера стоят копейки.

Аватар пользователя Arturus
Arturus


6 октября 2018 в 16:50




Проверяю таблицу variable на ошибки, выводит пустые строки

foreach($result as $variable){

$variables[$variable->name] = @unserialize($variable->value);

if ($variables[$variable->name] === FALSE) {
print $variable->name . ‘=’ . $variable->value . ‘***
‘;

}
}

Аватар пользователя Arturus
Arturus


6 октября 2018 в 17:13




Хотя нет, не пустые
admin_theme=s:7:»garland»;

boost_cache_css=i:1;

а как это вылечить?

Аватар пользователя sas@drupal.org
sas@drupal.org


6 октября 2018 в 18:58




Сайт заработал?
Почему @unserialize а не unserialize?
Почему name д.б. FALSE ?
Подключение к базе типа, прошло? $db_url = ‘mysqli://username:password@localhost/databasename’;
mysqli

Аватар пользователя Arturus
Arturus


7 октября 2018 в 3:14




Критические ошибки исчезли, но остались
Notice: unserialize(): Error at offset 143 of 291 bytes in /srv/http/includes/bootstrap.inc on line 559

Notice: unserialize(): Error at offset 135 of 267 bytes in /srv/http/includes/bootstrap.inc on line 559
….
Можно авторизоваться, можно зайти в админку.

Подключение mysqli прошло без проблем

name д.б. FALSE — хочу вывести только проблемные записи
https://ru.stackoverflow.com/questions/862775/%D0%9E%D1%88%D0%B8%D0%B1%D…

Аватар пользователя sas@drupal.org
sas@drupal.org


7 октября 2018 в 8:54




Ага что-то индивидуальное, ясно.

Аватар пользователя Arturus
Arturus


7 октября 2018 в 13:41




Честно говоря не понимаю почему у меня возникает Notice: unserialize(): Error at offset 143 of 291 bytes
Сравнил значения в таблицах variable на старох хостинге и на новом, все идентично. Кодировки таблиц тоже.

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-27, 07:46 PM

With the latest version of MyBB 1.8, when setting the PHP version in the hosting configuration to PHP v7.2, we are experiencing the below error message in the web browser upon new user registration, after submitting the details on Page 1, and posting:

Quote:Fatal error: Uncaught Error: Call to undefined function ereg() in /home/admin/public_html/mybb/member.php:184 Stack trace: #0 {main} thrown in /home/admin/public_html/mybb/member.php on line 184

However after changing back to PHP v5.6, everything works fine. What is the problem and can this be resolved?

Posts: 9,866
Threads: 594
Joined: Jan 2006

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-27, 08:36 PM

«Call to undefined function ereg()» is your clue.

It’s a deprecated function.

https://www.php.net/manual/en/function.ereg.php

I thought MyBB manually added it though for backward compatibility. What version of MyBB are you running?

You can try to use preg_match(). You’ll edit line 184 in member.php.

Posts: 191
Threads: 1
Joined: Jul 2019

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-27, 08:39 PM

(2019-10-27, 07:46 PM)stevef Wrote: With the latest version of MyBB 1.8, when setting the PHP version in the hosting configuration to PHP v7.2, we are experiencing the below error message in the web browser upon new user registration, after submitting the details on Page 1, and posting:

Quote:Fatal error: Uncaught Error: Call to undefined function ereg() in /home/admin/public_html/mybb/member.php:184 Stack trace: #0 {main} thrown in /home/admin/public_html/mybb/member.php on line 184

However after changing back to PHP v5.6, everything works fine. What is the problem and can this be resolved?

That function doesn’t exist in newer versions of PHP, however, it’s not there with a default MyBB install, so my guess is that it’s caused by a plugin meant for an older version of PHP. Try checking for a newer version of the plugin or contact the developer. Smile

Posts: 5
Threads: 0
Joined: Oct 2019

Reputation:

0

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-28, 07:55 AM

It is indeed seems to be a plugin issue… I just installed Mybb for my new sites and noticed php error page when activating certain plugins on phph 7.2 and after changing the version back to 5.6 everything works normally.
I think if you needs the plugins (like me) then it is better to stick with 5.6 for now.

Posts: 2,199
Threads: 95
Joined: Feb 2007

Reputation:

271

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-28, 09:52 AM

(2019-10-28, 07:55 AM)Muti Wrote: It is indeed seems to be a plugin issue… I just installed Mybb for my new sites and noticed php error page when activating certain plugins on phph 7.2 and after changing the version back to 5.6 everything works normally.
I think if you needs the plugins (like me) then it is better to stick with 5.6 for now.

I think that if you need the plugins, it’s better to make them working with php 7.2. Contact the developper and notice him that the plugin is incompatible with newer versions of PHP, detailling the encountered errors or warnings.

Do not ask me help through PM or Discord

Posts: 766
Threads: 164
Joined: Aug 2009

Reputation:

5

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-28, 04:54 PM

I just went through this with my forums and found 2 plugins that caused problems with PHP 7.2…

Askimet
PHP and Template Conditionals (2.1)

MyBB 1.8.22 (x4)
7173Mustangs.com, pa2a.org, pazrt.com & paguntalk.com

Posts: 9,866
Threads: 594
Joined: Jan 2006

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-29, 01:50 AM

What makes members think this is a plugin when it’s member.php which is called in the error?

Usually if it’s a plugin then that file in the inc/plugins/ folder will get displayed.

Posts: 2,136
Threads: 103
Joined: Oct 2015

Reputation:

223

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-29, 06:03 AM

The latest MyBB does not have these issues. So it must be code or plugin related. Alternatively the OP does not have the latest MyBB installed.

What goes around comes around

Posts: 523
Threads: 46
Joined: Jul 2016

Reputation:

57

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-29, 11:29 AM

(2019-10-29, 01:50 AM)labrocca Wrote: What makes members think this is a plugin when it’s member.php which is called in the error?

Some plugins modify core files when activated, and remove the edit when deactivated.

Posts: 2,199
Threads: 95
Joined: Feb 2007

Reputation:

271

Solved: 3 Years, 3 Months, 1 Week ago

2019-10-29, 11:54 AM

(2019-10-29, 11:29 AM)HLFadmin Wrote:

(2019-10-29, 01:50 AM)labrocca Wrote: What makes members think this is a plugin when it’s member.php which is called in the error?

Some plugins modify core files when activated, and remove the edit when deactivated.

Plugins may NEVER modify core.

Do not ask me help through PM or Discord

0 Пользователей и 1 Гость просматривают эту тему.

  • 11 Ответов
  • 4405 Просмотров

Доброго дня. В админке, после удаления компонента K2, при сохранении материала выдает: Обнаружена ошибка.  0 Call to undefined function ereg() .
При этом материал сохраняется. При сохранении категорий такой ошибки нет, только материалов. Если зайти в менеджер материалов, то статья будет отмечена замочком. Сей факт вызывает не удобство, так как не понятно чего ожидать в дальнейшем. После обновления движка, ошибка сохраняется.
Помоги разобраться и по возможности исправить. За ранее спасибо.

Какое-то дремучее расширение, которое у Вас установлено, использует дремучую функцию ereg — эта функция была удалена из PHP7. Здесь три решения: 1 — обновить данное расширение, 2 — заменить функцию ereg на preg_match, 3 — откатиться до PHP5.

Какое-то дремучее расширение, которое у Вас установлено, использует дремучую функцию ereg — эта функция была удалена из PHP7. Здесь три решения: 1 — обновить данное расширение, 2 — заменить функцию ereg на preg_match, 3 — откатиться до PHP5.

Спасибо за отклик.
Если рассмотреть 1 решение, то мне нужно по новой установить K2?  И потом опять его снести?
3 решение не хочется, так как действительно стоит  PHP7
2 решение -без вашей помощи не смогу поправить, если это будет более правильный вариант, то пожалуйста подскажите где заменить.  Еще раз спасибо. 

Вы корректно удалили К2?
Таблицы посмотрите в БД-остались или нет?!
И шаблон не привязан к К2? Может там переопределение было или правка шаблона под компонент?

Записан

Миграция, установка, обновление версий Joomla  |  Создание сайтов «под ключ»  |  Эксклюзивные заглушки «offline»  |  Работа с «напильником» над шаблонами и расширениями

Вы корректно удалили К2?
Таблицы посмотрите в БД-остались или нет?!
И шаблон не привязан к К2? Может там переопределение было или правка шаблона под компонент?

Удаляла через менеджер расширений. Таблицы были, сейчас удалила, ситуация та же. Шаблон protostar, шаблон не правила.

У вас с «0» Joomla или вы какой-то квик правите?

Записан

Миграция, установка, обновление версий Joomla  |  Создание сайтов «под ключ»  |  Эксклюзивные заглушки «offline»  |  Работа с «напильником» над шаблонами и расширениями

У вас с «0» Joomla или вы какой-то квик правите?

Да с нуля. Косяк произошел когда решила избавиться от K2. Удалила сначала статьи, потом категории, потом расширение. Возможно не досмотрела что то, или поломала  :o

Удалите значит сайт, установите с «0» Joomla.
Если уже много статей-БД просто импортируйте.
Ошибки точно не будет.

Если К2 нужен-установите последнюю версию.

Записан

Миграция, установка, обновление версий Joomla  |  Создание сайтов «под ключ»  |  Эксклюзивные заглушки «offline»  |  Работа с «напильником» над шаблонами и расширениями

В админке, после удаления компонента K2, при сохранении материала выдает: Обнаружена ошибка.  0 Call to undefined function ereg() .

ну помимо компонента там наверно есть еще плагины, которые тоже наверно надо удалить

ну помимо компонента там наверно есть еще плагины, которые тоже наверно надо удалить

Проверила, плагинов, модулей нет. В базе тоже вроде чисто.

Удалите значит сайт, установите с «0» Joomla.
Если уже много статей-БД просто импортируйте.
Ошибки точно не будет.

Если К2 нужен-установите последнюю версию.

если решения не будет, придется сносить.  K2 -точно не нужен. 

Зайдите в терминал (SSH), перейдите в директорию сайта и найдите в ней все файлы, содержащие строку ereg, набрав команду:

grep -rwl «ereg»

Покажите, что получилось.

Зайдите в терминал (SSH), перейдите в директорию сайта и найдите в ней все файлы, содержащие строку ereg, набрав команду:

grep -rwl «ereg»

Покажите, что получилось.

Спасибо всем, решение принимаю в пользу снести всё к бабушке.

« Последнее редактирование: 03.05.2017, 15:27:06 от Элана »

Записан

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Fatal error uncaught error call to a member function setpageproperty
  • Fatal error uncaught error call to a member function fetch on boolean in
  • Fatal error uncaught error array callback has to contain indices 0 and 1
  • Fatal error викед вимс
  • Fatal error арт

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии