我是使用Apache2,Php(7.3)和Mysql运行ubuntu 18.04的新手。
我跑步时
sudo php -r 'phpinfo();' | grep -i mysqli
我得到结果:
/etc/php/7.3/cli/conf.d/20-mysqli.ini,
mysqli
MysqlI Support => enabled
mysqli.allow_local_infile => Off => Off
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqli.rollback_on_cached_plink => Off => Off
API Extensions => mysqli,pdo_mysql
我的问题是为什么mysqli.allow_local_infile => Off => Off
,即使我尝试在php.ini
中启用它?我在做错什么吗?
(对不起我的英语不好)
答案 0 :(得分:0)
我开箱即用运行php 7.0,并检查了您的“公式”
sudo php -r 'phpinfo();' | grep -i mysqli
我得到了 mysqli.allow_local_infile =>关闭=>关闭
然后我看看mysql
SHOW GLOBAL VARIABLES LIKE '%local_infile%';
在我的系统上似乎已经打开。但这很可能是因为我在MariaDB上
如果要打开它,可以:
SET GLOBAL `local_infile` = 'ON';
在mariaDB中,my.cnf中没有此类设置,我尝试添加它但没有效果
您可以尝试在
[mysqld]
[...]
local_infile=ON
// or
ocal_infile=1
// or
allow_local_infile=ON
// or
allow_local_infile=1
,然后重新启动数据库。如果它让我知道。
另一种方法,我承认不太优雅,是,如果您在某些Linux机器上,则可以转到启动顺序(在debian上是/etc/ini.d/mysql),对其进行编辑,然后搜索“ start” '),并在遇到; 以下代码之前放在最后一个命令之后:
case...
[...]
'start')
[...]
/usr/bin/mysql -u <user> -p<pass> -e "SET GLOBAL local_infile = ON"
;;
(我不确定,但我认为您可以跳过-u和-p,因为您是root。)
好,
...而最后的手段是ini文件。您将名为myini.sql的文件写入
SET GLOBAL `local_infile` = 'ON';
在其中,将其放置在/ etc / mysql中,然后将其扔给您的mysql用户。最后,您在my.cnf中写:
[mysqld]
[...]
init-file=/etc/mysql/myini.sql
并重新加载数据库。
答案 1 :(得分:0)
我在PHP7.4上有同样的问题。我试过添加: mysqli.allow_local_infile =开 到php.ini,.user.ini和.htaccess,但尽管重新启动了apache和php-fpm,它仍然顽固地处于“关闭”状态。 这是在编译时设置的吗? 我在WHM / cPanel和CentOS 6上使用EasyApache
更新: 尽管我在任何地方都找不到此文档,但在我看来,似乎可以限制用户的cPanel帐户中覆盖的PHP选项数量有限。据我所知,更改全局php.ini中的设置是唯一的选择。
更新2 事实证明,有一种方法可以针对每个帐户启用它:
/var/cpanel/userdata/username/domain.php-fpm.yaml
---
_is_present: 1
pm_max_children: 5
pm_max_requests: 20
pm_process_idle_timeout: 10
php_admin_value_mysqli_allow_local_infile: { name: 'php_admin_value[mysqli.allow_local_infile]', value: 1 }
在php.ini中全局禁用它:
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; http://php.net/mysqli.allow_local_infile
mysqli.allow_local_infile = Off
重新启动PHP-FPM和Apache。 cPanel / WHM文档中对此进行了说明: https://docs.cpanel.net/knowledge-base/php-fpm/configuration-values-of-php-fpm/