Fatal error uncaught error call to undefined function split in

I'm using php 7.2x After starting sitepod I got the following error-message: AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function split() in /var/www...

@Pyradur

I’m using php 7.2x
After starting sitepod I got the following error-message:
AH01071: Got error ‘PHP message: PHP Fatal error: Uncaught Error: Call to undefined function split() in /var/www/vhosts/domainname.tld/httpdocs/vendor/nasa/sitepod/inc/classes/Crawler.class.php:340

This is because split() is in php 7.x removed!
Therefore split() must be replaced with str_split().
Because I’m not firm with GIT I can’t do that.

@sigee

Hi @Pyradur,
I’ve checked what you wrote and I found that you use an old sitepod version.
I’ve already fixed the split issue. We just haven’t release it yet.
You can download the newest version from here.

@lewismc

@Pyradur I made a 1.6.0 release of the codebase so it should now be available. Thank you for registering the issue.

@Pyradur

Hi there,

after «installing» (copying) the newst version and starting sitepod I hat the following error_messages in my log-file:

AH01071: Got error ‘PHP message: PHP Warning: include_once(/var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/sitepod/inc/../vendor/autoload.php): failed to open stream: No such file or directory in /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/sitepod/inc/startup.php on line 31
PHP message: PHP Warning: include_once(): Failed opening ‘/var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/sitepod/inc/../vendor/autoload.php’ for inclusion (include_path=’.:/opt/plesk/php/7.1/share/pear:./inc:./inc/functions:./inc/classes:./settings:./templates’) in /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/sitepod/inc/startup.php on line 31
PHP message: PHP Fatal error: Uncaught Error: Class ‘Sitepod\GeoIp’ not found in /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/sitepod/inc/startup.php:34
Stack trace:
#0 /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/sitepod/index.php(17): require_once()
#1 {main}
thrown in /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/sitepod/inc/startup.php on line 34′

Mit freundlichen Grüßen

Reinhold Riedersberger

DVI-Service
Reinhold Riedersberger
Oderstraße 98
78052 Villingen-Schwenningen

Telefon : (07721) 70057
Telefax : (07721) 70058
eMail : info@dvi-service.de
Internet: www.dvi-service.de
———————————————————————

Hi @Pyradur,
I’ve checked what you wrote and I found that you use an old sitepod version.
I’ve already fixed the split issue. We just haven’t release it yet.
You can download the newest version from here.

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@sigee

@Pyradur

Hi there,

after using composer I got the following error:

Maybe you can help me…?

AH01071: Got error ‘PHP message: PHP Warning: include_once(/var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/vendor/nasa/sitepod/inc/../vendor/autoload.php): failed to open stream: No such file or directory in /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/vendor/nasa/sitepod/inc/startup.php on line 31nPHP message: PHP Warning: include_once(): Failed opening ‘/var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/vendor/nasa/sitepod/inc/../vendor/autoload.php’ for inclusion (include_path=’.:/opt/plesk/php/7.1/share/pear:./inc:./inc/functions:./inc/classes:./settings:./templates’) in /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/vendor/nasa/sitepod/inc/startup.php on line 31nPHP message: PHP Fatal error: Uncaught Error: Class ‘Sitepod\GeoIp’ not found in /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/vendor/nasa/sitepod/inc/startup.php:34nStack trace:n#0 /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/vendor/nasa/sitepod/index.php(17): require_once()n#1 {main}n thrown in /var/www/vhosts/dvi-service.de/httpdocs/etikettenagentur.de/admin_fremd/vendor/nasa/sitepod/inc/startup.php on line 34n’

Hi @Pyradur,
Sitepod is depending on composer.
Here is the installation giude:
https://github.com/nasa/sitepod/wiki/Sitepod-Installation
BTW: I guess you need to run composer install, but you should check the guide.

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@lewismc

Hi @Pyradur If I were you I would purge all Sitepod material and run from a clean installation.

