Переводим 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/

Почему Magento?

Почему, собственно, Magento? В чем её преимущества? E-commerce система Magento является очень качественным продуктом. Она изящна снизу (от самой архитектуры) и до самого верха (интерфейсов админа и пользователя).

Если вы разработчик, вам наверняка понравятся:

  • отличная документированность системы;
  • огромное сообщество разработчиков, где можно оперативно получить ответ на любой вопрос;
  • удобные встроенные средства отладки;
  • возможность «на лету» править функционал системы, при этом совершенно обратимо;
  • мощное коммерческое ядро компании-разработчика, позволяющее быть уверенным в долгом жизненном цикле системы;
  • логичный и детально структурированный код системы, и её функциональной части, и визуальной.

Сисадмины магазинов оценят:

  • возможность производить многие действия через командную строку, соответственно, писать и использовать скрипты для автоматизации;
  • детальные логи системы, позволяющие подробно проанализировать корректность работы магазина;
  • мощные средства автоматизации, в том числе и сторонние, в большинстве случаев — бесплатные;
  • постоянную работу команды разработчиков системы над кодом и выпуск ими патчей, исправляющих ошибки и расширяющих функционал;

Владельцу или менеджеру интернет-магазина будет небезразлично:

  • удобный интерфейс админки, позволяющий быстро создавать товарные группы и товары;
  • развитая система оповещений и реагирования на новые заказы;
  • возможность увязки с онлайн-каталогами магазинов и системами ведения бухгалтерского/складского учета;
  • возможность продажи цифрового контента;
  • развитые возможности пакетной обработки товаров, массовых изменений в товарном каталоге;
  • широкие возможности проведения промо-акций, рассылок, показа рекламных баннеров, использования скидочных купонов.

Покупатель же, в итоге, видит логичный и удобный магазин, который вызывает доверие с первого взгляда. Также, для покупателя имеются следующие возможности:

  • личный кабинет, где можно указать адреса доставки, контакты для связи и т.д.;
  • поиск товара по параметрам;
  • сравнение выбранных товаров на одной странице;
  • написание обзоров товара;
  • получение полезных рассылок об обновлениях товарного каталога или наличия товара.

На самом деле, данный текст не претендует и на 1/10 сколь-либо подробного описания этой замечательной системы, Magento. Он лишь отображает наиболее яркие, на мой взгляд, позитивные отличия от других систем (Opencart, Bitrix, и т.д.). И если вы еще не решили, на какой платформе вам создавать ваш новый интернет магазин (или на что переводить существующий), то я горячо рекомендую вам Magento.

Hello, Magento World!

Здравствуйте, пользователи и разработчики замечательной платформы Magento. С 2012 года я занимаюсь разработкой новых интернет-магазинов, а также доработкой и сопровождением существующих, и успел накопить немалый опыт работы с этой CMS. В статьях этого сайта я буду рад поделиться с вами полезными советами и идеями, которые, как я надеюсь, помогут облегчить вашу жизнь и получить больше позитивной отдачи от ваших проектов.

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