For the complete documentation index, see llms.txt. This page is also available as Markdown.

Обновление с версии 9.9

Главное изменение: корень сайта переехал в public/

Раньше корнем сайта (document root) была корневая папка JohnCMS. Это означало, что по прямому адресу были доступны и config/, и system/, и vendor/, и файл .env — от чтения их спасали только правила в .htaccess.

Теперь по HTTP доступна только папка public/. Код, конфигурация и шаблоны остались в корне и больше не отдаются веб-сервером.

Адреса страниц и файлов при этом не изменились. Структура внутри public/ повторяет прежнюю, поэтому /themes/default/assets/css/app.css, /upload/... и /install/ открываются по тем же адресам, что и раньше.

Что нужно сделать при обновлении

1. Переведите корень сайта на папку public

Это главный и обязательный шаг.

  • Обычный хостинг с панелью управления. В настройках сайта найдите поле «Корневая директория сайта» (или «Document root») и укажите в нём папку public внутри каталога сайта. Например, было /var/www/mysite, стало /var/www/mysite/public.

  • Nginx. В конфигурации сервера измените директиву root:

    server {
        # было: root /var/www/mysite;
        root /var/www/mysite/public;
        index index.php;
    }
  • Apache. Измените DocumentRoot в конфигурации виртуального хоста:

    DocumentRoot /var/www/mysite/public
    <Directory /var/www/mysite/public>
        AllowOverride All
        Require all granted
    </Directory>

2. Перезапустите PHP

После обновления обязательно перезапустите php-fpm (или веб-сервер, если PHP работает как модуль Apache). PHP кэширует пути к файлам (realpath cache), и без перезапуска сайт может продолжать искать файлы по старым адресам.

3. Обновите зависимости

Если корень сайта сменить нельзя

На некоторых дешёвых хостингах корневую папку сайта поменять невозможно. Для таких случаев в корне JohnCMS лежит файл .htaccess, который перенаправляет все запросы в public/ и закрывает доступ к папкам с кодом. Он подхватится сам, и сайт продолжит работать.

Что это значит для авторов шаблонов

Шаблон теперь разложен по двум местам:

  • исходники и шаблоны страниц остались в корне — themes/<ваш шаблон>/src/ и themes/<ваш шаблон>/templates/;

  • собранные стили, скрипты и картинки переехали в public/themes/<ваш шаблон>/assets/.

Если вы собираете стили через webpack, поправьте пути назначения в webpack.<ваш шаблон>.mix.js — они должны указывать в public/themes/<ваш шаблон>/assets/. Адреса файлов в браузере при этом не меняются, функция asset() в шаблонах работает как прежде.

Удалены скрипты обновления со старых версий

Из папки install удалены разовые скрипты обновления с версий ниже 9.9, конвертеры данных и скрипты доустановки модулей 9.9 (install_collections.php, install_consent.php, install_contacts.php, update_counters_cookie_consent.php). Теперь папка install содержит только веб-инсталлятор.

Если вы обновляетесь с версии ниже 9.9, эти скрипты и инструкции к ним остались в ветке 9.x и в документации ветки 9.9. Выполните их до перехода на 10.0.

Зависимости переехали в vendor/

Composer-зависимости, которые раньше лежали в system/vendor, теперь устанавливаются в стандартную папку vendor/ в корне. При обновлении удалите старую папку и переустановите зависимости:

Последнее обновление

Это было полезно?