Содержание

  1. Бортовой журнал
  2. Полет нормальный. Без происшествий.
  3. Переход на PHP7: работа над ошибками
  4. The Joomla! Forum™
  5. PHP 7.0 and 7.1 ‘call to undefined function split()’ on User LogIn
  6. PHP 7.0 and 7.1 ‘call to undefined function split()’ on User LogIn
  7. Fatal error: Uncaught Error: Call to undefined function mysql_connect() — как исправить
  8. С чем связана ошибка Fatal error
  9. Создание резервных копий сайта
  10. Настройка журнала ошибок
  11. Переводим сайт на MySQLi
  12. CP1251 и PHP 7 – как расшифровать непонятный набор символов
  13. Заключение

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

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

Переход на 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/Яндекс.

Источник

The Joomla! Forum™

PHP 7.0 and 7.1 ‘call to undefined function split()’ on User LogIn

PHP 7.0 and 7.1 ‘call to undefined function split()’ on User LogIn

Post by Rowdie » Wed Jun 14, 2017 2:08 pm

Basic Environment :: wrote: Joomla! Instance :: Joomla! 3.7.2-Stable (Amani) 22-May-2017
Joomla! Configured :: Yes | Read-Only ( 444 ) | Owner: —protected— . (uid: 1/gid: 1) | Group: —protected— (gid: 1) | Valid For: 3.7
Configuration Options :: Offline: 0 | SEF: 1 | SEF Suffix: 0 | SEF ReWrite: 1 | .htaccess/web.config: Yes | GZip: 0 | Cache: 0 | FTP Layer: 0 | SSL: 0 | Error Reporting: default | Site Debug: 0 | Language Debug: 0 | Default Access: 1 | Unicode Slugs: 0 | Database Credentials Present: Yes

Host Configuration :: OS: Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux | OS Version: Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux | Technology: Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux | Web Server: Apache | Encoding: gzip, deflate, br | Doc Root: /kunden/homepages/12/d299163707/htdocs/richardowden.live.1412 | System TMP Writable: Yes

PHP Configuration :: Version: 5.6.30 | PHP API: cgi-fcgi | Session Path Writable: Yes | Display Errors: 1 | Error Reporting: 22517 | Log Errors To: | Last Known Error: | Register Globals: | Magic Quotes: | Safe Mode: | Open Base: | Uploads: 1 | Max. Upload Size: 64M | Max. POST Size: 64M | Max. Input Time: -1 | Max. Execution Time: 50000 | Memory Limit: 256M

MySQL Configuration :: Version: 5.5.54-0+deb7u2-log (Client:mysqlnd 5.0.11-dev — 20120503 — $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $) | Host: —protected— ( —protected— ) | Collation: latin1_general_ci ( Character Set: latin1) | Database Size: 5.40 MiB | #of Tables: 106

Detailed Environment :: wrote: PHP Extensions :: Core (5.6.30) | date (5.6.30) | ereg () | libxml () | openssl () | pcre () | sqlite3 (0.7-dev) | zlib (2.0) | bcmath () | bz2 () | calendar () | ctype () | curl () | dba () | dom (20031129) | hash (1.0) | fileinfo (1.0.5) | filter (0.11.0) | ftp () | gd () | gettext () | SPL (0.2) | iconv () | session () | intl (1.1.0) | json (1.2.1) | mbstring () | mcrypt () | standard (5.6.30) | mysqlnd (mysqlnd 5.0.11-dev — 20120503 — $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $) | PDO (1.0.4dev) | pdo_mysql (1.0.2) | pdo_sqlite (1.0.1) | Phar (2.0.2) | posix () | Reflection ($Id: 5f15287237d5f78d75b19c26915aa7bd83dee8b8 $) | imap () | shmop () | SimpleXML (0.1) | soap () | mysqli (0.1) | exif (1.4 $Id: 1c8772f76be691b7b3f77ca31eb788a2abbcefe5 $) | tidy (2.0) | tokenizer (0.1) | wddx () | xml () | xmlreader (0.1) | xmlwriter (0.1) | xsl (0.1) | zip (1.12.5) | mysql (1.0) | cgi-fcgi () | Zend Engine (2.6.0) |
Potential Missing Extensions :: suhosin |

