Перейти к содержимому


Обновление shopcms для работы на версии php 5.4 +

php5.4

  • Вы не можете ответить в тему
Сообщений в теме: 70

#1 kery

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 134 сообщений
Репутация: 17
Начинающий

Отправлено 19 January 2016 - 10:32 AM

Обновляем shopcms для перехода на версию php 5.4 +

Удаляем вызовы
session_unregister
которые устарели для работы ajax козины в php 5.4

1.в файле cart_functions.php
удаляем все вызовы
session_unregister

1.1 в файле functions.php
удаляем все вызовы
session_unregister

1.2 в файле order_functions.php
удаляем все вызовы
session_unregister

1.3 в файле registration_functions.php
удаляем все вызовы
session_unregister

1.4 в файле authorization.php
удаляем все вызовы
session_unregister

1.5 в файле last_items_view_new.php
строку
{ session_unregister("last_items_view"); }
заменяем на
{ unset($_SESSION["last_items_view"]); }

1.5 в файле quick_order.php
удаляем все вызовы
session_unregister

1.6 в файле shopping_cart.php
удаляем все вызовы
session_unregister

1.7 в файле modules.export_products.php
удаляем все вызовы
session_unregister

1.8 в файле cart.php
удаляем все вызовы
session_unregister

Удаляем передачу по ссылке
&
которая изменилась в php 5.4

2. в файле class.ajax.php
строку
$JsHttpRequest = & new JsHttpRequest(DEFAULT_CHARSET);
заменяем на
//$JsHttpRequest = & new JsHttpRequest(DEFAULT_CHARSET);
$JsHttpRequest =  new JsHttpRequest(DEFAULT_CHARSET);

2.1 в файле compare.php
строку
$JsHttpRequest = & new JsHttpRequest(DEFAULT_CHARSET);
заменяем на
//$JsHttpRequest = & new JsHttpRequest(DEFAULT_CHARSET);
$JsHttpRequest =  new JsHttpRequest(DEFAULT_CHARSET);


Заменяем функцию ereg которая устарела с php 5.4

3. в файле setting_functions.php в двух местах
строку
if ((!ereg("[.]",$file)))
заменяем на
//if ((!ereg("[.]",$file)))
if ((!preg_match("/[.]/",$file)))

3.1 в файле class.htmlparser.php
строку
return ereg ("^[A-Za-z0-9_\\-]+$", $name);
заменяем на
//return ereg ("^[A-Za-z0-9_\\-]+$", $name);
return preg_match ("/^[A-Za-z0-9_\\-]+$/", $name);

3.2 в файле class.phpmailer.php
строку
if(eregi('^(.+)<img src='http://vsupport.club/public/style_emoticons/<#EMO_DIR#>/sad.png' class='bbc_emoticon' alt=':(' />[0-9]+)$', $hosts[$index], $hostinfo))
заменяем на
//if(eregi('^(.+)<img src='http://vsupport.club/public/style_emoticons/<#EMO_DIR#>/sad.png' class='bbc_emoticon' alt=':(' />[0-9]+)$', $hosts[$index], $hostinfo))
if(preg_match('/^([^:]+)<img src='http://vsupport.club/public/style_emoticons/<#EMO_DIR#>/sad.png' class='bbc_emoticon' alt=':(' />[0-9]+)$/', $hosts[$index], $hostinfo))

3.3 в файле catalog_excel_export.php
строку
if(ereg("[$d$q\n\r]", $field))
заменяем на
//if(ereg("[$d$q\n\r]", $field))
(preg_match("/[$d$q\n\r\/]/", $field))

3.4 в файле conf_blocks_edit.php
строку
if ((ereg("[html]",$file)))
на
//if ((ereg("[html]",$file)))
if ((preg_match("/[html]/",$file)))

Модернизируем функцию htmlspecialchars и html_entity_decode которая в php 5.4 по умолчнию стала в кодировке UTF-8, добавляем
кодировку cp1251

4. в файле class.ajax.php
строку
return htmlspecialchars($s, 'ENT_COMPAT | ENT_HTML401');
заменяе на
//return htmlspecialchars($s, 'ENT_COMPAT | ENT_HTML401');
return htmlspecialchars($s, 'ENT_COMPAT | ENT_HTML401', 'cp1251' );

4.1 в файле functions.php
два вхождения строки
return htmlspecialchars($_data, ENT_QUOTES);
заменяем на
//return htmlspecialchars($_data, ENT_QUOTES);
return htmlspecialchars($_data, ENT_QUOTES, 'cp1251');
строку
$str = htmlspecialchars(trim($str), ENT_QUOTES);
заменяем на
//$str = htmlspecialchars(trim($str), ENT_QUOTES);
$str = htmlspecialchars(trim($str), ENT_QUOTES, 'cp1251');
строку
return html_entity_decode($_Data, ENT_QUOTES);
заменяем на
//return html_entity_decode($_Data, ENT_QUOTES);
return html_entity_decode($_Data, ENT_QUOTES, 'cp1251');

5. Качаем и заменяем class asido в посте http://vsupport.club...dpost__p__34156

По установленным у меня модулям, у вас если их нет то править не нужно

1.Дополнение которое меняет шаблон при заходе с мобильного
в файле is_mobile.php
строку
if ((!ereg("[.]",$file)))
меняем на
//if ((!ereg("[.]",$file)))
if ((!preg_match("/[.]/",$file)))
в файле admin.php
строку
if ($file != ".htaccess" && $file != "." && $file != "..") unlink($path."/".$file);
меняем на
if ($file != ".htaccess" && $file != "." && $file != "..") @unlink($path."/".$file);

2. Дополнение Карта сайта доделаная для модуля Простенький модуль ЧПУ, версия 2
выдает ошибку при удалении заказа из корзины с включенными ошибками т.е. посылает тело страницы и поэтому не посылаются заголовки и не срабатывает location в functions.php on line 72
Warning: Cannot modify header information - headers already sent by (output started at modules_xml_sitemap.php:87.......... functions.php on line 72
с этим дополнением надо разбираться или удалять карту сайту или включать буферизацию в php.ini или если позволяет хостер в
в файле .htaccess
php_value output_buffering		 1
но при включенной буферизации не будет работать Простенький модуль ЧПУ, версия 2.

По остальным модулям дальнейшей проверкой буду отписываться.


Дополнение:

в файле functions.php находим функцию:

function xSaveData($_ID, $_Data, $_TimeControl = 0)

в ней следующий код

if (!session_is_registered('_xSAVE_DATA'))

меняем на

   //if (!session_is_registered('_xSAVE_DATA'))
	if (!isset($_SESSION['_xSAVE_DATA']))

комментируем строку

session_register('_xSAVE_DATA');

на

//session_register('_xSAVE_DATA');

Еще дополнение

1.в файле custord_subscribers.php в двух местах:
находим
				if(!session_is_registered('SUBSCRIBE_MESSAGE')){

						session_register('SUBSCRIBE_MESSAGE');
				}
меняем на

				if(isset($_SESSION['SUBSCRIBE_MESSAGE'])){

						$_SESSION['SUBSCRIBE_MESSAGE'];
				}

2. в файле affiliate_program.php
находим
				session_register('s_RefererLogin');
закоментируем
				//session_register('s_RefererLogin');

3. в файле modules.export_products.php
находим
		if(!session_is_registered('explortExpandedIDs')){

				session_register('explortExpandedIDs');
				$_SESSION['explortExpandedIDs'] = array(1=>1);
		}
меняем на
		if(isset($_SESSION['explortExpandedIDs'])){
	   		 //session_register('explortExpandedIDs');
				$_SESSION['explortExpandedIDs'] = array(1=>1);
		}
находим
		if (!session_is_registered('checkedCategories')) {

				session_register('checkedCategories');
				$_SESSION['checkedCategories'] = array();
		}

меняем на
		if(isset($_SESSION['checkedCategories'])){

				//session_register('checkedCategories');
				$_SESSION['checkedCategories'] = array();
		}

находим
		if (!session_is_registered('selectedProducts')) {

				session_register('selectedProducts');
				$_SESSION['selectedProducts'] = array();
		}
меняем на
		if(isset($_SESSION['selectedProducts'])){

				//session_register('selectedProducts');
				$_SESSION['selectedProducts'] = array();
		}
находим
		if (!session_is_registered('selectedProductsIncSub')) {

				session_register('selectedProductsIncSub');
				$_SESSION['selectedProductsIncSub'] = array();
		}
меняем на
		if(isset($_SESSION['selectedProductsIncSub'])){

				//session_register('selectedProductsIncSub');
				$_SESSION['selectedProductsIncSub'] = array();
		}
находим
		if (!session_is_registered('isExpanded')) {

				session_register('isExpanded');
				$_SESSION['isExpanded'] = array();
		}
меняем на
		if(isset($_SESSION['isExpanded'])){

				//session_register('isExpanded');
				$_SESSION['isExpanded'] = array();
		}

  • 4

#2 slydeev

    Новичок

  • Assistent vsupport.club
  • Pip
  • 8 сообщений
Репутация: 0
Начинающий

Отправлено 18 February 2016 - 03:10 PM

После проделанных изменений, в админке при редактировании товара все пропадает кроме цифр, понимаю что связано с кодировкой но не могу понять где копать?
  • 0

#3 kery

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 134 сообщений
Репутация: 17
Начинающий

Отправлено 18 February 2016 - 03:27 PM

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

связанно с тем что проверите правильно ли заменили функции htmlspecialchars и html_entity_decode
пункт 4.1 инструкции, зависит только от этого т.к. если не добавить кодировку все пропадает при сохранении и после изменений почистите кеш магазина
  • 0

#4 slydeev

    Новичок

  • Assistent vsupport.club
  • Pip
  • 8 сообщений
Репутация: 0
Начинающий

Отправлено 18 February 2016 - 03:53 PM

Спасибо! все разобрался, пропустил в одном месте и не поставил cp1251, сейчас все работает.
  • 0

#5 kery

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 134 сообщений
Репутация: 17
Начинающий

Отправлено 18 February 2016 - 08:40 PM

Спасибо! все разобрался, пропустил в одном месте и не поставил cp1251, сейчас все работает.

не за что, если что зеленная кнопка спасибо
  • 1

#6 slydeev

    Новичок

  • Assistent vsupport.club
  • Pip
  • 8 сообщений
Репутация: 0
Начинающий

Отправлено 19 February 2016 - 04:38 PM

Теперь сделал выгрузку в яндекс маркет, пишет что все ок!, файл открывается а там знаки вопроса ���� ��� ?
  • 0

#7 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 February 2016 - 06:11 PM

Теперь сделал выгрузку в яндекс маркет, пишет что все ок!, файл открывается а там знаки вопроса ���� ��� ?

Сохраните в файл и посмотрите полученный файл текстовым редактором. Браузер вовсе не обязан корректно показывать XML-файл. Такими вопросиками русский тест показывается тогда, когда сервером отдается текст в кодировке win1251, но без соответствующего хидера и апач хостера при отсутствующем хидере подставляет хидер с дефолтовой кодировкой, которая нынче практически всегда UTF8. Яндекс.Маркету (в отличие от браузера) на хидер пофиг, т.к. он берет кодировку из XML-тэга в начале файла.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 slydeev

    Новичок

  • Assistent vsupport.club
  • Pip
  • 8 сообщений
Репутация: 0
Начинающий

Отправлено 19 February 2016 - 07:25 PM

Я уже понял что маркету до фени, он проглотил и все показывает нормально.
  • 0

#9 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 22 March 2016 - 10:49 AM

В пункте

2. в файле class.ajax.php

видимо имелся ввиду файл cart.php, т.к. в class.ajax.php такой строки нет, а в cart.php есть, но в инструкции ее исправлений нет.


Пункт

3.3 в файле catalog_excel_export.php
строку

if(ereg("[$d$q\n\r]", $field))
заменяем на
//if(ereg("[$d$q\n\r]", $field))
(preg_match("/[$d$q\n\r\/]/", $field))


видимо должен выглядеть так:

3.3 в файле catalog_excel_export.php
строку
if(ereg("[$d$q\n\r]", $field))
заменяем на
//if(ereg("[$d$q\n\r]", $field))
if(preg_match("/[$d$q\n\r\/]/", $field))

  • 0

#10 straniks

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 60 сообщений
Репутация: 0
Начинающий

Отправлено 09 October 2016 - 05:31 PM

связанно с тем что проверите правильно ли заменили функции htmlspecialchars и html_entity_decode
пункт 4.1 инструкции, зависит только от этого т.к. если не добавить кодировку все пропадает при сохранении и после изменений почистите кеш магазина

все сделал как написано, все кроме цифр пропало. PHP Version - 5.6.26-1~dotdeb+7.1
  • 1

#11 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 October 2016 - 06:11 PM

все сделал как написано, все кроме цифр пропало.

Не верю. Это штатное исправление этой проблемы.
Причем и править-то там немного. Вот из моей инструкции "для себя" о переводе shopCMS на UTF-8:
1. Функции htmlspecialchars (без задания codepage встречается в functions.php три раза и в counter.php два раза ) и html_entity_decode (без задания codepage встречается в functions.php один раз).
Т.е. для устранения ЭТОЙ проблемы (другие проблемы 5.4 останутся) надо сделать всего 6 (шесть) исправлений).

PHP Version - 5.6.26

В 5.6 все это вообще не нужно, т.к. кодировка этих функций задается единообразно настройкой php.
Т.е. либо в php.ini, либо в htaccess:
2. Начиная с PHP 5.6 дефолтовый для этих функций codepage задается в php.ini настройкой default_charset (либо в .htaccess). Т.е. проблема с пропаданием русских букв только при PHP 5.4 и 5.5.

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#12 straniks

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 60 сообщений
Репутация: 0
Начинающий

Отправлено 09 October 2016 - 07:37 PM

все сделал как написано, все кроме цифр пропало.

Не верю. Это штатное исправление этой проблемы.
Причем и править-то там немного. Вот из моей инструкции "для себя" о переводе shopCMS на UTF-8:
1. Функции htmlspecialchars (без задания codepage встречается в functions.php три раза и в counter.php два раза ) и html_entity_decode (без задания codepage встречается в functions.php один раз).
Т.е. для устранения ЭТОЙ проблемы (другие проблемы 5.4 останутся) надо сделать всего 6 (шесть) исправлений).

PHP Version - 5.6.26

В 5.6 все это вообще не нужно, т.к. кодировка этих функций задается единообразно настройкой php.
Т.е. либо в php.ini, либо в htaccess:
2. Начиная с PHP 5.6 дефолтовый для этих функций codepage задается в php.ini настройкой default_charset (либо в .htaccess). Т.е. проблема с пропаданием русских букв только при PHP 5.4 и 5.5.

Т.е. судя по вашему у меня проблем вообще не должно быть.
Но, как бы как хостер перевел на эту версию php все и началось..
Несколько раз делал по инструкции... оооочень медленно... Ну, не получается...
И еще. в файле class.ajax.php у меня строк,что инструкции нет..
  • 0

#13 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 October 2016 - 08:33 PM

Т.е. судя по вашему у меня проблем вообще не должно быть.

Ну вот зачем Вы беретесь за то, в чем не разбираетесь настолько, что не можете исправить даже по написанной русским языком инструкции?
Повторюсь:
2. Начиная с PHP 5.6 дефолтовый для этих функций codepage задается в php.ini настройкой default_charset (либо в .htaccess). Т.е. проблема с пропаданием русских букв только при PHP 5.4 и 5.5.
1. Читать эту фразу до просветления.
2. попробовать вписать в .htaccess строку
php_value default_charset cp1251

PS. После исправлений русский текст вместо пустоты в настройках не появится. Там УЖЕ записалась пустота вместо русских букв. Придетcя все перезаполнять заново либо откатываться на какой-либо бэкап SQL-базы, где еще не пустота.

PPS. Вообще-то все это должен рассказывать хостер, если у клиента явная проблема после смены версии PHP.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#14 straniks

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 60 сообщений
Репутация: 0
Начинающий

Отправлено 09 October 2016 - 09:04 PM

Дорогой ты мой человек - спаситель!!! Господи - Дай Бог тебе здоровья! Два дня сидел голову ломал... А, все просто .вписать в .htaccess строку
php_value default_charset cp1251.. и все заработало...
  • 1

#15 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 October 2016 - 09:42 PM

php_value default_charset cp1251.. и все заработало...

Не радуйтесь. Заработало ни разу не все. Но это, да, должно было заработать.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#16 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 10 October 2016 - 12:11 PM

Уже пора на 7.0 переходить...
  • 0

#17 Viktorbobr

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
Репутация: 0
Начинающий

Отправлено 10 October 2016 - 04:08 PM

У меня вылезает какая-то ошибка. Сложно все это. Невозможно сделать обновление shopCMS как у вордпресса, чтобы на кнопочку нажать и отдыхать?
  • 0

#18 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 10 October 2016 - 04:25 PM

Viktorbobr,кто, по вашему это должен сделать?
Официально движок уже много лет мертв, мы тут некрофилией занимаемся :)
  • 0
502 Bad Gateway

#19 straniks

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 60 сообщений
Репутация: 0
Начинающий

Отправлено 18 October 2016 - 10:16 AM

Дорогой ты мой человек - спаситель!!! Господи - Дай Бог тебе здоровья! Два дня сидел голову ломал... А, все просто .вписать в .htaccess строку
php_value default_charset cp1251.. и все заработало...

Вы правы. перестали оформляться заказы.. на почту не приходят сообщения. вообщем беда. Если какое решение? Так не хочется переходить на другой движок..
  • 1

#20 kery

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 134 сообщений
Репутация: 17
Начинающий

Отправлено 20 October 2016 - 06:56 PM

Дорогой ты мой человек - спаситель!!! Господи - Дай Бог тебе здоровья! Два дня сидел голову ломал... А, все просто .вписать в .htaccess строку
php_value default_charset cp1251.. и все заработало...

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

заказы каким образом не оформляются?

У меня вылезает какая-то ошибка. Сложно все это. Невозможно сделать обновление shopCMS как у вордпресса, чтобы на кнопочку нажать и отдыхать?

когда я писал этот переход у меня все работало, правда не сразу но инструкция вроде написана по последнему варианту, как уже точно все заработало, у меня была тоже проблема с кодировкой.
можно и другой вариант, сделать свой сервер на vds - настроить и будет счастье не зависящее от хостера у меня именно так и сделано (хотя у меня все работает и я нахожусь на версии php 5.4).
можно и другой вариант и самый лучший, здесь человек поднимал тему с выявление ошибок и т.п. http://vsupport.club...4150#entry34150
но его никто не поддержал!!!!!!!!!!!!!!!!!!
единственное кто этим занимается бадисофт когда находит ошибку он выкладывает ее в своей теме, и ему огромное за это спасибо, и он же отлично как пять пальцев знает движок, почему бы не скинуться коллективно, т.к. за любую работу нужно платить а интернет магазин это изначально коммерческое предприятие, и пусть бадисофт за оплату протестит и переведет стандартный движок на версии php 5.4+ на данный момент этот магазин умирает только потому что в стандарте он не может работать на версиях больше php 5.3, как только он в стандарте станет на новые версии, он сразу оживет. И будет новая работа для програмистов по написанию новых модулей и исправлению старых. Для тех кто оплатит этот переход и тест бадисофт сделает подробную инструкцию по переходу а кто нет то пусть у него и покупает. А также и админу форума потом выложить в продажу эту новую версию, т.к. по сути у этого магазина нет авторских прав официальный (якобы) форум уже умер давно и на магазин давно забил, кинув целую гору народа, а кто делал этот магазин их тоже уже давно на том сайте нет)))
  • 1