You must already have a working copy of either Joomla! or Wordpress installed before you can install nBill. For details about how to install Joomla, please see the official installation guide, and refer to the prerequisites for Joomla. For details about how to install Wordpress, please see the official installation guide, and refer to the prerequisites for Wordpress.

nBill 3.x requires PHP 5.4 or later, and it also requires the SimpleXML and MySQLi PHP extensions to be loaded (this is normally the case by default, but on some Windows servers you might need to edit php.ini to enable the mysqli.dll file to be loaded). PHP should be compiled with support for CURL (this is needed to communicate with Paypal or other third party services).

ionCube (standard edition only)

In addition, some parts of the source code for the standard edition of nBill are protected by ionCube encoder. This means that your server must have the relevant ionCube loader before nBill will work. You do not need ionCube if you are using nBill Lite. If your server does not already have the appropriate loader (many hosts provide them by default), you will need to download the appropriate loader for your server's operating system from www.ioncube.com/loaders.php, and install it on your server, or ask your hosting company to do so for you - further information on how to install an ionCube loader is given below.

Not all PHP files in the component are encoded - the ones that render HTML and others containing useful functions have been left open to allow for customisation. Please note however, that the copyright for the supplied code is still held by Netshine Software Limited, and you are not permitted to redistribute any portion of this component to anyone else.

On Joomla!, you can check whether you have the appropriate ionCube loader: login to Joomla administrator, and go to the System->System Information page. Click on the PHP Information link at the top-right, and search that page for the word 'ionCube' (most browsers will allow you to search a page by pressing Ctrl-F then typing the text to search for and pressing enter). If the word 'ionCube' does not appear on that page, you do not have the loader installed.

Unfortunately, Wordpress does not offer any way of checking your PHP configuration unless you install a plugin for that purpose, such as Wordpress phpinfo(), however, you can just try installing nBill standard edition and it will tell you if ionCube is not available.

Installing the loader using the ionCube Loader Wizard

The best way to install ionCube is to use the wizard script provided by ionCube. You can download the wizard from the ionCube loaders page - click on the loader wizard zip file link to download the wizard to your computer, extract it (usually by right-clicking on the zip file and selecting extract), locate the file loader-wizard.php, and upload that to your website's /administrator or /wp-admin directory (using an FTP client or file manager). Then visit that page (yourwebsite.com/administrator/loader-wizard.php or yourwebsite.com/wp-admin/loader-wizard.php) using a browser, and follow the on-screen instructions. If your computer runs Windows (even if your web server does not), you can alternatively download the installer program from ionCube which should take care of installing the loader for you.

Installing the loader using php.ini

The wizard will usually direct you to install the the loader by modifying your php.ini file. This is the configuration file that controls various settings of PHP (the programming language used by nBill as well as Joomla and Wordpress).

If you have a shared hosting account, you might not have access to php.ini. In this case, you can either ask your hosting company to install the loader in the server's php.ini file, or you might be able to add your own custom php.ini file. When a PHP script is executed, the main php.ini file is usually loaded, but (depending on your server configuration) if another file named php.ini is found in the same folder as the PHP script, that file can be used instead. This way, you can override the default configuration options for a particular script.

As nBill runs as a Joomla component or Wordpress plugin, all pages are served via the CMS's main index.php file. So when using the front end (ie. visitors to your website), your custom php.ini file must be present in the root folder where Joomla or Wordpress is installed. When using the back end (ie. when you login to Joomla administrator), all pages are served through the /administrator/index.php (Joomla) or /wp-admin/admin.php (Wordpress) file - so a copy of the custom php.ini file must also be present in the /administrator or /wp-admin folder.

The custom php.ini file is just a text file (eg. created with a text editor such as notepad) containing configuration settings. There are lots of different settings that can be included in a php.ini file, but if any of them are not defined, the default values that come with PHP will be used. For this reason, it is recommended that you start out with a copy of the main server php.ini file, and just add an entry to it for the ionCube loader - that way, any existing configuration settings will be preserved instead of reverting to the defaults. You are therefore advised to ask your hosting company for a copy of the php.ini file, or to ensure that any non-default settings are added to your own php.ini.

To install an ionCube loader via php.ini, you have to add a line that tells PHP where to find the ionCube loader file. So first, upload the ionCube loader file somewhere on your hosting account, and make a note of the full path to the file. Then add an entry to php.ini to point to it.

You will need to make sure you upload the correct loader file for your particular server - there are various combinations available for different operating systems (Linux, Windows, FreeBSD, OS X), processor types (32-bit or 64-bit), PHP versions, and PHP configurations (thread-safe and non-thread-safe). If you are not sure exactly which one you need, use the loader wizard (described above), or check the System Information page in Joomla for clues (it should say which operating system you have and whether your server is 64-bit or not), and just try all the ones you think might be correct until you find the one that works.

The entry in your php.ini file should look something like this:

zend_extension = /path/to/loader/ioncube_loader_filename.so

... or (for thread safe configurations) ...

zend_extension_ts = /path/to/loader/ioncube_loader_filename_ts.so

If you are installing on a Windows server, the loader file will be a .dll rather than .so.

Old Versions of ionCube

If your server has an old version of the ionCube loader installed, then you might get a message similar to this:

Site error: the file C:\inetpub\wwwroot\joomla\administrator\components\com_nbill\admin.nbill.php is corrupted.

or like this:

Site error: the file C:\inetpub\wwwroot\joomla\administrator\components\com_nbill\admin.nbill.php cannot be decoded by this version of the ionCube Loader. If you are the administrator of this site then please install the latest version of the ionCube Loader.

The only way round this is to upgrade to the latest version of the ionCube loader. You will probably have to ask your hosting company to do this for you. Upgrading the loader will not have any adverse effect on any PHP scripts that were encoded for the older loader as all ionCube loaders are fully backward compatible.

(Note: if you have a hosting account with us, we will already have installed Joomla, and the relevant ionCube loader for you).

If you are still having problems with the ionCube loader, please see the FAQs here: http://www.ioncube.com/faqs/loaders.php.