Setting up the cron job
Oct 15, 2026
WHBMP has no background daemon. Everything that happens on a schedule is started by one cron job that runs Laravel's scheduler. Without it, nothing automatic happens.
What runs from it
- payment reminders and overdue notices, late fees, suspending and terminating overdue services, domain renewal reminders and ticket clean-up (the daily automation, at the time you set in Automation Settings)
- the daily license check, currency rate sync, affiliate commission release, server account sync and log clean-up
- the hourly check for updates, and the daily automatic updates if you switched them on
- the hourly metering of VPS and dedicated servers sold by the hour, and the daily usage invoices (Hourly billing)
- the queue worker that sends mail and other queued work
- the file-storage mover and, if installed, the S3 backup
- recovery of an update that was cut off halfway
The command
Run schedule:run every 5 minutes (every minute also works):
*/5 * * * * /usr/bin/php /home/USER/public_html/artisan schedule:run >> /dev/null 2>&1
The exact line for your server, with the right PHP path, is shown at the top of Settings > Automation Settings. Copy it from there.
cPanel
- Open Cron Jobs in cPanel.
- Under Add New Cron Job choose Once Per Five Minutes (
*/5 * * * *). - Paste the command from Automation Settings. On cPanel with EasyApache it looks like
/opt/cpanel/ea-php83/root/usr/bin/php /home/USER/path/artisan schedule:run >> /dev/null 2>&1. - Save.
Use the command-line PHP binary, not the one PHP-FPM or LiteSpeed uses. A web PHP binary (php-fpm, lsphp) cannot run artisan.
CloudPanel or any Linux server
Add the job to the crontab of the site user, not root, so created files keep the right owner:
sudo crontab -u SITEUSER -e
*/5 * * * * php8.3 /home/SITEUSER/htdocs/your-domain.com/artisan schedule:run >> /dev/null 2>&1
In CloudPanel you can also add it under the site's Cron Jobs tab.
Check that it works
Open Settings > Automation Settings. The checklist shows whether a run has ever been recorded, whether it runs often enough and whether the daily task ran today. System > Automation Report lists what each run did.
If it shows "No run has ever been recorded", the job is not running. Check that:
- the PHP path is the command-line PHP of the right version,
- the path to
artisanis correct, - the job belongs to the user that owns the site files,
execandproc_openrestrictions on the host do not block the job (they are not needed for WHBMP itself).
To see errors, run the command by hand over SSH without the >> /dev/null part.
Do not run it twice
Never put the same cron job on two servers for one installation. Both would send the same invoices and emails. When you move servers, remove the job from the old one (see Moving to a new server).