如何在另一个php.ini文件中包含php.ini文件?

Ita*_*vka 32 php configuration

如何在另一个php.ini文件中包含php.ini文件?

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


hoc*_*ave 8

我为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)


Mar*_*ler 8

一个人也可以在中定义路径 ~/.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)

符号从第二个到另一个,并包含到那个。

  • 对我来说,这在 php-fpm.conf 中有效,但在 php.ini 中无效 (2认同)

sja*_*jas 5

看来您无法将一个 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 可执行文件中)并且可能实际上并不需要。