我需要在我的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文件。我怎样才能找到它?
只需运行php --ini
并在输出中查找Loaded Configuration Filephp.ini
以获取CLI 使用的位置。
你可以得到一个完整的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"
您可以使用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
在您的终端中运行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
。它将显示所有可能的选项。
有时,在一般的配置文件中,事情并不总是像他们看起来的那样。所以在这里我应用我常用的方法来探索进程打开了哪些文件。
我使用一个名为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 -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
在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]
),问题就解决了。
(至少错误消息消失了。)
如果您需要将其传递给另一个应用程序,您可以执行以下操作:
php --ini | grep Loaded | cut -d" " -f12
仅返回路径。php -c $(php --ini | grep Loaded | cut -d" " -f12)
将传入配置文件(对 有用fpm
)
如果它可以帮助大家,试试这个:
find / -type f -name "php.ini"
这将输出所有名为php.ini
.
找出你使用的是哪一个,通常apache2/php.ini
从我以前使用 EasyPHP 时的记忆来看,php.ini 文件位于C:\Windows\
或C:\Windows\System32
将 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 模式加载另一个文件。
现在最简单的方法是使用 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]
在 Docker 容器中,“ phpmyadmin/phpmyadmin ”。没有任何php.ini文件。但是有两个文件:php.ini-debug和php.ini-production。
要解决此问题,只需将其中一个文件重命名为php.ini并重新启动 Docker 容器。
命令行没有使用php.ini。...EasyPHP-<<version>>\apache\php.ini
您必须从to复制文件...EasyPHP-<<version>>\php\php.ini
,然后在php目录中编辑该文件。
参考: