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

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

extension=php_pdo_mysql.dll
不幸的是,我仍然有同样的问题。 我正在使用CLI,所以我想我需要找到CLI使用的php . ini文件。我怎么才能找到它?< / p >
503815 次浏览

你可以使用以下方法获得完整的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"

从我记得当我使用EasyPHP时,php.ini文件在C:\Windows\C:\Windows\System32

你可以使用get_cfg_var(“cfg_file_path”):

__abc0与phpinfo()不同,它会告诉它是否根本没有找到/使用php.ini。
var_dump( get_cfg_var('cfg_file_path') );

你可以简单地set php.ini的位置。您正在使用命令行版本,因此使用-c参数可以指定此特定运行的位置,例如。

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

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

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

只需运行php --ini,并在输出中查找CLI使用的php.ini的位置。

通常情况下,当涉及到配置文件时,事情并不总是像它们看起来的那样。因此,在这里我将应用我通常的方法来探索进程打开了哪些文件。

我使用一个非常强大和有用的命令行程序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

命令行没有使用php . ini。你必须将文件从...EasyPHP-<<version>>\apache\php.ini复制到...EasyPHP-<<version>>\php\php.ini,然后编辑php目录中的文件。

参考:

在你的终端运行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。它会显示所有可能的选项。

如果你需要将它传递给另一个应用程序,你可以这样做:

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

只返回路径。php -c $(php --ini | grep Loaded | cut -d" " -f12)将传入配置文件(对fpm有用)

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]的正下方),问题就解决了。

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

试试这个,如果它对你们都有帮助的话:

find / -type f -name "php.ini"

这将输出所有名为php.ini的文件。

找出你使用的是哪一个,通常是apache2/php.ini

保存CLI phpinfo输出到本地文件:

php -i >> phpinfo-cli.txt

然后打开文件并找到行Loaded Configuration File。它将包含实际加载的php.ini文件的路径,例如。

Loaded Configuration File => D:\wamp\bin\php\php7.4.1\php.ini

注意,PHP可能会为CLI模式加载不同的php.ini文件,而为HTTP模式加载另一个。

在Docker容器中,phpmyadmin/phpmyadmin"。没有任何php . ini文件。但是有两个文件:php.ini-debugphp.ini-production

要解决这个问题,只需将其中一个文件重命名为php . ini并重新启动Docker容器。

现在最简单的方法是使用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]

在Linux上,它通常在/usr/bin/php

要在CLI中找到php.ini,请运行:

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

enter image description here

Ps.你可以用以下方法本地化PHP安装文件夹:

which php

enter image description here

whereis php

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