j'ai donc une tâche cron qui exécute un script PHP comme ceci:Erreur d'analyse lors de l'exécution de cron mais pas à partir de la ligne de commande?
0 0 * * * /usr/local/bin/php -f /home/mysite/mysite.com/cronjobs/renewal_email.php
Si je délivre la même commande à partir de la ligne de commande, il fonctionne sans erreur et en cours d'exécution avec le drapeau de l montre aucune erreur de syntaxe. Cependant des e-mails Cron ce qui suit:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR
La ligne en question est
$courses[$t->CourseNumber] = $t->course()->CourseName;
Est-ce que ce montant limité de l'info lever des drapeaux rouges? Quelqu'un voit pourquoi cela devrait se passer sous cron mais pas à partir de la ligne de commande?
// Éditer pour ajouter la réponse du support DreamHost. Script travaille avec ce changement.
La version par défaut de PHP sur le serveur est PHP4. Cela est dû au fait que le serveur utilise les paramètres PATH plutôt qu'Apache pour spécifier la version à exécuter. Le chemin pour PHP4/usr/local/bin/php vient avant le chemin PHP5/usr/local/php5/bin/php donc il s'exécute toujours en premier lorsque vous tapez php à partir du shell.
Pour exécuter PHP5 du shell que vous devez spécifier le chemin complet:
/usr/local/php5/bin/php --version
L'utilisateur cron ne pas utiliser votre chemin .bash_profile
donc vous devez spécifier le chemin complet PHP5 dans chaque tâche cron.
Est-ce que $ t est généré à partir de ce script? – Trevoke