2009-09-08 153 views
23

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

+2

我很感兴趣RHEL/Fedora如何完成/etc/php.d/* include。他们是否对PHP进行了修补以实现这一点? – gahooa 2009-09-08 04:17:46

+0

@gahooa这就是我带领我到这里的问题。你有没有学过他们如何完成/etc/php.d/* include? – 2016-09-07 01:50:56

+1

请参阅下面的接受答案,这也回答你的问题。你也可以做php -i(phpinfo())并查看php是如何构建的 – 2016-09-07 01:58:59

回答

17

我不认为你可以从主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文件的路径中使用此选项定义的,在configure行:

--with-config-file-path=PATH                
    Set the path in which to look for php.ini [PREFIX/lib] 

不过,这可能意味着你必须重新编译PHP - 这是不是硬,顺便说一句 - 最难的部分是获得你需要的依赖。

而且,这里是在内部@ mailling名单后,说我做同样的事情:config files and PHP_CONFIG_FILE_SCAN_DIR

+0

除编译时间设置外,还有一个环境变量'PHPRC',它可以更改默认的'php.ini'(以及其他可能的ini文件)目录。 – 2011-07-29 17:19:32

+0

当你在配置线上说,这是什么意思?那是一个文件吗? – tomjung 2015-03-12 21:37:54

1

你不能。在线阅读网页:

The configuration file

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

.user.ini files

摘要:除了主 php.ini文件,在每个目录下INI文件 PHP扫描,开始与 目录所请求的PHP文件, 和工作它的方式达到当前的 文档根目录(在 $ _SERVER ['DOCUMENT_ROOT']中设置)。只有INI 与PHP_INI_PERDIR 和PHP_INI_USER模式的设置将在 .user.ini样式的INI文件中识别。

+3

我在发布之前阅读了这些内容,并没有说明是否可能。 – 2009-09-08 03:53:27

0

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

7

我为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 
+0

听起来像“php --ini”返回的配置文件路径可能与网页返回的不一样(<?php phpinfo();?>)。 – gonglong 2017-04-17 03:52:47

4

一个还可以在~/.bashrc

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

定义路径似乎不能包含一个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(任意只包含<? phpinfo();的文件),请在浏览器中打开相应的URL并检查解析的目录列表以及在其顶部加载的文件列表。

/etc/php5/cgi/conf.d应该总是包括在内(我猜是因为它被编译到php可执行文件中)并且可能不是真的需要。