449

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

extension=php_pdo_mysql.dll

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

4

14 回答 14

1069

只需运行php --ini并在输出中查找Loaded Configuration Filephp.ini以获取CLI 使用的位置。

于 2010-09-19T07:11:40.790 回答
389

你可以得到一个完整的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"
于 2010-05-01T15:54:27.473 回答
19

您可以使用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
于 2010-05-01T16:06:35.277 回答
17

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

于 2013-01-03T07:29:39.307 回答
10

有时,在一般的配置文件中,事情并不总是像他们看起来的那样。所以在这里我应用我常用的方法来探索进程打开了哪些文件。

我使用一个名为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
于 2011-06-27T11:37:53.177 回答
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
于 2010-05-01T16:27:09.477 回答
8

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.defaultphp.ini,添加date.timezone = "US/Central"到顶部(右下方[php]),问题就解决了。

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

于 2015-05-28T22:25:13.637 回答
6

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

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

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

于 2013-12-31T02:52:27.333 回答
4

如果它可以帮助大家,试试这个:

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

这将输出所有名为php.ini.

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

于 2018-07-27T08:20:42.133 回答
3

从我以前使用 EasyPHP 时的记忆来看,php.ini 文件位于C:\Windows\C:\Windows\System32

于 2010-05-01T15:57:02.293 回答
3

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

php -i >> phpinfo-cli.txt

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

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

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

于 2019-09-02T10:34:58.577 回答
3

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

php-config --ini-dir

输出:

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

您可以在那里找到更多内容。子命令(--helpmacOS 本地安装):

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]
于 2020-11-24T09:04:37.077 回答
0

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

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

于 2019-10-09T12:26:23.130 回答
-5

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

参考:

于 2012-01-27T13:48:06.710 回答