php .user.ini 未在 PHP FPM 安装中加载

Oli*_*ier 5 php

我\xe2\x80\x99m 使用 Ninja 防火墙管理一个自托管 WordPress 网站。

\n

为了允许 Ninja 提供完整的 WAP 保护,我必须在根目录下的文件auto_prepend_file中添加一些配置。.user.ini

\n

实际上,Ninja 已经为你做了这件事,我检查了文件 ( /var/www/mysite/.user.ini),看起来没问题。

\n

我还检查了我的php.ini文件。

\n

我正在使用 PHP FPM 7.3,其中包含以下几行。我究竟做错了什么?

\n
;;;;;;;;;;;;;;;;;;;;\n; php.ini Options  ;\n;;;;;;;;;;;;;;;;;;;;\n; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"\nuser_ini.filename = ".user.ini"\n\n; To disable this feature set this option to an empty value\n;user_ini.filename =\n\n; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 $\n;user_ini.cache_ttl = 300\n
Run Code Online (Sandbox Code Playgroud)\n

但是当我查看加载的配置时,user.ini 文件未加载:

\n
Server API  FPM/FastCGI\nVirtual Directory Support   disabled\nConfiguration File (php.ini) Path   /etc/php/7.3/fpm\nLoaded Configuration File   /etc/php/7.3/fpm/php.ini\nScan this dir for additional .ini files     /etc/php/7.3/fpm/conf.d\nAdditional .ini files parsed    /etc/php/7.3/fpm/conf.d/10-mysqlnd.ini, /etc/php/7.3/fpm/conf.d/10-opcache.ini, /etc/php/7.3/fpm/conf.d/10-pdo.ini, /etc/php/7.3/fpm/conf.d/15-xml.ini, /etc/php/7.3/fpm/conf.d/20-bcmath.ini, /etc/php/7.3/fpm/conf.d/20-bz2.ini, /etc/php/7.3/fpm/conf.d/20-calendar.ini, /etc/php/7.3/fpm/conf.d/20-ctype.ini, /etc/php/7.3/fpm/conf.d/20-curl.ini, /etc/php/7.3/fpm/conf.d/20-dom.ini, /etc/php/7.3/fpm/conf.d/20-exif.ini, /etc/php/7.3/fpm/conf.d/20-fileinfo.ini, /etc/php/7.3/fpm/conf.d/20-ftp.ini, /etc/php/7.3/fpm/conf.d/20-gd.ini, /etc/php/7.3/fpm/conf.d/20-gettext.ini, /etc/php/7.3/fpm/conf.d/20-iconv.ini, /etc/php/7.3/fpm/conf.d/20-igbinary.ini, /etc/php/7.3/fpm/conf.d/20-imagick.ini, /etc/php/7.3/fpm/conf.d/20-intl.ini, /etc/php/7.3/fpm/conf.d/20-json.ini, /etc/php/7.3/fpm/conf.d/20-mbstring.ini, /etc/php/7.3/fpm/conf.d/20-mysqli.ini, /etc/php/7.3/fpm/conf.d/20-pdo_mysql.ini, /etc/php/7.3/fpm/conf.d/20-pdo_sqlite.ini, /etc/php/7.3/fpm/conf.d/20-phar.ini, /etc/php/7.3/fpm/conf.d/20-posix.ini, /etc/php/7.3/fpm/conf.d/20-readline.ini, /etc/php/7.3/fpm/conf.d/20-redis.ini, /etc/php/7.3/fpm/conf.d/20-shmop.ini, /etc/php/7.3/fpm/conf.d/20-simplexml.ini, /etc/php/7.3/fpm/conf.d/20-smbclient.ini, /etc/php/7.3/fpm/conf.d/20-sockets.ini, /etc/php/7.3/fpm/conf.d/20-sqlite3.ini, /etc/php/7.3/fpm/conf.d/20-sysvmsg.ini, /etc/php/7.3/fpm/conf.d/20-sysvsem.ini, /etc/php/7.3/fpm/conf.d/20-sysvshm.ini, /etc/php/7.3/fpm/conf.d/20-tidy.ini, /etc/php/7.3/fpm/conf.d/20-tokenizer.ini, /etc/php/7.3/fpm/conf.d/20-wddx.ini, /etc/php/7.3/fpm/conf.d/20-xmlreader.ini, /etc/php/7.3/fpm/conf.d/20-xmlwriter.ini, /etc/php/7.3/fpm/conf.d/20-xsl.ini, /etc/php/7.3/fpm/conf.d/20-zip.ini, /etc/php/7.3/fpm/conf.d/90-ncp.ini \n
Run Code Online (Sandbox Code Playgroud)\n

Oli*_*ier 3

解决了!

目录中有一个 ini 文件/etc/php/7.3/fpm/conf.d正在将 重置user_ini.filename为空值。

如果您遇到同样的问题,在 Linux 上检测此问题的简单方法是运行以下 grep 命令:

grep -R user_ini.filename /etc/php/7.3
Run Code Online (Sandbox Code Playgroud)

并检查是否有一行如下所示:

/etc/php/7.3/fpm/conf.d/90-ncp.ini:user_ini.filename =
Run Code Online (Sandbox Code Playgroud)

然后编辑该文件并用分号注释该行。

  • 迟到的评论,但如果你问我问题不是注释掉`90-ncp.ini`中的那一行,而是在`90-ncp.ini`中设置`user_ini.filename = ".user.ini"`而不是主要`php.ini`。这就是 `/etc/php/7.3/fpm/conf.d/` 目录存在的全部原因:它包含应用于自定义的单独配置。 (2认同)