LOAD DATA LOCAL INFILE通过终端运行,但不是cron作业

时间:2019-12-04 12:50:04

标签: php mysql csv cron

我有一个PHP脚本,它使用LOAD DATA LOCAL INFILEcsv file

脚本将csv文件下载并存储到与脚本相同的位置,然后执行查询以使用LOAD DATA LOCAL INFILE插入csv。

如果有问题,csv和php脚本的位置都在public_html之外。

当我将脚本作为 cron作业运行时,它会运行,下载csv(并存储在正确的位置),但是不会插入到数据库中。查询返回 false

如果我打开终端并运行脚本,它将把csv和插入下载到数据库中。查询返回 true

在终端中运行它和通过cron运行它之间会有区别吗?

这是cron行:

/usr/bin/php -q /home/username/my_crons/csvfile/csvdownload.php

注意:我还有其他cron脚本可以将数据正确地插入数据库,但这是唯一使用LOAD DATA LOCAL INFILE的脚本。也许这是该命令的问题。

1 个答案:

答案 0 :(得分:0)

正如aynber指出的那样,我应该添加一些错误检查以查看来自MySQL的错误消息。

一旦我这样做,错误如下:

Error description: LOAD DATA LOCAL INFILE is forbidden, check mysqli.allow_local_infile

这对我来说很奇怪,因为我以为我已经使用PHP编辑器通过WHM启用了它。但是,我注意到我的cron作业使用的是不同的PHP版本,需要在此处启用它。启用后,它可以解决此问题。

我必须添加到php.ini中:

mysqli.allow_local_infile = On