gpt4 book ai didi

PHP 脚本在 Ubuntu 服务器上不能作为 cron 作业运行

转载 作者:行者123 更新时间:2023-12-04 18:32:04 24 4
gpt4 key购买 nike

我编写了一个 php 脚本,该脚本创建了一个 mysql 数据库的备份,并将其设置为在 Ubuntu 服务器上使用 crontab 每天运行,但该脚本从未执行过(至少看起来如此)。

  • 该脚本称为backup.php。
  • 它生成一个备份(gz 存档中的 sql)并将其存储在文件夹/backup 中。
  • 它将几行文本添加到/backup/log.txt。

  • 该脚本在 crontab 中为 root 用户调用,如下所示(sudo crontab -e):
    * * * * * php -f /var/www/cmdb/backup.php

    (时间需要调整,但这是出于测试目的。)

    什么都没发生。没有文件被创建,没有日志被修改。

    但是,以下所有测试均成功:
  • 使用 php backup.php 在控制台中直接运行脚本
  • 运行 cron 作业:* * * * * 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 正在运行
  • 备份文件夹可写
  • 可从 crontab
  • 访问 PHP 命令

    那么,为什么从 crontab 运行时 backup.php 不做任何事情呢?

    最佳答案

    如评论中所见,问题在于脚本中的路径:您想使用 /var/www/cmdb/backup刚刚写了backup因为您认为这很好,因为脚本在同一目录中运行。

    所以,一般来说,永远不要假设你的脚本中的路径来自 crontab:cron 在非常有限的环境下运行,它的运行路径通常是 /root或只是 / .因此,无论您在脚本中使用什么,都使其使用完整路径。

    或者,否则,移动到路径,然后运行脚本:

    * * * * * cd /var/www/cmdb/ && php -f backup.php

    关于PHP 脚本在 Ubuntu 服务器上不能作为 cron 作业运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37608738/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com