How to correct the Themler crash after updating to Joomla 3.9

If you updated to the latest version and the following error appears when you try to launch Themler please follow the instruction below:

Fatal error: require_once(): Failed opening required '[...]/administrator/includes/toolbar.php' (include_path='.:/usr/lib/php7.2') in [...]/templates/[theme_name]/app/index.php on line 25

  1. Open theme folder on the server: www/Joomla_directory/templates;
  2. open /app folder;
  3. open index.php for editing in any html or text editor;
  4. find the line
    require_once JPATH_BASE . DS . 'includes' . DS . 'toolbar.php';
    and replace it with the following line:
    $prefix = version_compare(JVERSION, '3.9', '>=') ? 'sub' : '';
    require_once JPATH_BASE . DS . 'includes' . DS . $prefix . 'toolbar.php';
  5. open /app/start folder;
  6. open data.php file for editing and follow step 4;
  7. open manifest.php file for editing and follow step 4;
  8. start Themler.

Force a file scan in NextCloud

To force a scan after a manual file transfer, for example, can be done as follows:

sudo -u www-data php occ files:scan --all
Usage:
  files:scan [-p|--path="..."] [-q|--quiet] [-v|vv|vvv --verbose] [--all]
  [user_id1] ... [user_idN]

Arguments:
  user_id               will rescan all files of the given user(s)

Options:
  --path                limit rescan to the user/path given
  --all                 will rescan all files of all known users
  --quiet               suppress any output
  --verbose             files and directories being processed are shown
                        additionally during scanning
  --unscanned           scan only previously unscanned files

Source: https://docs.nextcloud.com/server/15/admin_manual/configuration_server/occ_command.html

Upgrade to PHP7.2

  1. apt-get install apt-transport-https lsb-release ca-certificates
  2. wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
  3. sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
  4. apt-get update
  5. apt-get install php7.2-common libapache2-mod-php7.2 php7.2-cgi php7.2-cli php7.2-phpdbg php7.2-fpm libphp7.2-embed php7.2-dev php7.2-curl php7.2-gd php7.2-imap php7.2-interbase php7.2-intl php7.2-ldap php7.2-readline php7.2-odbc php7.2-pgsql php7.2-pspell php7.2-recode php7.2-tidy php7.2-xmlrpc php7.2 php7.2-json php-all-dev php7.2-sybase php7.2-sqlite3 php7.2-mysql php7.2-opcache php7.2-bz2 libapache2-mod-php7.2 php7.2-mbstring php7.2-pdo php7.2-dom php7.2-enchant php7.2-gmp php7.2-soap php7.2-zip

In case you need mcrypt:

  1. apt-get -y install gcc make autoconf libc-dev pkg-config
  2. apt-get -y install libmcrypt-dev
  3. apt-get install php7.2-dev
  4. pecl install mcrypt-1.0.1

    When you see the prompt “libmcrypt prefix? [autodetect] :” -> Press [Enter] to autodetect

  5. php -i | grep "mcrypt"

  1. a2dismod php7.0

    *or whatever version you are upgrading from)

  2. a2enmod php7.2