Переводим Magento 1 на PHP7, часть 1

Язык PHP постоянно развивается, и в настоящее время актуальной является уже 7-я его версия. Интерпретатор этой версии работает заметно шустрее предыдущих — многие веб-мастера отмечают 2-3 кратный прирост производительности скриптов, и, соответственно, весьма заметное понижение нагрузки на сервер.

Magento — это довольно «тяжелая» система, и перевод на PHP7 для неё весьма желателен. Но, вплоть до Magento 2, система была рассчитана на работу под PHP 5.x, и с 7-ми версиями PHP «из коробки» просто так не работает.

К счастью, несовместимость эту можно исправить довольно легко, не прибегая к полной переустановке или апгрейду системы (которые, как любой переезд, иной раз хуже пожара).

Перейдем к сути. Во-первых, перед заменой версии PHP, в Magento необходимо отключить кэш и компиляцию. И, да: вы же не производите апгрейд PHP непосредственно на рабочем сервере? Если по каким-то причинам все же производите, то создайте в корневом каталоге сайта файл maintenance.flag, он переведет Magento в режим обслуживания. Разумеется, после полного бэкапа файлов и баз(ы) данных.

Далее, выбираем один из вариантов приведения Magento в PHP7-совместимое состояние:

Вариант 1. С минимальным вмешательством, подходит для более-менее свежих версий Magento CE, вроде 1.9.2.4. Патчим систему:

# запускаем в корневом каталоге Magento

# одной строкой, с использованием wget
wget -qO- 'https://gist.githubusercontent.com/MageMechanic/66449504110fbbd96214/raw/php7_magento_1_9_core.patch' | patch -p0

# одной строкой, с использованием curl
curl -s 'https://gist.githubusercontent.com/MageMechanic/66449504110fbbd96214/raw/php7_magento_1_9_core.patch' | patch -p0

# более наглядно:
PATCH_URL='https://gist.githubusercontent.com/MageMechanic/66449504110fbbd96214/raw/php7_magento_1_9_core.patch'

# применяем через wget
wget -qO- $PATCH_URL | patch -p0

# ...или через curl
curl -s $PATCH_URL | patch -p0

# откатить изменения через wget  
wget -qO- $PATCH_URL | patch -p0 -R

# ...или через curl  
curl -s $PATCH_URL | patch -p0 -R

Вариант 2. Решение от того же автора, что и патч выше. Устраняет так же потенциальные проблемы с загрузкой изображений при создании/редактировании товара. Рекомендуется для версий Magento CE от 1.9 до 1.9.3.1.

Скачиваем и ставим плагин вручную (распаковываем в корневой каталог Magento).

или

Устанавливаем через modman:

modman clone https://github.com/MageMechanic/PhpSeven.git --branch 1.0.3

или

Устанавливаем через composer:

composer config repositories.magemechanic git https://github.com/MageMechanic/PhpSeven.git
composer require "magemechanic/phpseven:1.0.3"

Вариант 3. Решение от старых и проверенных Magento-разработчиков, компании Inchoo. Рекомендуется для версий Magento CE от 1.9, подходит и для Magento EE от 1.4.2.2. Плагин хорош полной обратной совместимостью с PHP 5.x, т.е, в случае необходимости откатить версию PHP, вам не понадобится выключать этот плагин или отменять патч. Также, рекомендован к установке после применения патча SUPEE-8788  (о котором будет отдельная статья). Устанавливается просто: скачиваем и распаковываем в коренной директории Magento.

Итак, после применения патча или установки одного из плагинов совместимости, вы получите Magento, работающую под PHP7. Поздравления! Теперь можно удалить (или переименовать) файл maintenance.flag, и проверить работу вашего интернет-магазина. Если в вашей системе не было устаревших сторонних плагинов, то все должно будет сразу корректно заработать, и можно будет включить кэш и скомпилировать заново исполняемые файлы (не просто включить компиляцию!). Учтите, проверке должны подвергнуться все аспекты работы магазина: от регистрации и логина клиента, совершения им разных типов покупок, до создания продукта в админке, правке категорий, атрибутов и типов продуктов. Увы, как показывает практика, после перехода на PHP7 может возникнуть немало неочевидных проблем, и о них мы поговорим в следующей части статьи.

Источники:

https://gist.github.com/MageMechanic

 
http://inchoo.net/magento/its-alive/

Правила хорошего тона для интернет-магазина.

Время летит, и торговля через Интернет происходит в десятки раз активней, чем даже пару лет назад. Ритейл онлайновый уже ощутимо перегнал оффлайн в некоторых областях, и разрыв будет только увеличиваться. Покупатели становятся все более искушенными, и «левые» магазины отсекаются зачастую еще на этапе первого взгляда. Вроде бы, и хорошее SEO привело человека на сайт, и реклама сработала, но достаточно одного неприятного штриха в портрете магазина, и уже потенциальный покупатель закрывает вкладку браузера, не дойдя до checkout-а.

Ниже я сделаю небольшую подборку правил, которых желательно придерживаться администраторам интернет-магазинов:

  • не используйте для оформления картинки из бесплатных банков или клипарты. Для российского, например, покупателя, картинки с пластиково-чистыми и натужно улыбающимися европейцами или американцами выглядят неестественно. В картинке должно быть немного страдания, это же Россия;
  • то же с товарами. Левые фотки, или тем более, рендеры откуда-то из Интернета только отпугнут клиентов;
  • вообще, в идеале для наполнения каталога нужно использовать самодельные фото товаров, и только. Все сторонние фото, которые вы найдете, как правило снабжены водяными знаками, которые чаще всего не получится быстро и качественно удалить;
  • не используйте для товаров фотографии низкого разрешения, это неуважение к покупателю;
  • для товаров с множеством характеристик (различная электроника, например) тщательно проверяйте все параметры, для покупателей это очень важно. Опять же, неправильно указанный в товарном каталоге параметр может быть поводом для судебного разбирательства;
  • многие небольшие интернет-магазины грешат демпингом за счет исключения из цены стоимости курьерской доставки, которая в них обязательна, т.к. пунктов самовывоза нету. Мало того, что эта хитрость работает только непродолжительное время, так она еще и может стать причиной, опять же, для суда. И закон будет на стороне покупателя, т.к. «принудительная» доставка является навязанной услугой. Так делать не стоит;
  • оперативно проверяйте наличие товара и корректируйте каталог. Если в каталоге есть неактуальные ходовые позиции, это, конечно, улучшит ваше SEO, но реальные отзывы о магазине может испортить;
  • своевременно обновляйте рекламные баннеры и объявления на сайте. Просроченная реклама это очень хорошая антиреклама;
  • опять же, вовремя обновляйте копирайты (© 2016 VasilyShop), если ваша тема/скрипт не делает это автоматически. Заброшенный магазин не вызывает доверия.

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