php - 通过 cron 作业发送 HTTP 请求
问题描述
我有一个部署在服务器中的 PHP 文件:
/var/www/html/cron/leave_mail.php
此 PHP 文件中的代码只是通过 CURL 发送请求(url 的服务器与 cron 作业的服务器相同):
<?php
$url = "http://my-site.build.com/sendmail/sendmail_leave";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$head = curl_exec($ch);
curl_close($ch);
?>
现在我在部署 PHP 文件的同一台服务器上创建了一个 cron 作业:
* * * * * php /var/www/html/cron/leave_mail.php
1 分钟后,它没有执行 PHP 文件中的命令,但是,我可以在系统日志中看到 cron 作业正在运行。
我用 ubuntu os 运行我的本地虚拟机并创建了相同的 cron 作业,执行相同的文件。1 分钟后,我可以看到它执行了 PHP 文件中的命令,因为数据库上的数据已更新。
我真的很困惑为什么服务器上的 cron 作业没有执行 PHP 命令。我被困在这个问题上。
解决方案
从查找 PHP 在哪里开始:
which php
然后通过运行以下命令更新 crontab:
crontab -e
然后使用正确的 PHP 路径更新该行:
* * * * * root /usr/bin/php /var/www/html/cron/leave_mail.php
另请注意,您可以在路径之前指定用户。希望这会有所帮助。
推荐阅读
- bluetooth - DLE 和蓝牙网状网络
- azure - ARM:解决方案模板:多个 VM:如何在不硬编码 ips 的情况下配置 BackendAddresses 数组的内容
- java - JSP scriptlet 到 JSTL 的自动化
- javascript - Ramda.js 管道,根据前一个参数设置属性
- c# - 属性更改时未反映 MVVMLight Toolkit 更改
- javascript - 使用 localstorage 中的变量更新 span
- css - 保证金属性未作为道具传递
- firebase - 在 Flutter 中,我们如何从某个索引的队列中拉出一个文档?
- javascript - 使用 REST api 从 Google Drive 下载图片
- java - Maven 安装和运行 JAR 文件会产生各种编译错误