PHP Curl脚本可以在浏览器中工作,不能作为Cron Job工作


PHP Curl script works from browser, doesn't work as Cron Job

我有一个非常简单的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 works
  • Shell: curl不工作
  • Cron: curl不工作

更新2:添加-dsafe_mode=Off,而通过shell运行使脚本运行良好。然而,将相同的标志添加到cron条目并没有做任何事情。所以我仍然需要弄清楚如何使它从cron工作。

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

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

希望对大家有所帮助。