Difference between revisions of "PHP Version Compatibility Assessment"

From WHMCS Documentation

Line 1: Line 1:
 +
<div class="docs-alert-info"><i class="fa fa-question-circle"></i> This page describes a feature available in version 7.5 and above</div>
 +
 
The PHP Version Compatibility Utility can be accessed by navigating to '''Utilities > System > PHP Version Compatibility'''.
 
The PHP Version Compatibility Utility can be accessed by navigating to '''Utilities > System > PHP Version Compatibility'''.
  

Revision as of 15:26, 8 May 2018

This page describes a feature available in version 7.5 and above

The PHP Version Compatibility Utility can be accessed by navigating to Utilities > System > PHP Version Compatibility.

This utility provides a report of ionCube encoded files present within your WHMCS installation directory that may not properly decode under certain versions of PHP. It is designed to give you transparency for files that you may have deployed over the lifespan of your installation, namely files belonging to custom or 3rd party code. WHMCS does not control these files however if their encoding is incompatible with your environment they may negatively affect WHMCS.

This utility only inspects decoding compatibility and does not assert PHP syntax compatibility.

PHP-Version-Compat-Utility.png

Performing a Scan

The interface provides a button labelled "Scan" on your first visit. Click the "Scan" button to initiate a scan. The scan typically takes under 10 seconds. Once completed, an assessment report will be rendered. The report is stored and will automatically be loaded and shown on future visits to the utility. You may click the "Rescan" button at any time to generate a new assessment report.

File Inspection

When a scan is performed the directories within your WHMCS are inspected for encoded files. Files found to be encoded by ionCube will be further evaluated to determine which version of ionCube Encoder was used. When possible, the utility will mark a file as either "Compatible Encoding" or "Incompatible Encoding" for decoding in a specific PHP version. However, due to how ionCube encodings are generated, it is not always possible to make a concise determination for decoding compatibility. In those cases, the file will be marked as "Encoding Compatibility Unknown".

The "/vendor", attachments, downloads and template cache directories are specifically excluded from inspection. These directories may contain many files, all of which should be decodable and have no negative effect on WHMCS, and thus are not evaluated to aid performance of the utility.

Managing Unknown Compatibility Files

If you have files marked as "Encoding Compatibility Unknown" this does not immediately indicate a problem, only that the utility has been unable to accurately determine the PHP versions the file's encoding may support. The recommended course of action is to check with the vendor of the code to confirm if the code is compatible with the desired target PHP version. In many cases, you may find that updates have already been released to provide compatibility with newer PHP versions. If you can confirm it is compatible, no further action is needed. However if there is no update available for compatibility with your target PHP version, you have two options:

  1. Stop using the module and remove the module from your WHMCS installation
  2. Wait for the vendor to issue an update that provides compatibility for your desired PHP version before upgrading PHP

Support for multiple PHP environments will vary between vendors. As discussed in the System Environment Guide, the latest WHMCS releases utilize the ionCube Bundled Encoding feature to generate files that are compatible within multiple PHP environments simultaneously. If a vendor chooses to use the same approach as WHMCS, this utility can concisely determine what support is embedded for decoding in their software. If a vendor opts to provide different encodings for different PHP environments, the encoding may not be descriptive enough for the utility to accurately confirm compatibility.