开发者

Parse error when run by cron but not from command line?

开发者 https://www.devze.com 2022-12-17 23:18 出处:网络
So I have a cronjob which executes a PHP script like so: 0 0 * * * /usr/local/bin/php -f /home/mysite/mysite.com/cronjobs/renewal_email.php

So I have a cronjob which executes a PHP script like so:

0 0 * * * /usr/local/bin/php -f /home/mysite/mysite.com/cronjobs/renewal_email.php

If I issue the same command from the command line it runs without error and running with the l flag shows no syntax errors. However cron emails the following:

Parse error: syntax error, unexpected T_OBJECT_OPERATOR

The line in question is

$courses[$t->CourseNumber] = $t->course()->CourseName;

Does this limited amount of info raise any red flags? Anyone see why this should happen under cron but not from the command line?

// Edit to add DreamHost support response. Script is working with this change.

The default version of PHP 开发者_运维技巧on the server is PHP4. This is because the server uses the PATH settings rather than the Apache to specify which version is run. The path for PHP4 /usr/local/bin/php comes before the PHP5 path /usr/local/php5/bin/php so it always runs first when you type php from the shell.

To run PHP5 from the shell you need to specify the entire path:

/usr/local/php5/bin/php --version

The cron user will not use your .bash_profile path so you would need to specify the full path to PHP5 in each cron job.


Hm. The error message sounds like you're running a PHP5 script on a PHP4 interpreter. However, if you use the exact same path to the PHP binary, I can't see how this could happen.

Can you have the cron job do a phpinfo() and see what the output is?

For PHP 4, you'd have to rewrite the instruction:

$temp = $t->course(); 
$courses[$t->CourseNumber] = $temp->CourseName;


I would say youre using two different versions of PHP. does running which php from the command line produce a different path than the one you are using in the cron tab?


That error means that your variable doesn't contain an object. Try var_dump:ing it while running the cron job.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号