Switch User Environment (Experimental) :: PHP CGI: Yes | Server SU: Yes | PHP SU: Yes | Custom SU (LiteSpeed/Cloud/Grid): Yes
Potential Ownership Issues: No

Folder Permissions :: wrote: Core Folders :: —protected— (755) | —protected— (755) | —protected— (755) | —protected— (755) | —protected— (755) | —protected— (755) | —protected— (755) | —protected— (705) | —protected— (755) | —protected— (755) | —protected— (755) | —protected— (755) | —protected— (755) |

Источник

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(), и как её исправить, чтобы наш ресурс заработал быстрее, стабильнее и надежнее.

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

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

Как видно из самого названия ошибки, проблема связана с тем, что новые версии 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.

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

Также настраиваем ведение журнала ошибок (если этого не было сделано ранее). Открываем файл .htaccess и корректируем информацию в нем. Она должна выглядеть следующим образом.

Мы найдем файл .htaccess, если пройдем путь /home/login/domains/domain.ru/public_html/, где login – это логин нашего аккаунта, а domain.ru – домен нашего сайта. Третья строка на картинке выше показывает, где лежит файл с ошибками PHP, которые записываются в процессе работы сайта. Открыть error.log и просмотреть журнал ошибок возможно при помощи файлового менеджера в Панели управления.

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

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

  1. Везде mysql меняем на mysqli.
  2. В первой строчке после $password через запятую добавляем $dbname.
  3. Вторую строчку mysql_select_db($dbname, $link) убираем совсем.
  4. В третьей строчке перед ‘set names cp1251’ ставим $link и запятую.

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

  1. Также заменяем mysql на mysqli.
  2. Меняем местами то, что заключено в скобки.

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

Измененная конструкция, отвечающая за запросы

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

  • mysql_fetch_array();
  • mysql_fetch_row();
  • mysql_fetch_assoc();
  • mysql_fetch_array();
  • mysql_num_rows();
  • mysql_insert_id();
  • mysql_close().

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

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

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

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

Исправляем ситуацию в сайте, написанном при помощи 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.

Источник

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

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

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

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

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

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

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

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

mysqli_fetch_array() //расширение mysqli
mysql_fetch_array()  //расширение mysql

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

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

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

<?
function mysql_connect($server, $username, $password, $new_link = NULL, $client_flags = NULL) {
  $GLOBALS['mysql_oldstyle_link'] = mysqli_connect($server, $username, $password);
  return $GLOBALS['mysql_oldstyle_link'];
 }
function mysql_query($sql) {
  return mysqli_query($GLOBALS['mysql_oldstyle_link'], $sql);
 }
function mysql_fetch_row($res) {
  return mysqli_fetch_row($res);
 }
function mysql_fetch_assoc($res) {
  return mysqli_fetch_assoc($res);
 }
function mysql_fetch_array($res) {
  return mysqli_fetch_array($res);
 }
function mysql_fetch_object($res) {
  return mysqli_fetch_object($res);
 }
function mysql_affected_rows($link = NULL) {
  if ($link===NULL) $link=$GLOBALS['mysql_oldstyle_link'];
  return mysqli_affected_rows($link);
 }
function mysql_insert_id($link = NULL) {
  if ($link===NULL) $link=$GLOBALS['mysql_oldstyle_link'];
  return mysqli_insert_id ($link);
 }
function mysql_select_db($database_name) {
  return mysqli_select_db($GLOBALS['mysql_oldstyle_link'], $database_name);
 }
function mysql_errno($link = NULL) {
  if ($link===NULL) $link=$GLOBALS['mysql_oldstyle_link'];
  return mysqli_errno($link);
 }
function mysql_error($link = NULL) {
  if ($link===NULL) $link=$GLOBALS['mysql_oldstyle_link'];
  return mysqli_error($link);
 }
function mysql_num_rows($res) {
  return mysqli_num_rows($res);
 }
function mysql_free_result($res) {
  return mysqli_free_result($res);
 }
function mysql_close($link) {
  return mysqli_close($link);
 }
