我有一个非常简单的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部分也无法运行。所以:
更新2:在通过shell运行时添加-dsafe_mode = Off使脚本运行正常。但是,在cron条目中添加相同的标志并没有做任何事情。所以我仍然需要弄清楚如何使它从cron开始工作。
答案 0 :(得分:3)
原来是一个身份验证问题。我通过在CURL配置中添加以下两行来解决它:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
希望它有所帮助。