PHP 脚本没有 运行 作为 Ubuntu 服务器上的 cron 作业
PHP script does not run as cron job on Ubuntu Server
我写了一个 php 脚本来创建 mysql 数据库的备份,并在 Ubuntu 服务器上使用 crontab 每天将其设置为 运行,但是脚本永远不会执行(至少看起来如此)。
- 脚本名为 backup.php。
- 它生成一个备份(sql 在 gz 存档中)并将其存储在文件夹 /backup 中。
- 它向 /backup/log.txt 添加了几行文本。
脚本在 crontab 中为 root 用户调用,如下所示 (sudo crontab -e):
* * * * * php -f /var/www/cmdb/backup.php
(时间需要调整,但这是为了测试目的。)
没有任何反应。没有创建文件,没有修改日志。
但是,以下所有测试均成功:
- 运行脚本直接在控制台使用
php backup.php
- 运行 定时任务:
* * * * * php -v > /var/www/cmdb/backup/php-v.txt
- 运行 cron 作业:
* * * * * php -f /var/www/cmdb/test.php > /var/www/cmdb/backup/text.txt
(将字符串写入文件)
我认为这些测试表明:
- backup.php 脚本运行正常
- Cron 运行宁
- 备份文件夹可写
- PHP 命令可以从 crontab
那么,当 运行 从 crontab 执行时,为什么 backup.php 什么都不做?
您可以直接从命令行尝试 运行 命令来检查输出吗?
php -f /var/www/cmdb/backup.php
你能试着明确指出 php 的位置吗?
* * * * * /usr/bin/php -f /var/www/cmdb/backup.php
如评论中所示,问题出在脚本中的路径中:您想使用 /var/www/cmdb/backup
并只写了 backup
因为您认为自脚本 运行在同一目录中。
因此,一般来说,在非常有限的环境下,永远不要从 crontab:cron 运行s 中假定脚本中的路径,并且其 运行ning 路径通常是 /root
或只是 /
。因此,无论您在脚本中有什么,都要使用完整路径。
或者,否则,移至路径,然后 运行 脚本:
* * * * * cd /var/www/cmdb/ && php -f backup.php
我写了一个 php 脚本来创建 mysql 数据库的备份,并在 Ubuntu 服务器上使用 crontab 每天将其设置为 运行,但是脚本永远不会执行(至少看起来如此)。
- 脚本名为 backup.php。
- 它生成一个备份(sql 在 gz 存档中)并将其存储在文件夹 /backup 中。
- 它向 /backup/log.txt 添加了几行文本。
脚本在 crontab 中为 root 用户调用,如下所示 (sudo crontab -e):
* * * * * php -f /var/www/cmdb/backup.php
(时间需要调整,但这是为了测试目的。)
没有任何反应。没有创建文件,没有修改日志。
但是,以下所有测试均成功:
- 运行脚本直接在控制台使用
php backup.php
- 运行 定时任务:
* * * * * php -v > /var/www/cmdb/backup/php-v.txt
- 运行 cron 作业:
* * * * * php -f /var/www/cmdb/test.php > /var/www/cmdb/backup/text.txt
(将字符串写入文件)
我认为这些测试表明:
- backup.php 脚本运行正常
- Cron 运行宁
- 备份文件夹可写
- PHP 命令可以从 crontab
那么,当 运行 从 crontab 执行时,为什么 backup.php 什么都不做?
您可以直接从命令行尝试 运行 命令来检查输出吗?
php -f /var/www/cmdb/backup.php
你能试着明确指出 php 的位置吗?
* * * * * /usr/bin/php -f /var/www/cmdb/backup.php
如评论中所示,问题出在脚本中的路径中:您想使用 /var/www/cmdb/backup
并只写了 backup
因为您认为自脚本 运行在同一目录中。
因此,一般来说,在非常有限的环境下,永远不要从 crontab:cron 运行s 中假定脚本中的路径,并且其 运行ning 路径通常是 /root
或只是 /
。因此,无论您在脚本中有什么,都要使用完整路径。
或者,否则,移至路径,然后 运行 脚本:
* * * * * cd /var/www/cmdb/ && php -f backup.php