Просмотр темы
какие функции надо переписать для PHP 7?
|
|
Vveb--ws |
Опубликовано 11.01.2018 18:33
|
Опытный пользователь Сообщений: 379 Зарегистрирован: 25.11.2010 14:16 |
привет какие функции надо переписать для PHP 7? кто в курсе дайте инфу сегодня у клиента сайт перестал работать из-за того что кто-то включил php 7.1 а именно не работало соединение с БД |
|
|
Polarfox |
Опубликовано 11.01.2018 20:50
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
мускл устарело и обсолете, и было отключено? Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
hungel |
Опубликовано 12.01.2018 11:49
|
Пользователь Сообщений: 65 Зарегистрирован: 26.06.2011 22:23 |
Замени свой maincore на приатаченный. Если в твоем maincore есть нужные тебе изменения то замени в нем функции работы с БД. Если нужно устанавливать систему на PHP 7, аналогично берем функции работы с БД и заменяем в setup.php
hungel присоединено следующее:файл:
|
|
|
Vveb--ws |
Опубликовано 12.01.2018 12:05
|
Опытный пользователь Сообщений: 379 Зарегистрирован: 25.11.2010 14:16 |
огромное спасибо! а кроме функций по работе с БД ничего менять не надо в PHP-Fusion? PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи vk.com/phpfusion Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov |
|
|
hungel |
Опубликовано 12.01.2018 12:10
|
Пользователь Сообщений: 65 Зарегистрирован: 26.06.2011 22:23 |
Насколько я знаю остальное должно работать. Некоторые функции могли устареть и могут возникнуть notice, о необходимости замены некоторых функций. Рекомендую озаботиться этим заранее и включить отображение или логирование notice, ибо через пару обновлений разработчики PHP могут исключить эти функции и тогда они совсем перестанут работать. |
|
|
Dave |
Опубликовано 13.01.2018 07:23
|
Пользователь Сообщений: 54 Зарегистрирован: 19.01.2014 11:11 |
Если в твоем maincore есть нужные тебе изменения то замени в нем функции работы с БД. Если нужно устанавливать систему на PHP 7, аналогично берем функции работы с БД и заменяем в setup.php Уважаемый hungel Можно чуть подробнее? Думаю многие будут благодарны, не все ещё эксперты.. Если перебрал - задрай переборки.
|
|
|
hungel |
Опубликовано 13.01.2018 13:44
|
Пользователь Сообщений: 65 Зарегистрирован: 26.06.2011 22:23 |
Нужно заменить функции которые работают с БД. Дело в том, что новый PHP больше не умеет работать с mysql. Этих функций просто больше нет. Под mysql я подразумеваю не базу данных как таковую а драйвер базы. Для работы с базой теперь используются мало отличающиеся функции mysqli. В большинстве случаев нужно просто добавить к функции букву i, но есть и исключения. Например вот старая функция function dbquery($query) { А вот новая. function dbquery($query) { По сути изменений минимум. Так, вот если вы, дописывали в файл maincore.php что-то свое или добавляли чужое, без того, что вы добавляли вероятнее всего у вас перестанет, что-то работать. Чтобы этого не случилось нужно не просто заменить весь файл, а только поменять функции работы с БД. Если в вашем maincore изменений нет, то можно просто заменить файл. Если вы хотите, установить стоковый PHP-Fusion на сервер с PHP7 то нужно заменить функции работы с БД не только в minecore, но и в файле setup.php. Функции работы с БД в этих файлах одинаковые. Собственно сами функции начинаются с комментария // MySQL database functions |
|
|
Vveb--ws |
Опубликовано 18.03.2020 16:22
|
Опытный пользователь Сообщений: 379 Зарегистрирован: 25.11.2010 14:16 |
Что делать по порядку: 1) В файле maincore.php (PHP-Fusion 7) или maincore_db.php (PHP-Fusion 7 Bogatyr) есть строка: // Establish mySQL database connection 2) Для каждой функции, работющей с БД, добавляем в global переменную $db_connect; 3) Для функций начинающихся с "mysql_" делаем автозамену по всем PHP-файлам на "mysqli_". Проверяем существование новых функций. 4) Для некоторых функций, работющих с БД, добавляем первым аргументом $db_connect Можно через автозамену согласно таблице: mysql_query( --> mysqli_query($db_connect, mysql_select_db( --> mysqli_select_db($db_connect, mysql_real_escape_string( --> mysqli_real_escape_string($db_connect, mysql_close() --> mysqli_close($db_connect) mysql_error() --> mysqli_error($db_connect) mysql_get_server_info() --> mysqli_get_server_info($db_connect) mysql_affected_rows() --> mysqli_affected_rows($db_connect) mysqli_close() вместо mysql_close() находится в /themes/templates/footer.php внимательно смотрим примеры где добавляется $link (в нашей cms - $db_connect) mysqli_affected_rows - https://www.php.net/manual/ru/mysqli.affected-rows.php Процедурный стиль <?php mysqli_close - https://www.php.net/manual/ru/mysqli.close.php Для PHP-Fusion функция выгялит так: function dbconnect($db_host, $db_user, $db_pass, $db_name) { продолжение следует. это конечно же не все изменения вместо замены mysql_close() --> mysqli_close($link) mysql_insert_id() --> mysqli_insert_id($link) я создал 2 пользовательские функции function dbclose() { соответственно в коде замена будет: mysql_close() --> dbclose() mysql_insert_id() --> dbinsertid() Подключение файла для работы с БД у меня на хостинге PHP_VERSION=7.0.33-0+deb9u7 и она НЕработает в version_compare() чтобы работало в PHP5 и PHP7 if (strpos("_".PHP_VERSION, '-', 0)>0) { пути для require_once конечно же у вас будут другие Принципиальное отличие: // Функция заменяет отсутствующую в MySqli функцию mysql_result в архиве все функции. БД уже работает и в PHP5 и в PHP7 в частности на 1and.ru очень помог hungel файл: maincore_1.zip [9.29кБ] строковые функции неработающие в PHP7 я сделаю похже. Объединено 07.06.2020 15:29: Месяц назад я перевёл CMS одностраничника на PHP7 (скрипт подключения к БД одинаковый и взят из PHP-Fusion). всё работает. ураааааааааааааааааа Режим работы PHP: CGI Версия PHP: 7.4.3 (alt) мне сказали что PHP: 7.4.3 (alt) быстрее чем PHP 7.0 native однако чтобы перевести PHP-Fusion необходимо перевести кучу функций из редактора TinyMCE которые отключены выше PHP 5.3 или PHP 5.2 есть ли какой-то другой визуальный редактор чтобы было удобно редактировать текст и вставлять в текст картинки ил папки /images/ ? редактор должен быть 100% рабочий удобный и без самовольного редактирования вставленного HTML-кода. или всё же переписывать TinyMCE ? загрузка картинок в редакторе не важна. можно через админку PHP-Fusion.
Vveb--ws присоединено следующее:файл:
Изменил(а) Vveb--ws, 17.06.2020 11:57 PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи vk.com/phpfusion Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov |
|
|
SchreiBear |
Опубликовано 08.06.2020 23:04
|
Ветеран Сообщений: 625 Зарегистрирован: 05.01.2013 11:01 |
Vveb--ws, так проще эффект тот же :D
Изменил(а) SchreiBear, 08.06.2020 23:13 Нужно сказать огромное спасибо людям, которые живут на популярных девелопер форумах и дают там адекватные ответы на абсолютно «нубские» вопросы без попыток унизить вопрошающего.
|
|
|
Vveb--ws |
Опубликовано 14.06.2020 07:15
|
Опытный пользователь Сообщений: 379 Зарегистрирован: 25.11.2010 14:16 |
ураааааааааа! у меня уже работает сайт на PHP7!! maincore.php //== DB == файлы берём отсюда - http://rusfusion.ru/forum/viewthread.php?thread_id=2936&pid=30558#post_30533 ЗАМЕНИТЬ mysql_close --> dbclose setuser.php И во всех остальных файлах где есть ЗАМЕНИТЬ mysql_insert_id --> dbinsertid administration\custom_pages.php forum\postnewthread.php forum\postreply.php forum\viewthread.php И во всех остальных файлах где есть ЗАМЕНИТЬ mysql_affected_rows --> dbaffrows administration\forums_prune.php forum\options.php forum\viewforum.php И во всех остальных файлах где есть Удалить папку includes\jscripts\tiny_mce\plugins\ibrowser\ - слишком много несовместимых функций плюс кнопка плагина не работает в TinyMCE и отображение кнопки в themes\templates\admin_header_mce.php plugins : \"safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,ibrowser\", Удалить последннее слово кто знает зачем нужен ibrowser? для тех кто использует плагин register_quest заменяю eregi_replace на preg_replace было: стало: $quest = stripinput(trim(preg_replace('/ {2,}/',' ', $_POST['quest']))); // ЗАМЕНЯЕТ ДВОЙНЫЕ ПОДЧЁРКИВАНИЯ НА ОДИНАРНЫЕ так как magic_quotes не работает с PHP 5.4, я добавляю строки в функции EncodeFile файлов includes\class.phpmailer.php includes\phpmailer_include.php /** ЧТО Я НЕ ДЕЛАЛ: В файлах geshi (вероятно это подсветка функций) includes\bbcodes\geshi\geshi\php-brief.php includes\bbcodes\geshi\geshi\php.php я не менял названия функций на новые mysql_close --> dbclose mysql_insert_id --> dbinsertid mysql_affected_rows --> dbaffrows Потому что мне щас не до подсветки функция mysql_result встречается только в функциях подключения к БД maincore.php, поэтому замена mysql_result --> mysqli_result нигде не требуется. страница сайта PHP-Fusion Bogatyr (c кешем) на PHP7 грузится 20-50 милисекунд. 50 - это в админке (где Тина и пр прелести). 20 - снаружи для пользователей. без кеша на PHP5 - 300-500 милисекунд. Объединено 17.06.2020 14:50: а вот и вишенка на торте! TinyBrowser для вставки картинок в TinyMCE не работает при включённом PHP7 и выше. видим пустой белый экран. смотрим \includes\jscripts\tiny_mce\plugins\tinybrowser\error_log 2020-06-16 22:49:05 (MSK) 8192 Function sql_regcase() is deprecated File: fns_tinybrowser.php Line: 382 функция sql_regcase() не указана в списке функций запрещённых или изменённых в PHP7. https://www.php.net/manual/ru/function.sql-regcase.php Эта функция объявлена УСТАРЕВШЕЙ в PHP 5.3.0, и УДАЛЕНА PHP 7.0.0. Создает допустимое регулярное выражение, которое будет совпадать с string, игнорируя регистр символов. Это выражение является string, в которой каждый буквенный символ заменен на символьный класс (выражение в квадратных скобках); каждый такой символьный класс содержит символы в нижнем и верхнем регистре. Другие символы остаются без изменений. в соответствии с этим http://php.net/manual/en/reference.pcre.pattern.posix.php нет эквивалентной функции в PHP7. ПОИСК sql_regcase в файлах CMS с помощью Total Commander встречается только в \includes\jscripts\tiny_mce\plugins\tinybrowser\fns_tinybrowser.php ПОИСК в Гугле sql_regcase PHP7 и опа - попадается 1 в 1 вопрос и ответ - https://stackoverflow.com/questions/26619110/alternative-function-for-php-deprecated-sql-regcase если версия PHP 7 и выше я делаю пользовательскую функцию my_Sql_regcase, если меньше - использую sql_regcase fns_tinybrowser.php if (version_compare(PHP_VERSION_NUBMER, '7.0.0') >= 0) { // MySQLi В КОДЕ просто заменяю название функции $filenum=0; * * * где и как я искал функции 5.6 -> 7.0. Миграция с PHP 5.6.x на PHP 7.0.x - https://php.net/manual/ru/migration70.php Изменения, ломающие обратную совместимость - https://php.net/manual/ru/migration70.incompatible.php Новая функциональность - https://php.net/manual/ru/migration70.new-features.php Функциональность, объявленная устаревшей в PHP 7.0.x - https://php.net/manual/ru/migration70.deprecated.php Измененные функции - https://php.net/manual/ru/migration70.changed-functions.php Удаленные расширения и SAPI - https://php.net/manual/ru/migration70.removed-exts-sapis.php Другие изменения - https://php.net/manual/ru/migration70.other-changes.php аналогично все с 5.2 до 7.4 Объединено 17.06.2020 18:10: ИТОГИ: я перевёл http://ozozhe.ru с PHP 5.2.17 (alt) на PHP 7.4.3 (alt) Режим работы PHP - CGI CMS сайта вроде бы работает полностью. скорость увеличлась очень мало. для Wordpress прирост скорости был в 6-10 раз. с 1,5-3сек на загрузку страницы до 0,3-0,6сек. для PHP-Fusion 7 Bogatyr прирост скорости не более чем в полтора-два раза. было 0,3-0,6сек стало 0,14-0,5сек Wordpress 5.3 на PHP 7.0-7.4 сопоставим по скорости с PHP-Fusion 7 Bogatyr на PHP 5.2.17 Объединено 18.06.2020 01:18: нет ребята это ещё не всё! не работают несколько BB-кодов в PHP7! кто подскажет как исправить регулярки для PHP7 mail_bbcode_include.php $text = preg_replace('#\[mail\]([\r\n]*)([^\s\'\";:\+]*?)([\r\n]*)\[/mail\]#sie', "hide_email('\\2').''", $text); img_bbcode_include.php $text = preg_replace("#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#sie","'<span style=\'display: block; width: 300px; max-height: 300px; overflow: auto;\' class=\'forum-img-wrapper\'><img src=\'\\1'.str_replace(array('?','&','&','='),'','\\3').'\\4\' alt=\'\\3\\4\' style=\'border:0px\' class=\'forum-img\' /></span>'",$text); search_bbcode_include.php include LOCALE.LOCALESET."bbcodes/search.php"; url_bbcode_include.php //Url BBCode with auto triming long links ured_bbcode_include.php // http://denweb.org/seo/kak-mozhno-skryt-ssylku-ot-poiskovikov/ Изменил(а) Vveb--ws, 17.06.2020 22:18 PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи vk.com/phpfusion Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov |
|
|
kazik |
Опубликовано 18.06.2020 06:10
|
Пользователь Сообщений: 106 Зарегистрирован: 03.05.2019 12:54 |
Головняк ненужный, Владимир.. Немец да-а-а-вно сделал дистр под PHP7.*.* И темы адаптивные без кривизны. Года два уж. |
|
|
Vveb--ws |
Опубликовано 19.06.2020 16:07
|
Опытный пользователь Сообщений: 379 Зарегистрирован: 25.11.2010 14:16 |
ЧТОБЫ РАБОТАЛИ BB-коды в PHP7 1) // ПРОВЕРКА И УДАЛЕНИЕ сначала я отключаю блоки URL и IMG которые содержат недопустимые символы (одинарную и двойную кавычки, знаки больше меньше " ' < >). 2) // вывожу BB-код 3) // ПОДСВЕТКА неправильных URL что остались без (http://|ftp://|https://|ftps://) вначале IMG без расширения картинок в конце url_bbcode_include.php // ПРОВЕРКА И УДАЛЕНИЕ простой урл img_bbcode_include.php // ПРОВЕРКА И УДАЛЕНИЕ вообще первод на PHP7 полезен Wordpress (скорость увеличивается в 6-10 раз, время загрузки страницы падает с 1,5-3сек до 0,3-0,45сек) а для Фужика скорость увеличивается не более чем в полтора-два раза. а иногда и практически такая же. щас на php7 работают: ozozhe.ru (Bogatyr + магазин) vveb.ws (Bogatyr + магазин) holodilnik.vveb.ws (Bogatyr + магазин) pagex.vveb.ws (Bogatyr + Pagex) 1and.ru (CMS лендинга) themes-wordpress.ru ( CMS лендинга + Wordpress на внутряке) остальные сайты тоже планирую переводить постепенно. движок магазина (кеш частичный) PHP5.2 http://firmstyle.net/cms.php Время загрузки: 0.34-0.36 секунд (Bogatyr + магазин) PHP7.4 http://ozozhe.ru/page.php?id=53586 Время загрузки: 0.36-0,37 секунд (Bogatyr + магазин) движок блога Pagex (кеш полный) PHP7.4 http://pagex.vveb.ws/pagex.php?id=7 Время загрузки: 14-16 mc (Bogatyr + Pagex) Изменил(а) Vveb--ws, 19.06.2020 16:24 PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи vk.com/phpfusion Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov |
|
|
Polarfox |
Опубликовано 24.06.2020 07:43
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
просто поставить новую версию и проблема исчезнет, либо зенд откатить на 5,4 Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
SchreiBear |
Опубликовано 29.06.2020 16:12
|
Ветеран Сообщений: 625 Зарегистрирован: 05.01.2013 11:01 |
Vveb--ws, Есть вопрос... нафига тебе это? Не наигрался ещё в этой песочнице? С теми знаниями что имеешь уже давно простенькую собственную cms замутить мог.. которая бы летала, а не ползала. две трети функционала фьюжика всё равно нафиг не нужно. Нужно сказать огромное спасибо людям, которые живут на популярных девелопер форумах и дают там адекватные ответы на абсолютно «нубские» вопросы без попыток унизить вопрошающего.
|
|
|
Vveb--ws |
Опубликовано 07.07.2020 22:42
|
Опытный пользователь Сообщений: 379 Зарегистрирован: 25.11.2010 14:16 |
SchreiBear написал: Vveb--ws, Есть вопрос... нафига тебе это? Не наигрался ещё в этой песочнице? С теми знаниями что имеешь уже давно простенькую собственную cms замутить мог.. которая бы летала, а не ползала. две трети функционала фьюжика всё равно нафиг не нужно. обновляю свои сайты на фужике. у меня на WP только 1 сайт. остальные на Фужике и CMS Лендинге. на Фужике ещё 2 осталось на PHP5 и win1251. остальные уже utf8 и PHP7 Лендинги тоже перевожу на PHP7 PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи vk.com/phpfusion Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov |
|
|
kazik |
Опубликовано 12.07.2020 07:19
|
Пользователь Сообщений: 106 Зарегистрирован: 03.05.2019 12:54 |
Владимир, ну а хотя-бы стольник за месяц Вы имеете с создания ресурсов или со своихх сайтов? Иначе всё это выглядит просто программным онанизмом И дизайн сайтов ужасный. Согласны? |
|
Поделиться этой темой | |
Социальные закладки: | |
URL: | |
BBcode: | |
HTML: |
Перейти на форум: |