ionCube Loader errors explained: what each one means and how to fix it
Updated 2026-10-21
Most ionCube errors mean the server's PHP or ionCube Loader does not match the encoded file. Install the right Loader, run the file on the PHP version it was encoded for, or get a version re-encoded for your PHP. Decoding is a last resort for code you own when the vendor can no longer supply one.
"The file … was encoded by the ionCube Encoder for PHP 5.6 and cannot run under PHP 7.1 or later"
The file contains bytecode only for older PHP versions, and the server runs a newer PHP. The full message usually ends with "Please ask the provider of the script to provide a version encoded with the correct encoder". This is the most common ionCube error after a PHP upgrade.
- Find the versions the file supports. Open it in a text editor: a first line such as <?php //ICB0 56:0 71:3ff4 ?> lists every PHP version it carries code for (56 = PHP 5.6, 71 = PHP 7.1). Older files start with <?php //00 and do not list versions. The free ionCube checker reads this for you.
- Run the site on a PHP version from that list (most control panels let you pick PHP per site), or ask the vendor for a release encoded for your current PHP.
- If the vendor is gone and you own the software or have the right to maintain it, decoding recovers source you can update for the new PHP version yourself.
"Site error: the ionCube PHP Loader needs to be installed"
The ionCube Loader, the free PHP extension that runs encoded files, is missing for the PHP version serving the site. A variant printed by the file itself reads "Script error: the ionCube Loader for PHP needs to be installed".
- Install the Loader that matches the site's exact PHP version and thread-safety build, then restart PHP-FPM or the web server.
- On panels with several PHP builds (alt-PHP, CloudLinux selectors, per-domain PHP), enable the Loader for the build the domain actually uses, not just the system PHP.
- Confirm with phpinfo() or php -v, which should mention "with the ionCube PHP Loader".
"The file … is corrupted"
The Loader could not read the encoded file. The usual causes are an upload in text (ASCII) mode instead of binary, a partial copy, or line endings rewritten by an editor or Git. Re-upload the original file in binary mode. If every copy fails, the Loader may be older than the encoder that produced the file, so update the Loader.
License and expiry errors
Files can be locked to a license file, domain, IP address or expiry date. These messages mean the license conditions are not met, not that anything is broken. Contact the vendor for a valid license. Decoding is not a way around a license you do not hold.
When decoding is the right answer
- You own the code, or have written permission, and the original source is lost.
- The vendor no longer exists or no longer supports the product, and you need to keep it running on a current PHP version.
- You need to audit what an encoded component on your own servers actually does.
Our service decodes files that carry a PHP 5.0, 5.3–5.6, 7.0, 7.1, 7.2 or 7.4 section. Files whose only sections are PHP 7.3 or PHP 8.x cannot be decoded. Decoded output is PHP 5 or 7 era source, so plan to test and update it for the PHP version you run.
Questions
Can I make an ionCube file for PHP 5.6 run on PHP 8?
Not as it is. The Loader for PHP 8 cannot run bytecode encoded only for PHP 5.6. You need a version encoded for PHP 8 from the vendor, or the source code updated for PHP 8.
Is the ionCube Loader free?
Yes. The Loader that runs encoded files is a free PHP extension. Only the Encoder, which creates encoded files, is a paid product.
How do I see which PHP versions an encoded file supports?
Read its first line. <?php //ICB0 72:0 81:1ba5 82:284d ?> means the file carries code for PHP 7.2, 8.1 and 8.2. The free ionCube checker on this site reads it in your browser without uploading the file.