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

问题描述 投票:0回答:15

我需要在我的 EasyPHP 环境中启用 pdo_mysql,因此我转到 php.ini 文件并取消注释以下行:

extension=php_pdo_mysql.dll

不幸的是我仍然遇到同样的问题。 我正在使用 CLI,所以我想我需要找到 CLI 使用的 php.ini 文件。我怎样才能找到它?

php easyphp
15个回答
1113
投票

只需运行

php --ini
并在输出中查找 Loaded Configuration File 即可找到 CLI 使用的
php.ini
的位置。


404
投票

您可以使用以下方式获得完整的

phpinfo()

php -i

并且,在那里,有使用的

php.ini
文件:

$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

在 Windows 上,请使用

find
代替:

php -i | find/i"configuration file"

20
投票

您可以使用 get_cfg_var('cfg_file_path') 来实现:

要检查系统是否正在使用配置文件,请尝试检索 cfg_file_path 配置设置的值。如果可用,则正在使用配置文件。
与 phpinfo() 不同,它会告诉您是否根本没有找到/使用 php.ini。
var_dump( get_cfg_var('cfg_file_path') );

您可以简单地设置 php.ini的位置。您使用的是命令行版本,因此使用

-c
参数您可以指定此特定运行的位置,例如

php -c /home/me/php.ini -f /home/me/test.php

19
投票

在终端中运行

php --ini
,您将获得有关 ini 文件的所有详细信息:

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/apc.ini,
/etc/php.d/bcmath.ini,
/etc/php.d/curl.ini,
/etc/php.d/dba.ini,
/etc/php.d/dom.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/gd.ini,
/etc/php.d/imap.ini,
/etc/php.d/json.ini,
/etc/php.d/mbstring.ini,
/etc/php.d/memcache.ini,
/etc/php.d/mysql.ini,
/etc/php.d/mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/posix.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/ssh2.ini,
/etc/php.d/sysvmsg.ini,
/etc/php.d/sysvsem.ini,
/etc/php.d/sysvshm.ini,
/etc/php.d/wddx.ini,
/etc/php.d/xmlreader.ini,
/etc/php.d/xmlwriter.ini,
/etc/php.d/xsl.ini,
/etc/php.d/zip.ini

有关更多信息,请使用帮助命令

php --help
。它将显示所有可能的选项。


11
投票

有时,就配置文件而言,事情并不总是像看上去的那样。所以在这里我将应用我常用的方法来探索进程打开了哪些文件。

我使用一个非常强大且有用的命令行程序,称为 strace 来向我展示我背后到底发生了什么!

$ strace -o strace.log php --version
$ grep php.ini strace.log

Strace 挖掘出程序进行的内核(系统)调用,并将输出转储到

-o
指定的文件中。

使用 grep 可以轻松地在此日志中搜索文件 php.ini 的出现。很明显,查看以下典型响应即可了解发生了什么情况。

open("/usr/bin/php.ini", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/etc/php.ini", O_RDONLY)          = 3
lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69105, ...}) = 0

8
投票

如果你想加载所有配置文件,这会告诉你:

php -i | grep "\.ini"

有些系统从多个 ini 文件加载内容。在我的 Ubuntu 系统上,它看起来像这样:

php -i | grep "\.ini"

输出

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Scan this dir for additional .ini files => /etc/php5/cli/conf.d
additional .ini files parsed => /etc/php5/cli/conf.d/apc.ini,
/etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/gd.ini,
/etc/php5/cli/conf.d/mcrypt.ini,
/etc/php5/cli/conf.d/memcache.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini

7
投票

如果您需要将其传递给另一个应用程序,您可以执行以下操作:

php --ini | grep Loaded | cut -d" " -f12

仅返回路径。

php -c $(php --ini | grep Loaded | cut -d" " -f12)
会传入配置文件(对
fpm
有用)


7
投票

OS X v10.9 (Mavericks) 上,运行:

$ php -i | grep 'Configuration File'

返回:

Configuration File (php.ini) Path => /etc
Loaded Configuration File:         (none)

/etc/
目录中是:

php.ini.default

(以及

php-fpm.conf.default

我能够将

php.ini.default
复制到
php.ini
,将
date.timezone = "US/Central"
添加到顶部(位于
[php]
正下方),问题就解决了。

(至少错误信息消失了。)


6
投票

现在最简单的方法是使用 PHP 配置:

php-config --ini-dir
输出:

/usr/local/etc/php/7.4/conf.d


您还可以在那里找到更多内容。

--help

子命令(macOS本地安装):

php-config --help
输出:

Usage: /usr/local/bin/php-config [OPTION] Options: --prefixUsage: /usr/local/bin/php-config [OPTION] Options: --prefix [/usr/local/Cellar/php/7.4.11] --includes [-I/usr/local/Cellar/php/7.4.11/include/php - …ETC…] --ldflags [ -L/usr/local/Cellar/krb5/1.18.2/lib -…ETC…] --libs [ -ltidy -largon2 …ETC… ] --extension-dir [/usr/local/Cellar/php/7.4.11/pecl/20190902] --include-dir [/usr/local/Cellar/php/7.4.11/include/php] --man-dir [/usr/local/Cellar/php/7.4.11/share/man] --php-binary [/usr/local/Cellar/php/7.4.11/bin/php] --php-sapis [ apache2handler cli fpm phpdbg cgi] --ini-path [/usr/local/etc/php/7.4] --ini-dir [/usr/local/etc/php/7.4/conf.d] --configure-options [--prefix=/usr/local/Cellar/php/7.4.11 --…ETC…] --version [7.4.11] --vernum [70411]
    

4
投票
如果对大家有帮助,请尝试一下:

find / -type f -name "php.ini"
这将输出所有名为 

php.ini

 的文件。

找出您通常使用的是哪一种

apache2/php.ini


    


3
投票
据我记得,当我使用 EasyPHP 时,php.ini 文件位于

C:\Windows\

C:\Windows\System32

    


3
投票
在 Linux 上,它通常位于

/usr/bin/php


要查找在寡妇电脑上的 CLI 中加载的 php.ini,请运行:

php.exe -i | grep "php.ini"

诗。您可以使用以下方法本地化 PHP 安装文件夹:

which php

whereis php

/c/larragon/bin/php/php-7.4.19-Win32-vc15-x64/php


3
投票
由于 PHP 对 HTTP(S) 和 CLI(控制台命令行)模式使用不同的

php.ini

 路径,最简单的方法是通过将 
php.ini
 输出保存到本地文件来找出真正加载的 
phpinfo()
 文件:

php -i >> phpinfo-cli.txt
打开保存的文件并找到行

Loaded Configuration File

。它将包含实际加载的 
php.ini
 文件的路径,例如:

Loaded Configuration File => D:\wamp\bin\php\php7.4.1\php.ini
以上假设 PHP 已正确安装,例如在 Windows 上包含在 

PATH

 env 中。变量。


1
投票
在 Docker 容器中,

phpmyadmin/phpmyadmin。没有任何 php.ini 文件。但有两个文件: php.ini-debugphp.ini-product

要解决此问题,只需将其中一个文件重命名为

php.ini 并重新启动 Docker 容器即可。


-6
投票
命令行没有使用

php.ini。您必须将文件从 ...EasyPHP-<<version>>\apache\php.ini

 复制到 
...EasyPHP-<<version>>\php\php.ini
,然后编辑 
php 目录中的文件。

参考:

  • 为什么 CakePHP Baker 无法连接到 Windows Vista Ultimate 上 EasyPHP 下运行的 MySQL?
© www.soinside.com 2019 - 2024. All rights reserved.