WHMCS Cron Not Running: Fix Automation Status Warnings

WHMCS Cron Not Running: Fix Automation Status Warnings

Tested on 12 October 2026 in a ShoHost sandbox (PHP 8.4). We did not install WHMCS or use a WHMCS licence. Instead we ran a stand-in cron script the way cron runs it, and checked the PHP command line for ionCube. The Automation Status image is a simulated example; menu names and the cron command format come from the public WHMCS documentation.

WHMCS does its daily work from one cron job: invoices, reminders, suspensions, domain syncs and ticket escalations. If it stops, you see an Automation Status warning in the admin dashboard and invoices stop going out. Most causes are in the cron command itself.

Simulated WHMCS Automation Status warning that the cron has not run in 24 hours, with the cron command and no last run
Simulated: the kind of warning WHMCS shows when the cron hasn’t run.

The warning reads along the lines of The cron job has not run in the last 24 hours. Automated tasks such as invoice generation, payment reminders, suspensions and domain syncs are not being performed. It also shows the cron command from Automation Settings and the last run time, which reads (none) if it has never run.

Step 1: Get the right command

In WHMCS admin open Configuration → System Settings → Automation Settings. The page shows the exact cron command for your installation, including the path to crons/cron.php. It looks like this:

*/5 * * * * /usr/local/bin/php -q /home/USERNAME/crons/cron.php

WHMCS recommends running it every 5 minutes. Copy the path from that page rather than typing it; many people move the crons folder outside public_html for security, and the path changes with it.

Step 2: Check the command works

Terminal: a relative cron path fails with Could not open input file, the full path works, and php -m shows no ionCube loader in this PHP CLI
Two checks from our sandbox: a relative path fails under cron, and the CLI PHP may lack modules the web PHP has.
  • Full paths: cron doesn’t start in your WHMCS folder. A relative path fails with Could not open input file.
  • PHP version: the cron must use a PHP version your WHMCS version supports. If the site uses PHP 8.1 via MultiPHP but /usr/local/bin/php is another version, use the versioned binary your host gives (on some servers, a path like /opt/cpanel/ea-php81/root/usr/bin/php).
  • ionCube Loader: WHMCS is encoded with ionCube, so the PHP used by cron needs the loader too. Our sandbox PHP CLI has none (php -m shows 0), and WHMCS would refuse to run there.
  • Moved crons folder: if you moved it, the config.php in the crons folder must point to your WHMCS path, as the WHMCS docs describe.

Step 3: See the output

Add your email at the top of cPanel’s Cron Jobs page, or append >> /home/USERNAME/whmcs-cron.log 2>&1 to the command, and wait for the next run. You can also run the command in cPanel Terminal to see errors immediately. WHMCS also logs each run in Configuration → System Logs → Activity Log.

cPanel Cron Jobs page Cron Email section
Real cPanel: add your email under Cron Email to see each WHMCS cron run’s output.

Step 4: Clear the warning

Checklist for a WHMCS cron that is not running: command, PHP version, ionCube, moved crons folder, and seeing the output
Check these in order.
  • Command: copy it from Automation Settings, with the full path to php and crons/cron.php.
  • PHP version: a version your WHMCS supports. Use the versioned php binary if needed.
  • ionCube: the PHP used by cron must load the ionCube Loader.
  • Moved crons folder: crons/config.php must point to the WHMCS path.
  • See the output: use the cron email or >> ~/whmcs-cron.log 2>&1, and run it in Terminal.

Once the cron runs, the Automation Status page updates after the next run. If invoices were missed while it was down, check Billing → Invoices: the daily run catches up on due invoices, but reminders for past days aren’t sent again.

FAQ

How often should the WHMCS cron run?

Every 5 minutes, as the WHMCS docs recommend. The daily tasks run once a day inside it, at the time set in Automation Settings.

Can I use wget or curl instead of php?

Use the php command line. A web-based cron can time out and is not the documented method.

The cron runs but nothing happens. Why?

Check the Activity Log and the cron output for license, ionCube or database errors, and the daily task time in Automation Settings.

Automation Status still showing a warning? If WHMCS runs on your ShoHost account, WhatsApp the cron command and its output to +91 94880 91432 and we’ll check them with you.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *