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

extension=php_pdo_mysql.dll

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


当前回答

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

php -i >> phpinfo-cli.txt

然后打开文件,找到“已加载配置文件”行。它将包含实际加载的php.ini文件的路径。

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

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

其他回答

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

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

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

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

只需运行php——ini,并在输出中查找加载的配置文件,以查找CLI使用的php.ini的位置。

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

参考:

为什么CakePHP不能烘焙连接到在Windows Vista终极版的EasyPHP下运行的MySQL ?

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

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