我如何知道使用了哪个 'php.ini' 文件?

Posted

技术标签:

【中文标题】我如何知道使用了哪个 \'php.ini\' 文件?【英文标题】:How can I know which 'php.ini' file is used?我如何知道使用了哪个 'php.ini' 文件? 【发布时间】:2013-01-11 13:29:33 【问题描述】:

我在我们的Linux Ubuntu服务器中搜索php.ini文件所在的路径,执行find / -name php.ini命令时发现很多php.ini文件.那么如何从一个PHP脚本网页中准确知道php.ini所在的位置呢?

【问题讨论】:

在命令行上使用文档 (php.net/info) 和 php --help 【参考方案1】:
php --ini

对于网络服务器-SAPI,请使用 phpinfo()

这是一些示例输出:

bash-3.2# php --ini
Configuration File (php.ini) Path: /usr/local/php5/lib
Loaded Configuration File:         /usr/local/php5/lib/php.ini
Scan for additional .ini files in: /usr/local/php5/php.d
Additional .ini files parsed:      /usr/local/php5/php.d/10-extension_dir.ini,
/usr/local/php5/php.d/20-extension-opcache.ini,
/usr/local/php5/php.d/40-openssl.ini,
/usr/local/php5/php.d/50-extension-apcu.ini,
/usr/local/php5/php.d/50-extension-curl.ini,
/usr/local/php5/php.d/50-extension-gmp.ini,
/usr/local/php5/php.d/50-extension-imap.ini,
/usr/local/php5/php.d/50-extension-intl.ini,
/usr/local/php5/php.d/50-extension-mcrypt.ini,
/usr/local/php5/php.d/50-extension-mssql.ini,
/usr/local/php5/php.d/50-extension-pdo_pgsql.ini,
/usr/local/php5/php.d/50-extension-pgsql.ini,
/usr/local/php5/php.d/50-extension-propro.ini,
/usr/local/php5/php.d/50-extension-raphf.ini,
/usr/local/php5/php.d/50-extension-readline.ini,
/usr/local/php5/php.d/50-extension-xdebug.ini,
/usr/local/php5/php.d/50-extension-xsl.ini,
/usr/local/php5/php.d/60-extension-pecl_http.ini,
/usr/local/php5/php.d/99-liip-developer.ini

【讨论】:

如果您有冲突(在多个加载的 .ini 文件中定义了相同的属性)附加的 .ini 文件是否会覆盖加载的配置文件,反之亦然? 嗨@LloydBanks 是的。我不会将其命名为“冲突”,因为这是设计使然,您可以定义默认值并在某些环境中覆盖它们。当我查看我的本地 /etc/php/conf.d 时,我可以找到像 10-sqlite.ini 这样的文件名。 “10”在那里,因为文件是按词法顺序加载的。使用前缀,您可以控制顺序,从而控制哪些(重复)属性优先。【参考方案2】:

您可以使用php_ini_loaded_file()。

取自php.net

$inipath = php_ini_loaded_file();
if ($inipath) 
    echo 'Loaded php.ini: ' . $inipath;
 else 
    echo 'A php.ini file is not loaded';

您可能还想查看php_ini_scanned_files()。

另外,您应该注意,如果您从 CLI 运行 PHP 脚本,则可能会使用与服务器(例如,nginx 或 Apache)运行不同的 php.ini 文件。

其他选项:

php -i|grep 'php.ini' 在 webroot 中创建包含 <?php phpinfo();info.php,并在浏览器中运行它

【讨论】:

【参考方案3】:

请注意,在控制台中使用 PHP 时加载的配置与 Web 进程的配置不同。大多数 PHP 安装都会附带一个用于 Apache 的 php.ini 文件和另一个用于 CLI 的文件。

要知道控制台命令使用哪个配置文件,请使用

php -i | grep "Configuration File"

要知道哪个配置文件用于 Web 进程,请按照以下步骤操作

    创建一个信息文件(最好在根文件夹中) 这个文件的内容应该是<?php phpinfo(); ?> Ctrl + F 并搜索“配置文件”

【讨论】:

【参考方案4】:

你必须使用PHP方法php_ini_loaded_file(仅在PHP 5.2.4之后)

php_ini_loaded_file — 获取加载的 php.ini 文件的路径

PHP网站示例:

<?php
$inipath = php_ini_loaded_file();

if ($inipath) 
    echo 'Loaded php.ini: ' . $inipath;
 else 
    echo 'A php.ini file is not loaded';

?>

来源:PHP site

【讨论】:

@VahidFarahmand 你可以假设,PHP4 不再使用了。【参考方案5】:

创建一个简单的页面,它将在那里列出!

<?php

phpinfo();

?>

【讨论】:

【参考方案6】:

只需像这样添加一个文件:

<?php
    phpinfo();
?>

然后寻找

Loaded Configuration File

您将看到 php.ini 文件的完整路径。

【讨论】:

【参考方案7】:

如前所述,“find / -name php.ini”将有助于获取所有 php.ini 文件。您可能正在编辑的那个可能不是服务器从中提取命令的那个!我在我的服务器上找到了三个不同版本的 PHP 的 php.ini,然后我立即得到了修复。

【讨论】:

Re “我立即得到了修复”:你能详细说明你做了什么吗?您是如何决定使用哪一个的?

以上是关于我如何知道使用了哪个 'php.ini' 文件?的主要内容,如果未能解决你的问题,请参考以下文章

php.ini 在 php-cli 中重新加载

如何访问服务器的 php.ini 文件?

如何在 wordpress 上找到我的 php.ini?

如何强制重新加载 php.ini 文件?

如何找到命令行使用的 php.ini 文件?

如何找到命令行使用的 php.ini 文件?