1wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz # download
2tar xzvf ioncube_loaders_lin_x86-64.tar.gz # extract
3php -v # find out PHP version e.g. 7.2
4php -i | grep extension_dir # find out PHP extensions directory
5
6# copy closest matching ioncube module to your PHP extensions directory
7sudo cp "ioncube/ioncube_loader_lin_7.0.so" /usr/lib/php/20160731/
8
9# copy this line to top of php.ini /etc/php/7.2/apache2/php.ini
10# OR copy this to a new configuration file `00-ioncube.ini` and load it (by moving to /etc/php/7.2/apache2/conf.d)
11# zend_etxension = path/to/module/file
12zend_extension = /usr/lib/php/20160731/ioncube_loader_lin_7.0.so
7.2
and /usr/lib/php/20160731
)ioncube/ioncube_loader_lin_7.0.so
and /usr/lib/php/20160731
)00-ioncube.ini
, zend_extension = /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so
and /etc/php/7.2/apache2/conf.d
)ionCube Loader is a PHP Encoder used by companies like WHMCS to encode their software code. In order to use the software, you need to install ionCube.
Using ionCube encoded and secured PHP files requires a file called the ionCube Loader to be installed on the web server and made available to PHP. PHP can use the Loader with one line added to a PHP configuration file (php.ini).
7.2
/usr/lib/php/20160731
/etc/php/7.2/mods-available/
/etc/php/7.2/apache2/conf.d
You can find out all these with <?php phpinfo(); ?>
, php -v
and php -i
Download ioncube loader (Linux 64 bit, since that’s what i’m using)
1wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
Extract it
1tar xzvf ioncube_loaders_lin_x86-64.tar.gz
You’ll see two kinds of module files in the extracted folder, .so
and _ts.so
. _ts.so
are the thread-safe versions. We’re going to copy the .so
file.
Find the PHP modules folder
1php -i | grep extension_dir
2# extension_dir => /usr/lib/php/20160731 => /usr/lib/php/20160731
Copy the ionCube module for the PHP version (closest match) you have installed, to your PHP extensions directory
1sudo cp "ioncube/ioncube_loader_lin_7.0.so" /usr/lib/php/20160731
There are two places you can add configuration for PHP modules
php.ini
file at /etc/php/7.2/apache2/php.ini
(or find / -name php.ini
)conf.d
directory /etc/php/7.2/apache2/conf.d
(or php -i | grep "Scan this dir for additional .ini files"
)In the conf file we’re going to add
1zend_extension = /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so
which tells the path for the module to laod
While the simplest way to load the module is to just add the one line of code to the beginning of the php.ini
file, the following way is more systematic and is how existing modules are loaded.
We’re going to create a configuration file in the PHP mods-available
directory, and then link to that file from conf.d
so that it gets loaded.
1touch /etc/php/7.2/mods-available/ioncube.ini
2echo "zend_extension = /usr/lib/php/20160731/ioncube_loader_lin_7.0.so" > /etc/php/7.2/mods-available/ioncube.ini
3ln -s /etc/php/7.2/mods-available/ 00-ioncube.ini
Restart Apache
1service apache2 restart
To ensure that the module was correctly installed, create a file called test.php
in /var/www
with the following content:
1<?php
2echo var_export(extension_loaded('ionCube Loader') ,true);
Once you have done that, navigate to http://your-droplets-ip-address/test.php. It should output “true”.
Alternatively, run this from the command line
1php -r "echo var_export(extension_loaded('ionCube Loader') ,true);"
1<?php phpinfo(); ?>
will also tell you if ioncube is enabled.