我有一个PHP脚本,它使用LOAD DATA LOCAL INFILE
和csv 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
的脚本。也许这是该命令的问题。
答案 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