PHP Curl脚本在浏览器中运行,不能用作Cron Job

时间:2014-07-11 15:19:26

标签: php curl cron

我有一个非常简单的PHP脚本应该发出POST请求。代码如下:

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
curl_close($ch);
mail('myemail@gmail.com','Script run with success','Script run with success',$headers);

当我从浏览器执行它时,它工作正常。但是,当我尝试将其作为一个cron作业执行时,Curl部分不会起作用。该脚本的其余部分甚至可以作为一个cron作业,因为我最后会收到确认电子邮件。

这是cron条目:

*/5 * * * * /usr/bin/php /home/username/scripts/test.php

关于为什么Curl没有作为cron作业执行的任何线索?

更新:我尝试通过shell运行脚本,但Curl部分也无法运行。所以:

  • 浏览器:curl有效
  • Shell:curl不起作用
  • Cron:curl不起作用

更新2:在通过shell运行时添加-dsafe_mode = Off使脚本运行正常。但是,在cron条目中添加相同的标志并没有做任何事情。所以我仍然需要弄清楚如何使它从cron开始工作。

1 个答案:

答案 0 :(得分:3)

原来是一个身份验证问题。我通过在CURL配置中添加以下两行来解决它:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

希望它有所帮助。