Обновление через командную строку

Примечание

Возможность обновить CS-Cart через командную строку впервые появилась в версии 4.4.3.

С помощью консольной команды можно автоматизировать процесс обновления CS-Cart. Команда работает так же, как и Центр обновлений, но предлагает больше вариантов.

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

Команда для обновления магазина

Как использовать команду?

  1. Войдите на сервер с установленным CS-Cart или Multi-Vendor через консоль. Либо используйте Терминал на самом сервере, либо подключитесь по SSH.

    Важно

    PHP на сервере должен работать в режиме cli и использовать расширения, указанные в системных требованиях CS-Cart.

  2. Перейдите в корневую директорию установленного интернет-магазина:

    cd /cscart/install/dir
    
  3. Выполните команду:

    php admin.php --dispatch=upgrade_center.console upgrade
    

    Вот что означает эта команда:

    • php admin.php запускает входной скрипт панели администратора. В целях безопасности мы рекомендуем переименовывать файл admin.php сразу после установки. Поэтому название файла в вашей команде может и должно отличаться от примера.
    • --dispatch=upgrade_center.console — путь к контроллеру, обрабатывающему запуск команд.
    • upgrade — название команды обновления магазина.

Какие аргументы есть у команды?

  • id—идентификатор обновления. Чтобы обновить CS-Cart или Multi-Vendor, введите core. Чтобы обновить модуль, введите значение <id> из файла addon.xml.

    Примечание

    Модуль обновляется отдельно от ядра, только если для этого модуля был создан отдельный пакет обновления.

Какие опции есть у команды?

  • --no-backup — отключает создание резервной копии файлов и базы данных при обновлении магазина. Эта опция полезна, если резервная копия уже была создана вручную перед обновлением.

  • --skip-validator — пропустить один из валидаторов из пакета обновления во время обновления. В качестве значения опции используйте название валидатора (например, collisions или permissions). Чтобы пропустить все валидаторы, используйте *. Опцию можно указать несколько раз подряд, например:

    --skip-validator=collisions --skip-validator=permissions
    

    Предупреждение

    Не пропускайте валидатор, если не знаете, к каким проблемам это может привести. Валидатор restore пропустить нельзя — если результат проверки этого валидатора будет отрицательным, процесс обновления будет остановлен.

    Валидаторы могут просто предоставлять информацию или же требовать каких-то действий от пользователя. Например, валидатор проверки коллизий (collisions) проверяет, не были ли изменены обновляемые файлы ядра. Если пропустить валидатор, то все изменения, которые пользователь мог внести в файлы ядра до обновления, будут потеряны.

    Другой пример — валидатор прав доступа к файлам (permissions). Как правило, его нельзя пропускать: если для какого-то файла не заданы права на запись, то он не обновится. В результате магазин после обновления может работать неправильно.

    Количество и содержимое валидаторов не фиксировано и может меняться в зависимости от версии и типа обновления.

  • --help — не запускать процесс обновления, а вывести подсказку по работе с командой.

  • --quiet — не выводить в консоль ничего.

  • --no-interaction — отключить интерактивный режим.

    Примечание

    По умолчанию команда работает в интерактивном режиме. Это означает, что команда уточнит недостающие параметры и будет запрашивать подтверждение действий при необходимости.

Как использовать аргументы и опции?

php admin.php --dispatch=upgrade_center.console upgrade

Запуск обновления без указания id обновления и опций команды. Команда уточнит, какой именно пакет обновления установить, и необходимо ли создавать резервную копию. Если во время обновления возникают отклонения, команда спрашивает, продолжать ли обновление.


php admin.php --dispatch=upgrade_center.console upgrade core

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


php admin.php --dispatch=upgrade_center.console upgrade core --no-backup

Установка определенного обновления (в нашем случае core) без создания резервной копии. Если во время обновления возникают отклонения, команда спрашивает, продолжать ли обновление.


php admin.php --dispatch=upgrade_center.console upgrade core --no-backup --skip-validator=collisions

Установка определенного обновления (в нашем случае core) без создания резервной копии. Валидатор collisions будет пропущен. Если во время обновления возникают отклонения, команда спрашивает, продолжать ли обновление. Однако если результат проверки валидатора collisions будет отрицательным, то процесс обновления не будет остановлен для подтверждения.


php admin.php --dispatch=upgrade_center.console upgrade core --no-backup --skip-validator=*

Установка определенного обновления (в нашем случае core) без создания резервной копии. Все валидаторы будут пропущены. Если во время обновления возникают отклонения, команда спрашивает, продолжать ли обновление. Однако если результат проверки любого валидаторов будет отрицательным, то процесс обновления не будет остановлен для подтверждения.


php admin.php --dispatch=upgrade_center.console upgrade core --skip-validator=* --no-interaction

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

Необходимые права на файлы и папки

Перед обновлением через консоль обязательно настройте права на файлы и папки. Предположим, вы используете веб-сервер Apache с mod_php, и у вас есть доступ по SSH. На сервере 2 пользователя:

  • Пользователь, от имени которого запущен Apache. Обычно это www-data из группы www-data.
  • Пользователь SSH, например, dev с группой dev.

В этом случае:

  • Пользователь dev должен быть владельцем всех файлов интернет-магазина.

  • Пользователя dev нужно добавить в группу www-data.

  • Права на файлы нужно выставить 644, а права на папки755.

  • Папки design, images и var являются исключением из правила — веб-сервер должен иметь возможность их редактировать. На эти 3 папки и их подпапки нужно выставить права 777.

    На все файлы в этих папках и их подпапках нужно выставить права 666. Но на файлы .htaccess в этих папках права должны быть 644.

app (755 dev:dev)
    ...
    functions (755 dev:dev)
        ...
        fn.common.php (644 dev:dev)
        fn.control.php (644 dev:dev)
        ...
design (777 dev:dev)
    .htaccess (644 dev:dev)
    backend (777 dev:dev)
        ...
        templates (777 dev:dev)
            ...
            views (777 dev:dev)
            Index.tpl (666 dev:dev)
            ...
        ...
    ...
var (777 dev:dev)
    .htaccess (644 dev:dev)
    upgrade (777 dev:dev)
    ...