如何找到命令行使用的php.ini文件?
我需要在我的 EasyPHP 环境中启用 pdo_mysql,所以我去了php.ini 文件并取消注释以下行:
extension=php_pdo_mysql.dll
不幸的是我仍然遇到同样的问题。 我正在使用 CLI,所以我想我需要找到 CLI 使用的 php.ini 文件。我怎样才能找到它?
I need to enable pdo_mysql in my EasyPHP environment, so I went to the php.ini file and uncommented the following line:
extension=php_pdo_mysql.dll
Unfortunately I still have the same problem.
I'm using the CLI so I suppose I need to locate the php.ini file used by the CLI. How can I find it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(16)
只需运行
php --ini
并在输出中查找 加载的配置文件,以获取 CLI 使用的php.ini
的位置。Just run
php --ini
and look for Loaded Configuration File in the output for the location ofphp.ini
used by your CLI.您可以使用以下方法获取完整的
phpinfo()
:并且,其中使用了
php.ini
文件:在 Windows 上,使用
查找
改为:You can get a full
phpinfo()
using:And, in there, there is the
php.ini
file used:On Windows, use
find
instead:您可以使用 get_cfg_var('cfg_file_path') 来实现:
Unlike phpinfo() it will tell if it didn't find/use a php.ini at all.
您只需设置 php.ini 的位置即可。您使用的是命令行版本,因此使用
-c
参数您可以指定此特定运行的位置,例如You can use get_cfg_var('cfg_file_path') for that:
Unlike phpinfo() it will tell if it didn't find/use a php.ini at all.
And you can simply set the location of the php.ini. You're using the command line version, so using the
-c
parameter you can specify the location for this particular run, e.g.在终端中运行
php --ini
,您将获得有关 ini 文件的所有详细信息:有关更多信息,请使用帮助命令
php --help
。它将显示所有可能的选项。Run
php --ini
in your terminal, and you'll get all details about ini files:For more, use helping command
php --help
. It'll display all the possible options.有时,一般来说,配置文件的情况并不总是像看上去的那样。因此,在这里我将应用常用方法来探索进程打开哪些文件。
我使用一个非常强大且有用的命令行程序 strace 来向我展示到底发生了什么在我背后!
Strace 挖掘出程序发出的内核(系统)调用,并将输出转储到
-o
指定的文件中。使用 grep 搜索文件 php.ini 在此日志中。看看下面的典型响应就可以很明显地看出发生了什么。
Sometimes things aren't always as they seem when in comes to configuration files in general. So here I'm applying my usual methods for exploring what files are opened by a process.
I use a very powerful and useful command-line program called strace to show me what's really going on behind my back!
Strace digs out kernel (system) calls that your program makes and dumps the output into the file specified by
-o
.It's easy to use grep to search for occurrences of file php.ini in this log. It's pretty obvious looking at the following typical response to see what is going on.
如果您想要加载所有配置文件,这将告诉您:
有些系统从多个 ini 文件加载内容。在我的 Ubuntu 系统上,它看起来像这样:
输出
If you want all the configuration files loaded, this is will tell you:
Some systems load things from more than one ini file. On my Ubuntu system, it looks like this:
Output
如果您需要将其传递给另一个应用程序,您可以执行以下操作:
仅返回路径。
php -c $(php --ini | grep Loaded | cut -d" " -f12)
将传入配置文件(对于fpm
有用)If you need to pass it to another app, you can do something like:
returns the path only.
php -c $(php --ini | grep Loaded | cut -d" " -f12)
will pass in the config file (useful forfpm
)在 OS X v10.9 (Mavericks) 上,运行:
返回:
在
中/etc/
目录是:(以及
php-fpm.conf.default
)我能够将
php.ini.default
复制到php.ini
,在顶部([php]
正下方)添加date.timezone = "US/Central"
,问题就解决了。(至少错误消息消失了。)
On OS X v10.9 (Mavericks), running:
Returned:
In the
/etc/
directory was:(as well as
php-fpm.conf.default
)I was able to copy
php.ini.default
tophp.ini
, adddate.timezone = "US/Central"
to the top (right below[php]
), and the problem is solved.(At least the error message is gone.)
现在最简单的方法是使用 PHP 配置:
输出:
您可以在那里找到更多内容。
--help
子命令(macOS 本地安装):输出:
The easiest way nowadays is to use PHP configure:
Output:
There's more you can find there. The
--help
sub command (macOS local install):Output:
如果它可以帮助大家,请尝试一下:
这将输出名为
php.ini
的所有文件。找出您使用的是哪一个,通常是
apache2/php.ini
Try this if it could help you all:
This will output all files named
php.ini
.Find out which one you're using, usually
apache2/php.ini
我记得当我使用 EasyPHP 时,php.ini 文件位于
C:\Windows\
或C:\Windows\System32
From what I remember when I used to use EasyPHP, the php.ini file is either in
C:\Windows\
orC:\Windows\System32
在 Linux 上,它通常位于
/usr/bin/php
下要查找在寡妇电脑上的 CLI 中加载的 php.ini,请运行:
您可以使用以下命令本地化 PHP 安装文件夹:
或
On Linux it is usually under
/usr/bin/php
To find php.ini loaded in CLI on widows, run:
Ps. You can localize PHP installation folder with:
or
由于 PHP 对 HTTP(S) 和 CLI(控制台命令行)模式使用不同的
php.ini
路径,最简单的方法是找出真正加载的php.ini
文件将phpinfo()
输出保存到本地文件中:打开保存的文件并保存找到行
加载的配置文件
。它将包含实际加载的php.ini
文件的路径,例如:上面假设 PHP 已正确安装,例如在 Windows 上包含在
PATH
env 中。多变的。Since PHP uses different
php.ini
paths for HTTP(S) and CLI (console command line) mode, easiest way is to find out really loadedphp.ini
file is by savingphpinfo()
output into local file:Open saved file & find row
Loaded Configuration File
. It will contain path to actually loadedphp.ini
file e.g.:The above assumes that PHP is properly installed, e.g. on Windows included in
PATH
env. variable.在 Docker 容器中,“phpmyadmin/phpmyadmin” 。没有任何 php.ini 文件。但有两个文件:php.ini-debug 和 php.ini-product。
要解决此问题,只需将其中一个文件重命名为 php.ini 并重新启动 Docker 容器即可。
In a Docker container, "phpmyadmin/phpmyadmin". there isn't any php.ini file. But there are two files: php.ini-debug and php.ini-production.
To solve the problem, simply rename one of the files to php.ini and restart the Docker container.
php -r 'var_dump(get_cfg_var("cfg_file_path"));'
使用 PHP!
php -r 'var_dump(get_cfg_var("cfg_file_path"));'
Use PHP!
命令行没有使用 php.ini。您必须将文件从
...EasyPHP-<>\apache\php.ini
复制到...EasyPHP-<> \php\php.ini
然后编辑 php 目录中的那个。参考:
There is no php.ini used by the command line. You have to copy the file from
...EasyPHP-<<version>>\apache\php.ini
to...EasyPHP-<<version>>\php\php.ini
and then edit the one in the php directory.Reference: