edelwater edelwater - 4 months ago 24
Perl Question

Perl script works but not via CRON

I have a perl script (which syncs delicious to wp) which:

  1. runs via the shell but

  2. does not run via cron (and i dont get an error)

The only thing I can think of is that it read the config file wrongly but... it is defined via the full path (i think).

I read my config file as:

my $config = Config::Simple->import_from('/home/12345/data/scripts/delicious/wpds.ini',
\my %config);

(I am hosted on mediatemple)

Does anybody have a clue?

update 1: HERE is the complete code: http://plugins.svn.wordpress.org/wordpress-23-compatible-wordpress-delicious-daily-synchronization-script/trunk/ (but I have added the path as above to the configuration file location as difference)

update 2: crossposted on https://forums.mediatemple.net/viewtopic.php?pid=31563#p31563

update 3: the full path did the trick, solved


The difference between a cron job and a job run from the shell is 'environment'. The primary difference is that your profile and the like are not run for a cron job, so any environment variables you have set in your normal shell environment are not set the same in the cron environment - no extensions to PATH, no environment variables identifying where Delicious and/or WP are hosted, etc.

Suggestion: create a cron job that simply reports the environment to a known file:

env > /home/27632/tmp/env.27632

Then see what is set in your own shell environment in comparison. Chances are, that will reveal the trouble.

Failing that, other environmental differences are that a cron job has no terminal, and has /dev/null for input and output - so interactive stuff does not work well.