5 Reasons Your IonCube Decode Failed (And How to Fix Each One)
Troubleshoot common IonCube decoding failures: unsupported versions, corrupted files, callback encryption, and more.
You uploaded an IonCube-encrypted PHP file, hit decode, and got an error. Before you give up, check these five common causes. Most are fixable in under a minute.
1. Unsupported PHP version
Error: "PHP X.X is not supported yet"
IonCube files are compiled for a specific PHP version. The decoder detects this version from the file header and checks it against supported versions.
Currently supported: PHP 7.1, 7.2, 7.3, 7.4, 8.1, 8.2, 8.3, 8.4
Not supported: PHP 5.x, 7.0, 8.0
Fix: If your file was encoded for PHP 5.x or 7.0, it was built for an older PHP runtime that uses a different opcode format. Support for legacy PHP versions may be added in the future. Reach us on Signal at sologhoul.83 to ask about progress.
PHP 8.0 is a special case: IonCube never released a production loader for PHP 8.0, so files encoded specifically for 8.0 are extremely rare. If you see this error, double-check that the file is actually encoded for 8.0 and not a neighboring version.
2. The file is not IonCube-encoded
Error: "This file does not appear to be IonCube encoded"
The decoder examines the file header to detect IonCube encoding markers. If it can't find them, the file might be:
- Encoded with a different tool — SourceGuardian, Zend Guard, and phpBolt all produce encrypted PHP files that look similar but use completely different formats. Check the file header for clues:
- IonCube:
<?php //00...with an IonCube Loader check - SourceGuardian:
<?php $sg_...or references tosg_load - Zend Guard: references to
Zend Optimizer
- IonCube:
- Already decoded — someone may have already decoded this file and you're looking at the output
- Corrupted during transfer — FTP transfers in ASCII mode can corrupt binary data in encoded files. Re-download in binary mode.
- A wrapper file — some applications use a plain PHP file that loads the actual encoded file. Check if there's an
includeorrequirepointing to another file.
Fix: Open the file in a text editor and examine the first few lines. The header will tell you what encoding was used. DecodePHP only handles IonCube.
3. Callback encryption failed to resolve
Error: Decoding succeeds but some functions show empty bodies or placeholder code.
Starting with IonCube 12, files can use callback-based encryption where function bodies are decrypted at runtime using a key derived from a callback function. The decoder needs to resolve this callback to produce the full output.
DecodePHP automatically attempts callback key recovery, but in rare cases the callback is too complex to resolve automatically.
Fix: Use the re-decompile button on the decode result page. Each re-decompile attempt uses a different recovery strategy. You get up to 3 attempts per file. If all three fail, contact support with the file hash—it may require a decoder update to handle that specific callback pattern.
4. File is too large
Error: "File too large. Maximum size is 10MB"
The decoder accepts files up to 10 MB. Most IonCube-encoded PHP files are well under this limit, but some generated files (e.g., concatenated builds or files with large embedded data) can exceed it.
Fix: Check if the file was bundled unnecessarily. Sometimes build tools concatenate multiple PHP files into one. If the file genuinely needs to be larger than 10 MB, contact support to discuss options.
5. Timeout during decoding
Error: Decoding status stays on "pending" for more than 60 seconds, or you see a timeout error.
Most files decode in under 30 seconds. Timeouts happen when:
- The file has unusually complex control flow (deeply nested loops, very long functions)
- The callback key recovery is cycling through many candidate keys
- The server is under heavy load (rare)
Fix: Wait a minute and refresh the page. The decode may have completed after the initial timeout. If the status still shows "pending," try uploading the file again. Temporary server load resolves quickly.
Still stuck?
If none of the above applies to your situation:
- Contact us on Signal — sologhoul.83 — to ask for help.
- Email support at support@decodephp.io with the error message and the IonCube/PHP version detected.
- Try the free preview at decodephp.io — even if a full decode failed previously, a re-upload may work if the decoder has been updated since.
We continuously update the decoder to handle new IonCube versions and edge cases. If your file fails today, it may succeed after the next update.
Ready to decode your IonCube files?
Upload a file and preview the first 20 lines for free. No account required.
Try It Free