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

时间:2009-09-08 03:27:53

标签: php configuration

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

7 个答案:

答案 0 :(得分: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 @ mailling-list的帖子,它和我说的一样:config files and PHP_CONFIG_FILE_SCAN_DIR

答案 1 :(得分: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

答案 2 :(得分:8)

还可以在~/.bashrc

中定义路径
export PHP_INI_SCAN_DIR=/usr/local/lib/php.d

答案 3 :(得分:3)

似乎你不能将一个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可执行文件),可能并不真正需要。

答案 4 :(得分:1)

你做不到。阅读在线页面:

The configuration file

  

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

.user.ini files

  

总结:除了主要   php.ini文件,PHP扫描INI文件   在每个目录中,以。开头   请求的PHP文件的目录,   并努力达到目前的水平   文档根(如   $ _ SERVER [ 'DOCUMENT_ROOT'])。只有INI   模式为PHP_INI_PERDIR的设置   和PHP_INI_USER将被识别   .user.ini样式的INI文件。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

实际上您可以。我刚刚在使用PHP-FPM的Debian 9上进行了测试。在某些.ini / .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/

带有第二个到另一个的符号,并包含一个到该符号的符号。