How to Fix Joomla Cron Jobs That Work Manually but Not Automatically
Prove the manual command and record it exactly
Run the intended Joomla CLI command manually and confirm it succeeds. Joomla's CLI entry point is cli/joomla.php. Record the PHP executable, Joomla path, scheduler command, user account, and result so you have a known-good comparison for the automatic cron run.
Use absolute paths in the cron entry
Joomla's CLI documentation notes that cron jobs may need the complete path to the PHP executable and shows cli/joomla.php with a full site path. Cron often starts with a minimal PATH and a different working directory, so commands that rely on interactive-shell shortcuts can fail automatically.
Compare the PHP runtimes
The command-line PHP executable can differ from the PHP used by the web server, and a hosting account may expose more than one CLI PHP version. Verify that cron uses the same intended PHP binary as the successful manual test and compare relevant php.ini settings, extensions, memory limits, and time limits.
Check the cron user and filesystem permissions
The automatic job may run as a different account or under different restrictions. Confirm that it can read the Joomla files and configuration, write to required log, cache, temporary, or extension directories, and access any files the task needs. Avoid solving permission problems by making site files broadly writable.
Capture cron output and errors
Temporarily direct standard output and standard error to a protected log or use the hosting control panel's cron history. Joomla CLI supports help and scheduler commands, but a cron failure may occur before Joomla starts. The captured shell or PHP error often reveals a bad path or runtime immediately.
Check environment-dependent dependencies
Cron may not inherit shell environment variables, custom PATH entries, credentials, proxy settings, or a working directory used during your manual test. Use explicit supported configuration rather than depending on an interactive login shell. External commands called by an extension may also need absolute paths.
Verify the next unattended run
After correcting one difference, allow cron to run on its normal schedule. Confirm the cron result, Joomla's Last Run or Execution History where available, and the task's real-world effect. A second manual run is not enough—the fix is proven only when the unattended invocation succeeds.
Need More Help with Joomla?
Still having trouble? Open a support ticket with QuantaCade Support and we'll be happy to help where we can.
Support priority is given to QuantaCade products, services, and customers. However, we're also happy to assist fellow Joomla users with general Joomla questions and troubleshooting when possible.
QuantaCade is an independent Joomla extension developer and is not official Joomla support. Some issues involving third-party extensions, hosting environments, server configurations, or other systems outside our development control may be beyond what we're able to resolve.