php - 在 Ubuntu 18.04 crontab 中执行 PHP
问题描述
我无法在 crontab 中执行 PHP 脚本
Ubuntu 18.04
PHP 7.3
数字海洋上的 Nginx 网络服务器
编辑:
sudo nano /etc/crontab
sudo /etc/init.d/cron restart
我尝试了以下组合和其他变体,使用 root 作为用户并且无法运行 php 脚本
* * * * * /usr/bin/php /home/forge/laravel/public/cron/account_balances.php
* * * * * php /home/forge/laravel/public/cron/account_balances.php
* * * * * forge /usr/bin/php /home/forge/laravel/public/cron/account_balances.php >> /dev/null 2>&1
* * * * * forge php /home/forge/laravel/public/cron/account_balances.php >> /dev/null 2>&1
* * * * * sudo -u www-data php /home/forge/laravel/public/cron/account_balances.php >> /dev/null 2>&1
该脚本在浏览器中运行良好,并更新了 mysql 数据库中的一些行,因此我知道 cron 是否正在执行它。我检查日志并没有看到任何错误:
sudo cat /var/log/syslog | grep cron
我在某处读到它可能是运行 cron 的权限问题,因为我使用的是 Nginx?
解决方案
发现了问题。
首先,我从命令行执行的 php 脚本没有正确的权限。通过运行修复
find * -type d -print0 | xargs -0 chmod 0755 # for directories
find . -type f -print0 | xargs -0 chmod 0644 # for files
其次,我的 php 文件中有一个 require_once 路径错误。该脚本在浏览器中运行良好,但无法通过命令行运行。
更改自:
require_once ("../libs/php_sdk/config.php");
至:
require_once (__DIR__ . "/../libs/php_sdk/config.php");
推荐阅读
- javascript - 在同一选项卡中检测 localStorage 的变化
- c - 在这个 GTK 应用程序中如何创建一个窗口?
- asp.net-core - nopCommerce asp.net 核心性能
- javascript - 谷歌日历与完整日历 io 同步
- sockets - Lisp 中的套接字
- java - 子组上的 Java 正则表达式
- scala - 如何从 Scalaz 中的 Future 中获取价值?
- pci - 如何通过 MMIO 访问 pci express 配置空间?
- java - 如何计算堆内存将容纳的对象数量?
- python - 如何在python中将输入的文本更改为'*'?