Difference between revisions of "PHP 7 Migration Troubleshooting Guide"

From WHMCS Documentation

(Resolving the Issue)
(Resolving the Issue)
Line 30: Line 30:
 
After adding this line and saving/uploading the file, retry the steps that previously led to the "Oops!", blank, or partially rendered page and further error information should be displayed.
 
After adding this line and saving/uploading the file, retry the steps that previously led to the "Oops!", blank, or partially rendered page and further error information should be displayed.
  
==Resolving the Issue==
+
==Common Errors/Resolutions==
  
 
With error reporting enabled, you should see the full error message being generated at the time the problematic PHP file is attempted to be included/executed.  Below are some of the most common errors you may encounter.
 
With error reporting enabled, you should see the full error message being generated at the time the problematic PHP file is attempted to be included/executed.  Below are some of the most common errors you may encounter.
  
* ''The file /path/to/file.php was encoded by the ionCube Encoder for PHP 5.6 and cannot run under PHP 7.1 or later. Please ask the provider of the script to provide a version encoded with the ionCube Encoder for PHP 7.1.''
+
==Oops! Something went wrong and we couldn't process your request==
 +
 
 +
[[File:Oops_error_page.png]]
 +
 
 +
Seeing an error page like the one pictured above indicates a fatal error is occurring.
 +
 
 +
Two of the most common causes are listed below:
 +
 
 +
* '''Missing PHP Extensions''' - You may see this error if the version of PHP you switched to is missing some of the [[System_Environment_Guide#Extensions_2|required extensions]] for WHMCS.  Required extensions include: IonCube Loader, PDO, PDO_MYSQL, cURL with SSL Support, GD2 & IMAP.<div class="docs-alert-warning">Please note that if you are compiling PHP using EasyApache, be sure to include both the '''PDO''' and '''mysqlnd''' PHP extensions for MySQL connections to be possible.</div>
 +
 
 +
* '''Incompatible PHP Files''' - PHP files using deprecated or non-longer available functions may also trigger an error page such as this. To debug these types of issues, follow the instructions above to enable error reporting and a more detailed error output should be provided indicating the file and PHP error output.
 +
 
 +
==The file was encoded by the ionCube Encoder for PHP x.x and cannot run...==
 +
 
 +
You may see an error message that looks like this:<br>
 +
''The file /path/to/file.php was encoded by the ionCube Encoder for PHP 5.6 and cannot run under PHP 7.1 or later. Please ask the provider of the script to provide a version encoded with the ionCube Encoder for PHP 7.1.''
  
 
Seeing the above error message indicates the itemised file was encoded using an older version of ionCube Encoder that does not include support for PHP 7.1 or later. You will need to contact the original vendor/author of the file to ask for an updated version of the file.
 
Seeing the above error message indicates the itemised file was encoded using an older version of ionCube Encoder that does not include support for PHP 7.1 or later. You will need to contact the original vendor/author of the file to ask for an updated version of the file.

Revision as of 16:17, 30 March 2018

« Back to the PHP 7 Migration Guide

If following a change of PHP version you encounter an Oops error page, or blank or partially rendered page, the most likely cause is that there is a file present in your installation that is not compatible with the new PHP version.

Possible causes include:

  • Syntax Error - A file uses deprecated or removed functionality which is no longer available in the newer version of PHP.
  • Decoding - A file is encoded with an ionCube encoding that is not compatible with the newer version of PHP or the installed ionCube Loader extension.

To confirm the exact cause of the issue, you will need to enable error reporting.

Enabling Error Reporting

Enabling From The Admin Area

If you can login to the admin area and navigate to General Settings then follow these steps below to enable error display. After enabling Display Errors, retry the steps that previously led to the "Oops!", blank, or partially rendered page and further error information should be displayed.

  1. Navigate to Setup > General Settings > Other
  2. Tick the Display Errors checkbox located towards the bottom of the page
  3. Click Save Changes

Enabling From Your Configuration File

If the error is severe enough, you may find you are unable to login to the admin area. In those situations, there is a manual configuration file flag option that you can add to the configuration.php file in the WHMCS root directory to enable error reporting.

The lines needs to be added at the very end of the configuration.php file, below any other statements (but right before the closing PHP tag ?>, if present).

$display_errors = true;

After adding this line and saving/uploading the file, retry the steps that previously led to the "Oops!", blank, or partially rendered page and further error information should be displayed.

Common Errors/Resolutions

With error reporting enabled, you should see the full error message being generated at the time the problematic PHP file is attempted to be included/executed. Below are some of the most common errors you may encounter.

Oops! Something went wrong and we couldn't process your request

Oops error page.png

Seeing an error page like the one pictured above indicates a fatal error is occurring.

Two of the most common causes are listed below:

  • Missing PHP Extensions - You may see this error if the version of PHP you switched to is missing some of the required extensions for WHMCS. Required extensions include: IonCube Loader, PDO, PDO_MYSQL, cURL with SSL Support, GD2 & IMAP.
    Please note that if you are compiling PHP using EasyApache, be sure to include both the PDO and mysqlnd PHP extensions for MySQL connections to be possible.
  • Incompatible PHP Files - PHP files using deprecated or non-longer available functions may also trigger an error page such as this. To debug these types of issues, follow the instructions above to enable error reporting and a more detailed error output should be provided indicating the file and PHP error output.

The file was encoded by the ionCube Encoder for PHP x.x and cannot run...

You may see an error message that looks like this:
The file /path/to/file.php was encoded by the ionCube Encoder for PHP 5.6 and cannot run under PHP 7.1 or later. Please ask the provider of the script to provide a version encoded with the ionCube Encoder for PHP 7.1.

Seeing the above error message indicates the itemised file was encoded using an older version of ionCube Encoder that does not include support for PHP 7.1 or later. You will need to contact the original vendor/author of the file to ask for an updated version of the file.

If the file is a WHMCS file (you can determine this by looking at first several lines of the file for the WHMCS copyright notice), it is possible that it is a file that we no longer maintain or distribute. Typically these files are removed automatically by the update routines built into WHMCS, but if at any time permissions did not allow for its removal, it is possible for it to remain on your system. In most cases such files are no longer in use or valid for the current version of WHMCS. If it relates to a module that you do not use, it should be safe to simply delete it. If you are unsure, our support team will be able to assist you in making this determination.

« Back to the PHP 7 Migration Guide