Server Configuration

PHP Requirements & Health Check | ictVoIP Billing

Recommended PHP configuration for the WHMCS host running ictVoIP Billing so the Health Check reports positive results.

PHP Requirements & Health Check

The ictVoIP Billing addon includes a built-in Health Check (/modules/addons/ictvoipbilling/healthcheck.php) that validates the PHP environment on the WHMCS host before and during operation. Use this guide to configure PHP so the Health Check returns positive results and large operations such as tariff imports and Autobill runs do not time out.

Note: These settings apply to the WHMCS host running the ictVoIP Billing addon and server modules — not the FusionPBX/FS PBX server itself.

What the Health Check Verifies

Check Minimum to Pass Recommended for Production
PHP Version 7.4+ PHP 8.1 / 8.2 (match your WHMCS version and ionCube encoder availability)
memory_limit 128M 2048M minimum; 8192M for large tariff imports or high CDR volume
max_execution_time 60 4300 (long-running Autobill and tariff imports)
max_input_time 8600
max_input_vars 5000
upload_max_filesize 8M 100M (based on maximum tariff CSV size)
post_max_size 8M 100M (must be ≥ upload_max_filesize)
date.timezone Must be set Set to your PBX/billing timezone, e.g. America/Toronto
session.gc_maxlifetime 3600
zlib.output_compression Off (prevents truncated Health Check/CSV output)

Required PHP Extensions

The Health Check confirms the following extensions are loaded:

  • pdo
  • pdo_mysql
  • curl
  • mbstring
  • json
  • openssl
  • xml

On cPanel/EA4 these are typically provided by packages such as ea-php82-php-curl, ea-php82-php-mbstring, ea-php82-php-mysqlnd, and ea-php82-php-xml. Enable them via WHM → EasyApache 4 or MultiPHP INI Editor / MultiPHP Manager for the PHP version assigned to the WHMCS account.

Apache (.htaccess / mod_php)

When PHP runs as an Apache module (mod_php), settings can be placed in the WHMCS root .htaccess file. Adjust the IfModule name to the PHP version in use (e.g. php82_module):

<IfModule php82_module>
    php_flag display_errors On
    php_value max_execution_time 4300
    php_value max_input_time 8600
    php_value max_input_vars 5000
    php_value memory_limit 8192M
    php_value session.gc_maxlifetime 3600
    php_value session.save_path "/tmp"
    php_value upload_max_filesize 100M
    php_value post_max_size 100M
    php_value date.timezone "America/Toronto"
    php_flag zlib.output_compression Off
</IfModule>
Important: display_errors On should be enabled only for troubleshooting. Set it to Off in production once the Health Check passes.

PHP-FPM / CGI (no mod_php)

php_flag / php_value directives are only valid with mod_php. On hosts running PHP-FPM or CGI (common on cPanel with ea-php), use one of these instead:

  • .user.ini in the WHMCS root directory:
memory_limit = 8192M
max_execution_time = 4300
max_input_time = 8600
max_input_vars = 5000
upload_max_filesize = 100M
post_max_size = 100M
date.timezone = "America/Toronto"
session.gc_maxlifetime = 3600
zlib.output_compression = Off
  • Or set the same values per-domain via cPanel → MultiPHP INI Editor (or php.ini where permitted).

LiteSpeed (lsapi)

LiteSpeed honours php_value/php_flag in .htaccess through the lsapi_module:

<IfModule lsapi_module>
    php_flag display_errors On
    php_value max_execution_time 4300
    php_value max_input_time 8600
    php_value max_input_vars 5000
    php_value memory_limit 8192M
    php_value session.gc_maxlifetime 3600
    php_value session.save_path "/tmp"
    php_value upload_max_filesize 100M
    php_value post_max_size 100M
    php_value date.timezone "America/Toronto"
    php_flag zlib.output_compression Off
</IfModule>

LiteSpeed Timeout Overrides

If you encounter a 500 Server Error / timeout during large tariff imports or Autobill runs on a large number of CDR records, add LiteSpeed's no-abort overrides to .htaccess:

RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]

Timezone Fallback (configuration.php)

If your hosting provider does not allow overriding date.timezone through php.ini, .user.ini, or .htaccess, set the default timezone directly in the WHMCS configuration.php file so CRON runs use the correct timezone:

date_default_timezone_set('America/Toronto');

Edit the value to the timezone of your PBX server (TZ identifier format, e.g. America/New_York, Europe/London).

Verifying with the Health Check

  1. Log in to the WHMCS admin area.
  2. Run the Health Check from the ictVoIP Billing addon dashboard, or browse directly to: https://yourwhmcs.com/modules/addons/ictvoipbilling/healthcheck.php
  3. Confirm the PHP Environment section reports pass (green) for:
    • PHP Version (7.4+)
    • PHP Extensions (all required extensions loaded)
    • PHP Settings (memory, execution time, upload sizes, timezone)
  4. Re-run the check after each PHP or web server change. If .htaccess or .user.ini edits are not taking effect, confirm which PHP handler (mod_php, PHP-FPM, or LiteSpeed lsapi) is assigned to the account.

Document Last Updated: September 8, 2026

Applies To: ictVoIP Billing addon Health Check on WHMCS 8.x hosts (Apache, LiteSpeed, and PHP-FPM)

Ownership: Developed and maintained by ictVoIP Canada