php fatal error uncaught error call to undefined function

Fatal error: Uncaught Error: Call to undefined function mysql_connect() — как исправить

PHP 7 является новой версией языка программирования. Её предшественницей считается PHP 5, т. к. 6 версия так и не была выпущена для общего пользования в связи с возникшими во время разработки проблемами. Но это отдельная тема, а сегодня мы разберем, когда при переводе сайта с PHP 5 на PHP 7 возникает ошибка Fatal error: Uncaught Error: Call to undefined function mysql_connect(), и как её исправить, чтобы наш ресурс заработал быстрее, стабильнее и надежнее.

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

С чем связана ошибка Fatal error

Ошибка, начинающаяся словами «Fatal error: Uncaught Error:», вызывает прекращение работы скрипта. В нашем случае она вместе с рядом других часто появляется при переводе старого сайта с PHP 5 на PHP 7. Выскакивают либо сообщения с уведомлениями об ошибках, либо просто висит белый экран. Здесь есть 2 пути – либо вернуть все назад, переключившись в панели управления хостингом, либо проявить настойчивость, разобраться с этой ошибкой и работать уже с новой версией PHP. Итак, давайте посмотрим, с чем же конкретно связана наша ошибка.

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

Как видно из самого названия ошибки, проблема связана с тем, что новые версии PHP (начиная с v. 5.5.0) не осуществляют поддержку оригинального расширения MySQL, в связи с чем сайт не собирает и не отправляет данные из БД. В этом случае разработчики предлагают перейти на расширения PDO или MySQLi. Попробуем выполнить несколько простых действий по переходу на MySQLi. Также пользователи иногда сталкиваются с ошибкой Error CertEnroll, возникающей в процессе создания запроса на выпуск сертификата на сайте “Росказна”.

Создание резервных копий сайта

Прежде чем предпринимать какие-либо серьезные попытки исправить Fatal error: Uncaught Error: Call to undefined function mysql_connect, необходимо создать резервные копии своего сайта и БД. Также для того, чтобы была неограниченная возможность экспериментировать, добавляем на хостинге еще один сайт и копируем туда файлы, в которые будем вносить различные корректировки. Подобный подход поможет избежать последствий необдуманных или неосторожных действий с данными – мы их уже не потеряем, т. к. они дополнительно хранятся в резервных копиях. Это актуально при решении различных задач, например, при отладке кода на JavaScript иногда приходится решать ошибку TypeError: Cannot read property ‘xxx’ of undefined.

Настройка журнала ошибок

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

Переводим сайт на MySQLi

Итак, вначале вносим коррективы в конструкцию, при помощи которой сайт подключается к базе данных. Открываем действующую запись.

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

В конструкцию, отвечающую за запросы, также вносим изменения. Берем действующую запись.

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

Теперь выглядит так.

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined functionИзмененная конструкция, отвечающая за запросы

Открываем следующие популярные функции:

И везде производим замену mysql на mysqli. Наша картина выглядит следующим образом.

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

Теперь сбор и отправка информации из БД должны осуществляться без сбоев.

CP1251 и PHP 7 – как расшифровать непонятный набор символов

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined functionИсправляем ситуацию в сайте, написанном при помощи CP1251

Проблемы с компьютером возникают нередко, и многие из них нужно научиться устранять самостоятельно. Например, это такие ситуации, как ошибка html5 Video file not found при просмотре видеороликов в сети или ошибки 0x0001, 0x0003 в дополнительной утилите Nvidia GeForce Experience.

Заключение

В этой статье мы рассмотрели, почему при переводе сайта с PHP 5 на PHP 7 возникает ошибка Fatal error: Uncaught Error: Call to undefined function mysql_connect(), и рассмотрели пути ее решения. Сложного в этом ничего нет, были внесены небольшие коррективы в конструкции, отвечающие за подключение к БД и за запросы. Также коснулись ситуации, когда сайт написан с использованием старой кодировки CP1251. Надеюсь, что предложенные варианты помогут вам исправить ситуацию и без проблем работать на PHP 7.

Источник

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

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

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

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

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

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

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

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

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

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

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, это просто:

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

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

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

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

Кодировка

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

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined function

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 оно должно выглядеть вот так:

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

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

Копаясь в регулярных выражениях, можно вспомнить еще про две функции, которые с версии 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/Яндекс.

Источник

Админу.Ру

Библиотека вебмастера по созданию и продвижению сайта

Ошибка 500 после перевода сайта на PHP 5.5 или PHP 7

Проблема, с которой сталкиваются многие программисты после перевода площадки на современную версию PHP, — вероятная полная или частичная потеря работоспособности программного обеспечения на одном или нескольких сайтах площадки. Не предавайтесь панике, всё решаемо!

Использование функций mysql_connect(), mysql_select_db(), mysql_query() и т.д.

В PHP 7 разработчики отказались от расширения mysql, все использования функций расширения приводят к фатальной ошибке (Call to undefined function).

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined functionИспользование функций mysql_connect(), mysql_select_db(), mysql_query() и т.д.

Как заменить неработающие функции mysql_connect(), mysql_select_db(), mysql_query()? Ошибка «PHP Fatal Error: Call to undefined function»

Решения проблемы есть и даже не одно!

Есть достойная альтернатива mysql — расширение mysqli. Функции расширения соответствуют старым (большая часть):

1. Если у вас небольшой проект, вам будет несложно через поиск найти несколько строк в коде с функциями, начинающимися с «mysql_*» расширения mysql. Вручную отредактируйте код, заменив «mysql_*» на «mysqli_*».

2. Если у вас большой проект или вы очень активно пользовались функциями расширения mysql, вам будет непросто поменять все упоминания устаревших функций. В таком случае вам поможет следующее решение. Создайте PHP-файл, в котором определите функции с именами исключённых, которые будут ссылаться на соответствующие функции расширения mysqli.

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

Данный код сохраните в файл, назовите его, например, deletedmysql.php и сохраните в корне сайта (на одном уровне с index.php главной страницы сайта).

В каждый PHP-файл, в котором встречается ошибка, добавьте строку в самое начало файла, после открывающего кода:

Совсем идеально будет добавить проверку на версию PHP, так как при переезде на другую площадку или понижении версии PHP до 5.x вы получите ошибку PHP: Fatal error: Cannot redeclare…

Маленький лайфхак для тех, кому понравился способ 2. Используйте это решение только в качестве временной заглушки. При удобном случае перепрограммируйте код на использование новых функций.

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

В PHP 7 функция spit() — разбиение строки на массив по регулярному выражению, — была исключена. Альтернатива есть, функции preg_split(), str_split(), explode().

php fatal error uncaught error call to undefined function. Смотреть фото php fatal error uncaught error call to undefined function. Смотреть картинку php fatal error uncaught error call to undefined function. Картинка про php fatal error uncaught error call to undefined function. Фото php fatal error uncaught error call to undefined functionPHP7 Fatal error: Uncaught Error: Call to undefined function split()

В приведённом примере разбить командную строку можно любой функцией. Лично я предпочитаю explode().

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *