2010-12-14 100 views
0

J'ai une commande qui s'exécute bien à partir du terminal/ligne de commande. Toutefois, lorsque j'essaie d'exécuter la même commande qu'un travail cron, il échoue. Voici la tâche cronLibcurl avec OpenSSL non trouvé à partir de cron

*/5 * * * * (PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/lib; /path/to/app/public_html/vendors/cakeshell report main -cli /usr/local/lib -console /path/to/app/public_html/cake/ console -app /path/to/app/public_html/app) 

..et ici est le message d'erreur:

Fatal error: Uncaught CurlException: 1: Protocol https not supported or disabled in libcurl thrown in path/public_html/app/vendors/facebook/graph/facebook.php on line 622 

Je libcurl et le soutien --OpenSSL installé. Je pense que c'est un problème PATH. Comme vous pouvez le voir, j'ai essayé d'ajouter le chemin vers PHP qui est/usr/local/lib (à partir de phpinfo()) mais il échoue toujours.

Je suis complètement perplexe quant à la raison pour laquelle cela fonctionnerait à partir du terminal, mais pas cron. Je ne pense pas que cela a à voir avec le SDK Facebook (Graph) car il fonctionne en dehors de cron. Quelqu'un a-t-il une idée?

Répondre

2

trouvé la solution. Dans phpinfo(), recherchez la variable $ _SERVER ['PATH'] sous les variables PHP, copiez le contenu de cette variable et ajoutez-la à votre tâche cron en tant que PATH. Alors

*/5 * * * * /home/worldDomination 

serait

*/5 * * * * PATH=contents-of-$_SERVER['PATH'] ; /home/worldDomination 

Voilà.