What's new
Panelica Community Forum

Welcome to the official Panelica Community Forum — the central hub for server administrators, developers, and hosting professionals. Register a free account today to access technical discussions, product announcements, feature requests, and direct support from the Panelica team. Be part of the growing community shaping the future of server management.

ionCube Loader on Panelica — step by step

admin

Administrator
Staff member
ionCube Loader on Panelica — step by step

Panelica does not ship ionCube and has no one-click installer for it; you add it by hand. Panelica builds its own PHP under /opt/panelica/services/php/<version>/, so the paths are not the ones you know from cPanel or Plesk. Below is the procedure we verified on PHP 8.1, 8.2, 8.3, 8.4 and 8.5 with ionCube Loader 15.5.1.

The example uses PHP 8.3. Replace 8.3 with your version everywhere; nothing else changes.

1. Download the loaders
Code:
cd /tmp
curl -LO https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xzf ioncube_loaders_lin_x86-64.tar.gz

2. Put the loader in place
Code:
mkdir -p /opt/panelica/services/php/8.3/ioncube
cp /tmp/ioncube/ioncube_loader_lin_8.3.so /opt/panelica/services/php/8.3/ioncube/

Use the plain file, not the one ending in _ts. Panelica's PHP is built non-thread-safe, so the thread-safe loader will not load.

3. Create the ini — the file name matters
Code:
printf 'zend_extension=/opt/panelica/services/php/8.3/ioncube/ioncube_loader_lin_8.3.so\n' \
  > /opt/panelica/services/php/8.3/etc/conf.d/00-ioncube.ini

The 00- prefix is not cosmetic. Two reasons:

  • ionCube must be the first zend_extension. Name the file ioncube.ini and it loads after 10-opcache.ini; PHP then refuses to start at all with The Loader must appear as the first entry in the php.ini file. We reproduced exactly this on 8.1, 8.2 and 8.4 before settling on the 00- name.
  • It survives package updates. When Panelica applies a PHP package it regenerates the ini files that begin with 10-, 15- and 20-. Anything on 00- is left alone, so your loader stays enabled after an update.

4. Verify before touching your sites
Code:
/opt/panelica/services/php/8.3/bin/php -v

You should see:
Code:
with the ionCube PHP Loader v15.5.1, Copyright (c) 2002-2026, by ionCube Ltd.

Checking on the CLI first is the whole point: the CLI reads the same conf.d as your sites, so a wrong architecture, a _ts file or a bad load order shows up here without any site going down.

5. Reload PHP for your sites
Code:
/opt/panelica/bin/pn-service restart php-8.3

That is enough on a server with no sites yet. Panelica runs a separate PHP-FPM master per user, so if you already host sites, reload those too:
Code:
systemctl list-units --plain --no-legend 'panelica-php-fpm-8.3-user@*' \
  | awk '{print $1}' | xargs -r systemctl restart

Three things worth knowing

  • ionCube and OPcache run together without trouble. Leave both enabled.
  • On a version that loads ionCube, Panelica turns opcache JIT off by itself and writes conf.d/99-panelica-jit.ini. That is deliberate, not a fault: JIT and ionCube are mutually exclusive, and PHP used to print a warning on every start. You lose no performance, because JIT could never engage while ionCube was loaded.
  • ionCube is enabled for the whole PHP version, never per site. A zend_extension is loaded when the engine starts and cannot be loaded at pool level, so per-user scoping is not possible. It does no harm to your other sites; they simply have the loader too.

If you would rather not do this by hand, open a ticket with your SSH details and the PHP version you need, and we will install and verify it for you.
 
Back
Top