Pas*_*TIN 23
我认为你不能从主php.ini文件中"包含".ini文件.
但是,一种可能的解决方案可能是在编译PHP时在配置行上使用此选项:
--with-config-file-scan-dir=PATH
Set the path where to scan for configuration files
Run Code Online (Sandbox Code Playgroud)
如果在编译时使用此选项,PHP将查找此目录中的每个.ini文件,以及"普通"php.ini文件.
我想这是Ubuntu使用的,例如,它为每个下载的扩展使用不同的.ini文件,而不是修改php.ini.
在配置行上使用此选项定义的php.ini文件的路径:
--with-config-file-path=PATH
Set the path in which to look for php.ini [PREFIX/lib]
Run Code Online (Sandbox Code Playgroud)
尽管如此,它可能意味着你将不得不重新编译PHP - 这并不难,顺便说一句 - 最困难的部分是获得你需要的依赖项.
而且,这里有一篇关于internals @ mailling-list的帖子,它和我说的一样:配置文件和PHP_CONFIG_FILE_SCAN_DIR
我为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
Run Code Online (Sandbox Code Playgroud)
一个人也可以在中定义路径 ~/.bashrc
export PHP_INI_SCAN_DIR=/usr/local/lib/php.d
Run Code Online (Sandbox Code Playgroud)
小智 7
其实你可以。我刚刚使用 PHP-FPM在Debian 9 (Stretch)上对其进行了测试。在一些 .ini/.conf 文件中,使用以下语法:
include=/path/to/special-php.ini
Run Code Online (Sandbox Code Playgroud)
甚至
include=/path/to/special-dir-full-of-conf-files/*.conf
Run Code Online (Sandbox Code Playgroud)
因为它用于
/etc/php/7.0/fpm/php-fpm.conf
include=/etc/php/7.0/fpm/pool.d/*.conf
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果您按主题拆分设置,或者如果您想要一个用于开发的集合和另一个用于生产的集合,这将是最有用的。然后你可以像 Debian/Apache 风格那样做
/etc/php/conf-available/
/etc/php/conf-enabled/
Run Code Online (Sandbox Code Playgroud)
符号从第二个到另一个,并包含到那个。
看来您无法将一个 ini 文件包含到另一个文件中,因此它会被引用并加载。但是您可以php通过告诉它要查看哪些文件夹来设置加载多个文件。
当使用FastCGI设置时(也可能在 FPM 中,尽管我不确定),您可以从 PHP 包装器中导出环境变量。
在那里你可以做:
export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc
Run Code Online (Sandbox Code Playgroud)
/var/www/mydomain.net/etc这只是一个例子。这是您放置其他 ini 文件的文件夹。看来这可以是一个:单独的列表。
使用phpinfo.php(仅包含任意名称的文件<?php phpinfo();),在浏览器中打开相应的 URL,然后检查已解析的目录列表以及在其顶部区域加载的文件列表。
/etc/php5/cgi/conf.d应该始终包含在内(我猜是因为它被编译到 PHP 可执行文件中)并且可能实际上并不需要。