Tar error:通过Cron/PHP运行时存档中的意外EOF

wow*_*ick 20 php cron tar

我有一个通过cron调用的PHP控制台脚本,它本身创建了一个目录的tar文件.

通过cron调用PHP脚本时,无法正确创建tar文件.查看tar文件时会出现以下错误:

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)

通过控制台手动调用PHP脚本时,正确创建了tar文件.cron日志输出显示没有错误.

这里tar调用形成PHP脚本.

 exec("cd $this->backupTempFolderName/$id; tar -czf ../../$this->backupFolderName/$tarFileName $dbDumpFileName documents");
Run Code Online (Sandbox Code Playgroud)

剂量任何人都知道为什么在手动调用时正确创建tar并在通过cron调用时失败?

更新:通过cron创建tar文件时给出的错误是:

tar: ../../backup/20150819-060003.tar.gz: Wrote only 4096 of 10240 bytes
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)

有时错误是:

tar: ../../backup/20150819-054002.tar.gz: Cannot write: Broken pipe
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)

如前所述,当通过cron执行时,tar文件被创建,但总是50%的正确大小(当手动执行脚本时):

-rw-r--r--  1 gtz gtz 1596099468 Aug 19 06:25 20150819-042330.tar.gz <- Manually called skript, working tar
-rw-r--r--  1 gtz gtz  858570752 Aug 19 07:21 20150819-052002.tar.gz <- Script called via cron, broken tar
Run Code Online (Sandbox Code Playgroud)

更新2

在根据此处给出的输入做了一些进一步的研究之后,可能应该补充一点,称为脚本的cron正在虚拟专用服务器上运行 - 我怀疑对于没有托管者记录的cron作业可能存在一些限制(仅限于最小值)重复时间在文档中给出.

Hal*_*nis 0

我猜你有资源限制 正如 M. Ivanov 所说,在你的 PHP 脚本中添加以下命令:

shell_exec("php -info");
Run Code Online (Sandbox Code Playgroud)

并在从命令行和 cron 作业执行脚本时检查此参数

memory_limit => ???
Run Code Online (Sandbox Code Playgroud)

您还可以尝试将内存限制提高到1600M来运行 cron

php -d memory_limit=1600M scriptCompressor.php
Run Code Online (Sandbox Code Playgroud)

希望有帮助:)