我需要在我的EasyPHP环境中启用pdo_mysql,所以我去了php.ini文件并取消注释以下行:
extension=php_pdo_mysql.dll
不幸的是,我仍然有同样的问题。 我正在使用CLI,所以我想我需要找到CLI使用的php.ini文件。我怎么才能找到它?
我需要在我的EasyPHP环境中启用pdo_mysql,所以我去了php.ini文件并取消注释以下行:
extension=php_pdo_mysql.dll
不幸的是,我仍然有同样的问题。 我正在使用CLI,所以我想我需要找到CLI使用的php.ini文件。我怎么才能找到它?
当前回答
你可以使用以下方法获得完整的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"
其他回答
在你的终端运行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 -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
通常情况下,当涉及到配置文件时,事情并不总是像它们看起来的那样。因此,在这里我将应用我通常的方法来探索进程打开了哪些文件。
我使用了一个非常强大和有用的命令行程序,名为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
在Linux上,它通常在/usr/bin/php下
要在CLI中找到php.ini,请运行:
php.exe -i | grep "php.ini"
Ps.你可以用以下方法本地化PHP安装文件夹:
which php
or
whereis php
/c/laragon/bin/php/php-7.4.19-Win32-vc15-x64/php
在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,添加日期。timezone = "US/Central"移到最上面(在[php]的正下方),问题就解决了。
(至少错误消息消失了。)