如何找到命令行使用的php.ini文件?

时间:2010-05-01 15:53:00

标签: php easyphp

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

extension=php_pdo_mysql.dll

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

16 个答案:

答案 0 :(得分:852)

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

的位置

答案 1 :(得分:351)

您可以使用

获得完整的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"

答案 2 :(得分:32)

php --ini

将为您提供有关使用路径和可能的ini文件的所有详细信息

答案 3 :(得分:14)

您可以使用get_cfg_var('cfg_file_path')

要检查系统是否正在使用配置文件,请尝试检索cfg_file_path配置设置的值。如果这是可用的,则使用配置文件。
与phpinfo()不同,它将告诉它是否完全没有找到/使用php.ini。

var_dump( get_cfg_var('cfg_file_path') );

你可以简单地set the location of the php.ini。您正在使用命令行版本,因此使用-c参数可以指定位置,例如

php -c /home/me/php.ini -f /home/me/test.php

答案 4 :(得分:13)

在终端中运行php --ini,您将获得有关ini文件的所有详细信息

[root@tamilan src]# php --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它将显示所有可能的选项。

答案 5 :(得分:7)

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

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

答案 6 :(得分:6)

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

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

答案 7 :(得分:6)

在OSX 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]下方),问题就解决了。

(至少错误信息已消失。)

答案 8 :(得分:4)

如果您需要将其传递给其他应用,您可以执行以下操作:

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

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

答案 9 :(得分:3)

根据我以前使用EasyPHP的记忆,php.ini文件位于C:\Windows\C:\Windows\System32

答案 10 :(得分:1)

在php.ini文件中设置您的扩展目录,例如:

extension_dir = "C:/php/ext/"

你会在PHP文件夹中看到一个包含所有dll和扩展名的ext文件夹。

答案 11 :(得分:1)

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

这将输出所有名为php.ini的文件。

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

答案 12 :(得分:0)

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

php -i >> phpinfo-cli.txt

答案 13 :(得分:0)

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

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

答案 14 :(得分:0)

当今的最简单方法是使用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]

答案 15 :(得分:-4)

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

参考: