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


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


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

php5.4

Сообщений в теме: 65

#1 kery

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

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

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

Обновляем 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('^(.+):([0-9]+)$', $hosts[$index], $hostinfo))
заменяем на
//if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo))
if(preg_match('/^([^:]+):([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.ru/t...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();
		}	


#2 slydeev

    Новичок

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

Отправлено 18 февраля 2016 - 15:10

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

#3 kery

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

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

Отправлено 18 февраля 2016 - 15:27

 slydeev (18 февраля 2016 - 15:10) писал:

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

#4 slydeev

    Новичок

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

Отправлено 18 февраля 2016 - 15:53

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

#5 kery

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

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

Отправлено 18 февраля 2016 - 20:40

 slydeev (18 февраля 2016 - 15:53) писал:

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

#6 slydeev

    Новичок

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

Отправлено 19 февраля 2016 - 16:38

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

#7 badisoft

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

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 19 февраля 2016 - 18:11

 slydeev сказал:

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

#8 slydeev

    Новичок

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

Отправлено 19 февраля 2016 - 19:25

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

#9 Den

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

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

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

В пункте

Цитата

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))


#10 straniks

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

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

Отправлено 09 октября 2016 - 17:31

Цитата

связанно с тем что проверите правильно ли заменили функции htmlspecialchars и html_entity_decode
пункт 4.1 инструкции, зависит только от этого т.к. если не добавить кодировку все пропадает при сохранении и после изменений почистите кеш магазина
все сделал как написано, все кроме цифр пропало. PHP Version - 5.6.26-1~dotdeb+7.1

#11 badisoft

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

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 09 октября 2016 - 18:11

 straniks сказал:

все сделал как написано, все кроме цифр пропало.
Не верю. Это штатное исправление этой проблемы.
Причем и править-то там немного. Вот из моей инструкции "для себя" о переводе 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.

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

#12 straniks

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

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

Отправлено 09 октября 2016 - 19:37

 badisoft (09 октября 2016 - 18:11) писал:

 straniks сказал:

все сделал как написано, все кроме цифр пропало.
Не верю. Это штатное исправление этой проблемы.
Причем и править-то там немного. Вот из моей инструкции "для себя" о переводе 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 у меня строк,что инструкции нет..

#13 badisoft

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

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 09 октября 2016 - 20:33

 straniks сказал:

Т.е. судя по вашему у меня проблем вообще не должно быть.
Ну вот зачем Вы беретесь за то, в чем не разбираетесь настолько, что не можете исправить даже по написанной русским языком инструкции?
Повторюсь:
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.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#14 straniks

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

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

Отправлено 09 октября 2016 - 21:04

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

#15 badisoft

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

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 09 октября 2016 - 21:42

 straniks сказал:

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

#16 Salp

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

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

Отправлено 10 октября 2016 - 12:11

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

#17 Viktorbobr

    Новичок

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

Отправлено 10 октября 2016 - 16:08

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

#18 Dbus

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

  • VIP
  • 1 106 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 10 октября 2016 - 16:25

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

#19 straniks

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

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

Отправлено 18 октября 2016 - 10:16

 straniks (09 октября 2016 - 21:04) писал:

Дорогой ты мой человек - спаситель!!! Господи - Дай Бог тебе здоровья! Два дня сидел голову ломал... А, все просто .вписать в .htaccess строку
php_value default_charset cp1251.. и все заработало...
Вы правы. перестали оформляться заказы.. на почту не приходят сообщения. вообщем беда. Если какое решение? Так не хочется переходить на другой движок..

#20 kery

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

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

Отправлено 20 октября 2016 - 18:56

Просмотр сообщенияstraniks (18 октября 2016 - 10:16) писал:

Просмотр сообщенияstraniks (09 октября 2016 - 21:04) писал:

Дорогой ты мой человек - спаситель!!! Господи - Дай Бог тебе здоровья! Два дня сидел голову ломал... А, все просто .вписать в .htaccess строку
php_value default_charset cp1251.. и все заработало...
Вы правы. перестали оформляться заказы.. на почту не приходят сообщения. вообщем беда. Если какое решение? Так не хочется переходить на другой движок..
заказы каким образом не оформляются?

Просмотр сообщенияViktorbobr (10 октября 2016 - 16:08) писал:

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