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

问题描述 投票:31回答:7

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

php configuration
7个回答
22
投票

我认为你不能从主php.ini文件中“包含”.ini文件。

但是,一种可能的解决方案可能是在编译PHP时在配置行上使用此选项:

--with-config-file-scan-dir=PATH                                                        
    Set the path where to scan for configuration files

如果在编译时使用此选项,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]

尽管如此,它可能意味着你将不得不重新编译PHP - 这并不难,顺便说一下 - 最困难的部分是获得你需要的依赖项。

而且,这里有一篇关于internals @ mailing-list的帖子,它跟我说的一样:qazxsw poi


8
投票

我为php安装了memcached,并且不确定如何确保它的ini包含在我的php.ini中,但事实证明它是自动的。您可以通过运行config files and PHP_CONFIG_FILE_SCAN_DIR来验证正在加载的内容。

php --ini

8
投票

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

~/.bashrc

3
投票

似乎你不能将一个ini文件包含到另一个ini文件中,以便它被引用和加载。但是你可以设置php来加载几个文件,告诉它要查看哪些文件夹。

当使用FastCGI设置时(可能在FPM中,虽然我不确定),您可以从php包装器中导出环境变量。

你可以做:

export PHP_INI_SCAN_DIR=/usr/local/lib/php.d

export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc 只是一个例子,它是你将其他ini文件放入的文件夹。看起来这可能是一个/var/www/mydomain.net/etc分隔列表。

使用:(任意名称只包含phpinfo.php的文件),在浏览器中打开相应的URL并检查已解析的目录列表以及在其顶部区域加载的文件列表。

应始终包含<?php phpinfo();(我猜因为它被编译成php可执行文件)并且可能并不真正需要。


2
投票

其实你可以。我刚刚在Debian 9上用PHP-FPM测试了它。从某些.ini / .conf文件中,使用以下语法:

/etc/php5/cgi/conf.d

甚至

include=/path/to/special-php.ini

因为它被用于

include=/path/to/special-dir-full-of-conf-files/*.conf 

顺便说一下,如果您按主题拆分设置,或者如果您想要一个dev设置和另一个设置用于生产,这将是最有用的。然后你可以像Debian / Apache那样做

/etc/php/7.0/fpm/php-fpm.conf
include=/etc/php/7.0/fpm/pool.d/*.conf

从第二个到另一个的symliks和包含到那个的symliks。


1
投票

你不能。阅读在线页面:

/etc/php/conf-available/ /etc/php/conf-enabled/

摘要:PHP启动时读取配置文件(php.ini)。对于PHP的服务器模块版本,这只在Web服务器启动时发生一次。对于CGI和CLI版本,它会在每次调用时发生。

The configuration file

摘要:除了主要的php.ini文件之外,PHP还会扫描每个目录中的INI文件,从所请求的PHP文件的目录开始,然后一直运行到当前文档根目录(在$ _SERVER ['DOCUMENT_ROOT中设置] “])。只有具有PHP_INI_PERDIR和PHP_INI_USER模式的INI设置才能在.user.ini样式的INI文件中识别。


0
投票

您可以尝试使用.user.ini files函数来模拟它。但正如“手册页”所示,并非所有ini选项都可以使用ini_set进行更改。不过,这绝对是一个有用的功能。

© www.soinside.com 2019 - 2024. All rights reserved.