gpt4 book ai didi

php 脚本在手动调用时完全工作,但不会从 cron 作业运行

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:12 24 4
gpt4 key购买 nike

我有一个 PHP 脚本,它基本上复制一个 zip 文件,解压缩它,然后将生成的文本文件复制到 MySQL 数据库。

当我手动调用我的 php 页面时,这非常有效,但这需要每天完成,所以我想将其设置为 cron 作业。

我有一个可以运行的 cron 作业,我已经通过调用一个非常简单的脚本验证了这一点,但是在尝试运行我的整个页面时它失败了。

我已经追踪到代码的两个区域。首先:

date_default_timezone_set('Europe/London');

我知道我可以通过 htaccess 或 php.ini 文件进行设置,所以我不关心这个。

但是,阻止 cron 作业运行的第二个代码区域是:

$localzipfile = "myfolder/myzipfile.zip";
$localzipfilefullpath = "/homepages/20/dXXXXXXXXX/htdocs/sub/folder/" . $localzipfile . "";
$localpath = pathinfo(realpath($localzipfile), PATHINFO_DIRNAME);
$zip = new ZipArchive;
$res = $zip->open($localzipfilefullpath);
if ($res === TRUE) {
$zip->extractTo($localpath);
$zip->close();
}

同样,当我手动运行代码时,这一切都完美无缺,所以我知道一切都已准备就绪并且可以正常工作。所有路径都正确,zip 文件按预期解压缩。

只有当我尝试将其作为 cron 作业运行时,它才会失败并且不会解压缩文件。

我已经看到其他几个关于手动运行但不作为 cron 作业运行的 php 文件的 SO 问题,但没有一个与本地 zip 文件的解压缩有关。

更新:

我已经设法记录了 cronjob 的错误输出,它正在报告:

“无法实例化不存在的类:ziparchive”

不过,我不明白这一点,因为当我从浏览器运行代码时,所有代码都可以正常运行?

最佳答案

您是否为 $local zip 文件和 $localpath 使用相对路径?

如果是,请尝试使用绝对值或在运行 PHP 之前编写一个位于 PHP 脚本目录中的 shell 脚本。

关于php 脚本在手动调用时完全工作,但不会从 cron 作业运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31787188/

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