php / mariadb更新后禁止加载数据本地文件

我知道以前曾有人问过这个问题,但是我找不到任何新的帖子可能会对您有所帮助。直到今天,LOAD DATA LOCAL INFILE一直运行良好。除了为PHP和(不确定,但我认为)MariaDB运行了更新之外,我没有做任何其他更改。我现在正在运行PHP 7.2.17和MariaDB 10.1.38


现在我收到此错误: 警告:mysqli :: query():禁止加载数据本地文件


我检查了我能找到的内容:-数据库用户具有所有权限,即使root用户也遇到此错误-检查my.cnf中是否有条目local-infile = 1


在mysql命令行中,load语句工作正常,但在PHP脚本中,效果不佳。


这是我运行导入的方法:


define ('DB_USER', "db_user");

define ('DB_PASSWORD', "my_password");

define ('DB_DATABASE', "prosjekt");

define ('DB_HOST', "localhost");


$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);

我在最后一行得到错误-> $ mysqli-> query($ query);


$query = <<<eof

    LOAD DATA LOCAL INFILE '$fileName'

     INTO TABLE prosjekt

     FIELDS TERMINATED BY ','  ENCLOSED BY '"'

     LINES TERMINATED BY '\r'

    (prosjektnavn,prosjektstatus,prosjektbesk,oppdragsgiver,prosjektans,prosjektdelt,start,slutt,prosjektnr,prosjekttype,sortnr,ant_rapport,litt_link)

eof;


$mysqli->query($query);

因此,我可以在mysql控制台中正常运行,但不能在PHP脚本中运行,今天它开始失败。任何想法如何解决?当我运行SHOW VARIABLES时;我明白了,所以它应该工作吗?


慕妹3242003
浏览 181回答 2
2回答

蝴蝶不菲

我解决了这个问题,并为感兴趣的任何人解决了。我阅读了这篇文章,对您有所帮助看来PHP升级已更改了我的php.ini。我认为我对保留配置或覆盖配置存在一些疑问。不知道我在那里回答正确了!由于这是一项Cron工作,因此我需要在此处修复php.ini:/etc/php/7.2/cli/php.ini取消注释此行或对其进行更改:mysqli.allow_local_infile =开如果您在各自的目录/etc/php/7.2-> / fpm / apache中运行php-fpm,则对php.ini也会执行相同的操作

蛊毒传说

我只是唤醒了我的一个应用程序,使用php7.2和mysqli做着完全相同的事情。当我检查时,似乎我的php7.2已于昨晚升级为Ubuntu自动安全更新的一部分less /var/log/apt/history.log。我的local_infile变量也处于启用状态,但似乎没有起作用。我通过以下方式解决了我的问题:mysqli_options($conn,&nbsp;MYSQLI_OPT_LOCAL_INFILE,&nbsp;true)
打开App,查看更多内容
随时随地看视频慕课网APP