首页 > 解决方案 > 在 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?

标签: phpubuntucrondigital-ocean

解决方案


发现了问题。

首先,我从命令行执行的 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");

推荐阅读