function mysql_real_escape_string($sql, $link = NULL) {
  if ($link===NULL) $link=$GLOBALS['mysql_oldstyle_link'];
  return mysqli_real_escape_string($link, $sql);
 }
function mysql_get_server_info($link = NULL) {
  if ($link===NULL) $link=$GLOBALS['mysql_oldstyle_link'];
  return mysqli_get_server_info($link);
 }
 ?>

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

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

<?
include_once 'deletedmysql.php';
/* далее старый PHP-код */

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

if (version_compare(PHP_VERSION, '7.0.0', '>=')) include_once 'deletedmysql.php';

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


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

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

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

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

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

ppsg

-17 / 0 / 0

Регистрация: 05.04.2018

Сообщений: 16

1

16.04.2018, 10:30. Показов 3413. Ответов 5

Метки нет (Все метки)


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
$wordcounts = array( );
$words = split( " ", "CNN number Americans disapproving President Bush job
perance risen highest level presidency according CNN USA Today Gallup poll
released Monday According poll percent respondents disapproved Bush performance
compared percent approved margerror plus minus percentage points percent
figure highest disapproval rating recorded CNN USA Today Gallup poll Bush
president January approval percentage percent matches low point late March
point gap between those disapproved approved largest recorded during Bush tenure
As Bush prepares address nation Tuesday defend Iraq policy just percent those
responding poll approved handling war percent disapproved Full story approval
rating Iraq unchanged poll late May disapproval figure marked increase
percentage points But poll found issues other Iraq war dragging down Bush numbers
Respondents expressed stronger disapproval handling economy energy policy health
care Social Security lone bright spot president poll handling terrorism which
scored percent approval rating compared just percent disapproved presidents
worst numbers latest poll came issue Social Security respondents disapproving
performance margmore percent percent Bush made changing Social Security system
signature issue second term He proposed creating voluntary government sponsored
personal retirement accounts workers younger Under proposal workers could invest
portion their Social Security taxes range government selected funds exchange
guaranteed benefits retirement plan run instiff opposition Democrats accounts are
too risky undermine Social Security system Some Republicans are wary taking such
politically risky economy only percent poll respondents approved Bush
performance compared percent disapproved On energy policy percent approved
percent disapproved health care percent approved percent disapproved poll results
based interviews Friday Sunday American adults" );
foreach( $words as $word )
{
  $word = strtolower( $word );
  if ( strlen( $word ) > 0 )
  {
    if ( ! array_key_exists( $word, $wordcounts ) )
      $wordcounts[ $word ] = 0;
    $wordcounts[ $word ] += 1;
  }
}
 
$min = 1000000;
$max = -1000000;
foreach( array_keys( $wordcounts ) as $word )
{
  if ( $wordcounts[ $word ] > $max )
    $max = $wordcounts[ $word ];
  if ( $wordcounts[ $word ] < $min )
    $min = $wordcounts[ $word ];
  }
  $ratio = 18.0 / ( $max - $min );
?>
<html>
<head>
<style type="text/css">
body { font-family: arial, verdana, sans-serif; }
.link { line-height: 20pt; }
</style>
</head>
<body>
<div style="width:600px;">
<?php
$wc = array_keys( $wordcounts );
sort( $wc );
foreach( $wc as $word )
{
  $fs = (int)( 9 + ( $wordcounts[ $word ] * $ratio ) );
?>
<a class="link" href="http://en.wikipedia.org/wiki/<?php echo($word);
?>" style="font-size:<?php echo( $fs ); ?>pt;">
<?php echo( $word ); ?></a> &nbsp;
<?php } ?>
</div>
</body>
</html>

Fatal error: Uncaught Error: Call to undefined function split() in E:OpenServerdomainsphpCodeГлава 3. DHTMLТрюк 24. Создание диаграмм ссылокlinkgraph.php:3 Stack trace: #0 {main} thrown in E:OpenServerdomainsphpCodeГлава 3. DHTMLТрюк 24. Создание диаграмм ссылокlinkgraph.php on line 3

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Эксперт PHP

3802 / 3160 / 1326

Регистрация: 01.08.2012

Сообщений: 10,717

16.04.2018, 10:57

2



0



-17 / 0 / 0

Регистрация: 05.04.2018

Сообщений: 16

16.04.2018, 14:45

 [ТС]

3

в книге написано что все должно работать



0



494 / 359 / 235

Регистрация: 31.05.2016

Сообщений: 999

16.04.2018, 14:51

4

ppsg, у тебя книга устаревшая. Выкинь её. Вместо split используй explode.



0



-17 / 0 / 0

Регистрация: 05.04.2018

Сообщений: 16

16.04.2018, 14:54

 [ТС]

5

а как мне тогда выучить пхп?



0



494 / 359 / 235

Регистрация: 31.05.2016

Сообщений: 999

16.04.2018, 14:56

6

ppsg, по-новее книгу найди.



0



Рекурсивный акроним словосочетания «PHP: Hypertext Preprocessor»
Добро пожаловать на форум PHP программистов!

Главная
Документация
Новости
Форум

За последние 24 часа нас посетили 11467 программистов и 1168 роботов. Сейчас ищут 307 программистов …

ошибка on line 3

Тема в разделе «PHP для новичков», создана пользователем ubunta2, 16 апр 2018.


  1. ubunta2

    ubunta2
    Зэк

    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28

    PHP:
    1. <?php
    2. $wordcounts = array( );
    3. $words = split( » «, «CNN number Americans disapproving President Bush job
    4. perance risen highest level presidency according CNN USA Today Gallup poll
    5. released Monday According poll percent respondents disapproved Bush performance
    6. compared percent approved margerror plus minus percentage points percent
    7. figure highest disapproval rating recorded CNN USA Today Gallup poll Bush
    8. president January approval percentage percent matches low point late March
    9. point gap between those disapproved approved largest recorded during Bush tenure
    10. As Bush prepares address nation Tuesday defend Iraq policy just percent those
    11. responding poll approved handling war percent disapproved Full story approval
    12. rating Iraq unchanged poll late May disapproval figure marked increase
    13. percentage points But poll found issues other Iraq war dragging down Bush numbers
    14. Respondents expressed stronger disapproval handling economy energy policy health
    15. care Social Security lone bright spot president poll handling terrorism which
    16. scored percent approval rating compared just percent disapproved presidents
    17. worst numbers latest poll came issue Social Security respondents disapproving
    18. performance margmore percent percent Bush made changing Social Security system
    19. signature issue second term He proposed creating voluntary government sponsored
    20. personal retirement accounts workers younger Under proposal workers could invest
    21. portion their Social Security taxes range government selected funds exchange
    22. guaranteed benefits retirement plan run instiff opposition Democrats accounts are
    23. too risky undermine Social Security system Some Republicans are wary taking such
    24. politically risky economy only percent poll respondents approved Bush
    25. performance compared percent disapproved On energy policy percent approved
    26. percent disapproved health care percent approved percent disapproved poll results
    27. based interviews Friday Sunday American adults» );
    28. foreach( $words as $word )
    29. {
    30.   $word = strtolower( $word );
    31.   if ( strlen( $word ) > 0 )
    32.   {
    33.   if ( ! array_key_exists( $word, $wordcounts ) )
    34.   $wordcounts[ $word ] = 0;
    35.   $wordcounts[ $word ] += 1;
    36.   }
    37. }
    38. $min = 1000000;
    39. $max = 1000000;
    40. foreach( array_keys( $wordcounts ) as $word )
    41. {
    42.   if ( $wordcounts[ $word ] > $max )
    43.   $max = $wordcounts[ $word ];
    44.   if ( $wordcounts[ $word ] < $min )
    45.   $min = $wordcounts[ $word ];
    46.   }
    47.   $ratio = 18.0 / ( $max $min );
    48. ?>
    49. <html>
    50. <head>
    51. <style type=»text/css»>
    52. body { font-family: arial, verdana, sans-serif; }
    53. .link { line-height: 20pt; }
    54. </style>
    55. </head>
    56. <body>
    57. <div style=»width:600px;»>
    58. <?php
    59. $wc = array_keys( $wordcounts );
    60. sort( $wc );
    61. foreach( $wc as $word )
    62. {
    63.   $fs = (int)( 9 + ( $wordcounts[ $word ] * $ratio ) );
    64. ?>
    65. <a class=»link» href=»http://en.wikipedia.org/wiki/<?php echo($word);
    66. ?>» style=»font-size:<?php echo( $fs ); ?>pt;»>
    67. <?php echo( $word ); ?></a> &nbsp;
    68. <?php } ?>
    69. </div>
    70. </body>
    71. </html>

    Fatal error: Uncaught Error: Call to undefined function split() in E:OpenServerdomainsphpCodeГлава 3. DHTMLТрюк 24. Создание диаграмм ссылокlinkgraph.php:3 Stack trace: #0 {main} thrown in E:OpenServerdomainsphpCodeГлава 3. DHTMLТрюк 24. Создание диаграмм ссылокlinkgraph.php on line 3

    #1


    ubunta2,

    16 апр 2018


  2. Dron-Boy

    Dron-Boy
    Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126

    Эта функция объявлена УСТАРЕВШЕЙ в PHP 5.3.0, и УДАЛЕНА PHP 7.0.0.
    Какая версия PHP у тебя?

    #2


    Dron-Boy,

    16 апр 2018


  3. ubunta2

    ubunta2
    Зэк

    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28

    у меня 7
    — Добавлено —
    а если поставлю 5 , то заработает?
    я могу переставлять

    #3


    ubunta2,

    16 апр 2018


  4. Deonis

    Deonis
    Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.523
    Симпатии:
    504

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

    #4


    Deonis,

    16 апр 2018


  5. Danil005

    Danil005
    Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30

    Переставишь на 5-ю, будут проблемы с функциями из 7-го. Это палка о двух концах.
    Что тебе мешает использовать explode?

    #5


    Danil005,

    16 апр 2018


  6. Dron-Boy

    Dron-Boy
    Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126

    Учись чел, будь внимательней и может толк будет.

    #6


    Dron-Boy,

    16 апр 2018


  7. ubunta2

    ubunta2
    Зэк

    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28

    какая и где об этом почитать?

    #7


    ubunta2,

    16 апр 2018


  8. Dron-Boy

    Dron-Boy
    Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126

    split

    #8


    Dron-Boy,

    16 апр 2018


  9. Danil005

    Danil005
    Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30

    Мне кажется или он тупо игнорирует другие сообщения?))
    Просто ему это написали несколько человек…

    #9


    Danil005,

    16 апр 2018


  10. ubunta2

    ubunta2
    Зэк

    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28

    все понял спасибо

    #10


    ubunta2,

    16 апр 2018


  11. artoodetoo

    artoodetoo
    Суперстар

    Команда форума
    Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.827
    Симпатии:
    1.174
    Адрес:
    там-сям

    [​IMG]

    #11


    artoodetoo,

    16 апр 2018


  12. mahmuzar

    mahmuzar
    Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.633
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.

    Вероятно он все воспринимает иначе.).

    #12


    mahmuzar,

    16 апр 2018


  13. Deonis

    Deonis
    Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.523
    Симпатии:
    504

    А может просто думает очень плавно…
    [​IMG]

    #13


    Deonis,

    16 апр 2018


    Dron-Boy и mahmuzar нравится это.

(Вы должны войти или зарегистрироваться, чтобы разместить сообщение.)

Показать игнорируемое содержимое

Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня

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

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

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

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

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

Настроим ведение журнала ошибок 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 (как минимум). Всё превратилось в ромбики или прочие козяблики?

Скорее всего, достаточно будет указать кодировку в .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.

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

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

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

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

  • Fatal error uncaught error call to undefined function mysql connect in
  • Fatal error uncaught error call to undefined function imagecreatefromjpeg in
  • Fatal error uncaught error call to undefined function imagecreate
  • Fatal error uncaught error call to undefined function ereg in
  • Fatal error uncaught error call to undefined function each

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

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