WHMCS

WHMCS cron not running: how to find and fix the problem

Diagnose why the WHMCS cron is not running or failing: check System Health, run cron.php manually, fix PHP binary, ionCube, paths, memory and locked tasks.

AdvancedWHMCS2 min read

When invoices stop being generated, overdue accounts are not suspended or ticket emails do not import, the WHMCS cron is almost always the culprit. This guide gives a systematic way to find out whether the cron runs at all, whether it fails, and how to fix the usual causes.

Before you start

  • WHMCS admin access and access to your hosting control panel's cron settings.
  • SSH access helps a lot, but most checks also work without it.

Check the symptoms in WHMCS

  1. Open Utilities → Automation Status. It shows when the cron last ran and what each daily task did.
  2. Open Utilities → System → System Health. A warning like "The cron has not run in the last 24 hours" confirms the problem.
  3. Look at Utilities → Logs → Activity Log for entries such as "Cron Job: Starting". No entries means the cron never starts.

Verify the cron entry

  • Compare your control panel's cron job with the command shown under Configuration → System Settings → Automation Settings.
  • The schedule should be every 5 minutes: */5 * * * *.
  • The path to cron.php must be absolute and correct. If you moved the crons folder, check that crons/config.php points to the WHMCS directory.

Run the cron manually

Over SSH, run the exact command with verbose output:

/usr/local/bin/php -q /home/user/whmcs_data/crons/cron.php all -vvv

Without SSH, temporarily set the cron to email output (remove >/dev/null 2>&1) and read the message you receive. The output tells you exactly what fails.

Common causes and fixes

Error or symptomFix
"requires the ionCube PHP Loader"The command-line PHP differs from the web PHP. Use the full path of the right version, e.g. /opt/cpanel/ea-php82/root/usr/bin/php or /opt/alt/php82/usr/bin/php on CloudLinux.
"Could not open input file"Wrong path to cron.php.
"Allowed memory size exhausted"Add -d memory_limit=512M after the PHP binary.
Runs but daily tasks skippedDaily tasks already ran today, or the Time of Day has not been reached. Force with cron.php do --force.
"Unable to acquire lock"A previous run is stuck. Wait, or clear stale locks per WHMCS docs; check for long tasks such as domain sync.
Licence error in outputThe CLI hits a different directory or IP than the licence. Reissue the licence.
Cron disabled by hostYour hosting plan may block cron; ask support.

Run specific tasks

WHMCS's cron accepts commands so you can test parts separately:

  • cron.php list – show available tasks.
  • cron.php do --CreateInvoices – run only invoice generation.
  • cron.php skip --DomainStatusSync – skip a slow task while testing.

After fixing

  • Wait for the next 5-minute run and recheck Automation Status.
  • Review invoices that should have been generated. WHMCS catches up on most tasks on the next daily run, but reminders for past days are not resent.
  • Silence output again once it works.

Next steps

Was this guide helpful?

Still stuck?

Ask MdmHost AI for a quick answer, or open a ticket and our team will take a look. We are here 24/7.