首页 文章

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

提问于
浏览
2

我有一个非常简单的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工作执行的任何线索?

Update: 我试图通过shell运行脚本,但Curl部分也无法运行 . 所以:

  • 浏览器:curl有效

  • Shell:curl不起作用

  • Cron:卷曲不起作用

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

1 回答

  • 3

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

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

    希望它可以帮助某人 .

相关问题