Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
By Anonymous (not verified) on
Hi there,
I have a members-only site where anonymous users have absolutely no access to anything. In this situation, I can't get cron to run automatically via a system cron job. One route, of course, is to use wget cookie handling to login and run cron via a script, but I before I waded into those waters, I wondered whether there was a short cut people knew about.
Thanks!
Comments
Is CURL installed on the
Is CURL installed on the server? If so, you could set the command to "curl http://www.yoursite.com/cron.php"
How is using cURL going to be different than wget
Sounds like it's the same idea - use cURL to store the cookie and login.... I guess perhaps that's the best bet, anyway.
Solved it
Here's the script that runs cron using wget on a site with no access for anonymous users. Requirement: create a new user for cron. I thought about creating a role that just allowed the cron user to see some content, and test it, but I ended up making this a regular authenticated user, and made the script readable only by root. I probably would not do this on a shared server, if your content is sensitive.
#!/bin/sh
site=http://yoursite/
name=someusername
pass=someverysecurepassword
cookies=/tmp/cron-cookies.txt
wget -O /dev/null --save-cookies /tmp/site-cookies.txt --keep-session-cookies --load-cookies $cookies "${site}user"
wget --keep-session-cookies --save-cookies $cookies --load-cookies $cookies -O /dev/null --post-data="name=$name&pass=$pass&op=Log%20in&form_id=user_login" "${site}user"
wget --keep-session-cookies --save-cookies $cookies --load-cookies $cookies "${site}cron.php"
I Get "Invalid Null Command"
Hi!
I added a node that contains a php script that detects if the user is authenticated or not and redirects anonymous users to another node. Cron was working before this page went up. I had cron running from crontab every hour and working fine. After I put the node with the php redirect up, cron fails and I get the html from the page anonymous users are redirected to as an error message. I'm using Drupal 6.
I think having a "cron user" would solve my problem. I tried your cookie recipe (yes, adding a new user account first, etc.) but I get "Invalid Null Command". I don't know much about wget, so I'm unclear what dev/null is. Any suggestions for making this work? I am on a shared server for now, but no sensitive info.
You had mentioned an alternative method that you abandoned: "creating a role that just allowed the cron user to see some content..." What might that method involve? Does Drupal have a setting for a "cron user" somewhere? I'm missing something but I need crontab to work.
Thanks.