我该如何在一个php.ini文件中包含另一个php.ini文件?
我该如何在一个php.ini文件中包含另一个php.ini文件?
我不认为你可以从主php.ini文件中“包含” .ini 文件。
然而,一种可能的解决方案是,在编译PHP时在配置行上使用此选项:
--with-config-file-scan-dir=PATH
Set the path where to scan for configuration files
--with-config-file-path=PATH
Set the path in which to look for php.ini [PREFIX/lib]
不过,这可能意味着您需要重新编译 PHP——其实并不难——最难的部分是获取所需的依赖项。
这里有一篇关于 internals@ 邮件列表的帖子,与我说的一样:配置文件和 PHP_CONFIG_FILE_SCAN_DIR
PHPRC
,可以更改默认的 php.ini
(以及可能的其他 ini 文件)目录。 - Emre Yazici*.ini
文件都被视为 php.ini
的一部分。像 Ubuntu 这样的基于 Debian 的发行版也很可能这样做。示例目录:/etc/php/7.4/apache2/conf.d/
参考文献:/usr/share/doc/php7.4-common/README.Debian.gz
- Ben Scott你也可以在~/.bashrc
中定义路径。
export PHP_INI_SCAN_DIR=/usr/local/lib/php.d
我安装了php的Memcached,但不确定如何确保它的ini文件包含在我的php.ini文件中,实际上,它是自动包含的。您可以通过运行php --ini
来验证正在加载什么。
php --ini
Configuration File (php.ini) Path: /opt/local/etc/php5
Loaded Configuration File: (none)
Scan for additional .ini files in: /opt/local/var/db/php5
Additional .ini files parsed: /opt/local/var/db/php5/memcached.ini
编辑: 我的回答是错误的。这个方法只适用于.conf
文件,这并不是问题所在。更好的测试表明,在php.ini
文件中它不起作用,其中include
语句被忽略。
我刚在Debian 9(Stretch)上使用PHP-FPM进行了测试。从某个.conf文件中,使用以下语法:
include=/path/to/special-php.ini
或者甚至
include=/path/to/special-dir-full-of-conf-files/*.conf
作为它在编程中的使用方式
/etc/php/7.0/fpm/php-fpm.conf
include=/etc/php/7.0/fpm/pool.d/*.conf
顺便提一下,如果你按主题或者想要一个用于开发和另一个用于生产的集合,那么这将非常有用。然后你可以像Debian/Apache风格一样进行操作。
/etc/php/conf-available/
/etc/php/conf-enabled/
php.ini
,这也是问题所在。 - Ben Scott看起来您不能将一个ini文件包含到另一个文件中,以便被引用和加载。但是您可以设置php
来通过告诉它要查找哪些文件夹来加载多个文件。
当使用FastCGI设置(可能也适用于FPM,尽管我不确定)时,您可以从PHP包装器内部导出环境变量。
在那里,您可以执行以下操作:
export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc
/var/www/mydomain.net/etc
只是一个示例。这是你放置附加ini文件的文件夹。似乎这可以是一个:
分隔的列表。
使用一个phpinfo.php
(任意命名的文件,只包含<?php phpinfo();
),在浏览器中打开相应的URL,并检查在其顶部区域中解析的目录列表和加载的文件列表。
/etc/php5/cgi/conf.d
应始终包括(我猜这是因为它被编译到PHP可执行文件中),可能并不是真正需要的。
不行。请阅读以下在线页面:
摘要:PHP 启动时会读取配置文件(php.ini)。对于 PHP 的服务器模块版本,这仅在 Web 服务器启动时发生一次。对于 CGI 和 CLI 版本,它会在每次调用时发生。
摘要:除了主 php.ini 文件外,PHP 还会扫描每个目录中的 INI 文件,从请求的 PHP 文件所在的目录开始,并向上工作到当前文档根目录(如 $_SERVER['DOCUMENT_ROOT'] 中设置)。只有使用 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置才能在 .user.ini 样式的 INI 文件中被识别。