php call to undefined function split

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

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

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

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

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

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

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

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

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

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

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 call to undefined function split. Смотреть фото php call to undefined function split. Смотреть картинку php call to undefined function split. Картинка про php call to undefined function split. Фото php call to undefined function split

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/Яндекс.

Источник

Ошибка “Function ereg() или split() is deprecated in” как решить проблему?

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

Вы также получаете эту устаревшую ошибку при работе с Joomla 2.5 или 3.0? Не волнуйтесь, с вашей установкой Joomla ИЛИ шаблоном все в порядке, это можно исправить за считанные минуты.

Вы получите сообщение об устаревшей ошибке, если некоторые функции PHP, такие как split (), несовместимы с версией PHP.

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

1. PHP 5.3 и более поздние версии больше не поддерживают функции split () и ereg (). поэтому вы можете просто понизить версию PHP до версии 5.2 ИЛИ меньше, и эта ошибка будет исправлена.

2. Другой вариант – изменить функцию. Вы можете заменить функцию split () функцией explode (), которая поддерживается в PHP 3 и более поздних версиях. Сделайте то же самое для функции ereg (). – Это очень рекомендуемый вариант.

3. Если вы не уверены ИЛИ не хотите вносить какие-либо изменения, указанные выше, вы можете просто скрыть эту ошибку, отключив отчет об ошибках в файле конфигурации Joomla.

Если же есть проблема не работающих функций в новой версии.

А именно таких функций: ereg(), eregi() и split(). После переноса наших сайтов на версию PHP 5.3 начали появляться ошибки типа: Function ereg() is deprecated in, Function eregi() is deprecated in или function split() is deprecated in.

Ошибку Function ereg_replace() is deprecated in можно пофиксить всего лишь заменив ereg_replace на preg_replace.

Аналогичным образом решается ошибка: deprecated: function set_magic_quotes_runtime() is deprecated in

Нужно сделать так к примеру:

@set_magic_quotes_runtime(0); заменить на ini_set(‘magic_quotes_runtime’, 0);

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

Оставляйте ваши отзывы или пишите ваши вопросы в комментарии, постараемся помочь если у вас возникнут трудности.

Источник

Админу.Ру

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

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

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

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

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

php call to undefined function split. Смотреть фото php call to undefined function split. Смотреть картинку php call to undefined function split. Картинка про php call to undefined function split. Фото php call to undefined function splitИспользование функций 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 call to undefined function split. Смотреть фото php call to undefined function split. Смотреть картинку php call to undefined function split. Картинка про php call to undefined function split. Фото php call to undefined function splitPHP7 Fatal error: Uncaught Error: Call to undefined function split()

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

Источник

Fatal error: Call to undefined function pg_connect()

I am trying to connect to my database (remote server) which has PostgreSQL installed in it. My PHP code is trying to connect to the database using pg_connect(), but I get the error saying:- «Fatal error: Call to undefined function pg_connect() in /var/www/website/functions.php on line 82».

The line 82 simply is:

(all variables defined earlier)

I checked many forums and the only solution suggested was locating the php.ini file which contains a line:- extension = pgsql.so (for UNIX) and extension = php_pgsql.dll (for Windows).

This statement is supposed to be commented and the solution is to uncomment it. I have tried it but still does not change the situation. The remote server has a version later than PostgreSQL v9.0.4 installed. I then installed PostgreSQL v8.4.8 on to my laptop and ran the website locally using MAMP. At first, Apache crashed for some odd reason, I fixed that problem but again I ended up with the same error as before i.e. Fatal error: Call to undefined function pg_connect().

I also ran the phpinfo() and it showed that the php version does support the PostgreSQL module.I have spent an entire day searching for the solution but have been unsuccessful. This is my first project developing a website and I am out of wits. Any kinda help will be highly appreciated.

phpinfo() gives me a huge list of things at the terminal but the listings relevant to PostgreSQL are as follows:-

I had restarted MAMP after every edit I made since it was mentioned in every post I have read so far. I believe that resets both Apache and php.

‘pqsql.so’ (which is the UNIX equivalent of ‘php_pqsql.dll’ in Windows) is present in the ‘extension’ directory. I also copy-pasted the ‘pqsql.so’ file on to the Apache/bin directory but it did not give me any change.

I am not running php in the command line primarily. I just was curious to see what phpinfo() would give me relevant to pgsql which I have mentioned in my reply above.

I am still working on the tools you have mentioned and will respond as soon as I get any results.

Источник

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

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