几年前,我在我维护的 Linux 服务器上安装了 Apache 2.2x 和 PHP 5.3.1。我使用 .tar.gz 并按照指示构建它们(而不是 rpm 和你有什么)。一切都很好。
今天我需要安装看起来像 PHP 库的 this。我完成了安装的所有步骤,并在 $PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so
中找到了 ibm_db2.so。
最大的收获是最后一步是配置文件php.ini,但是没有any php.ini em> 我系统上的文件。恐怖的恐怖。 PHP 工作正常,当然除了我想使用的这个新奇的 ibm_db2 thingamajig,因此有人可以使用 GUI 来修补 DB2。 (我尝试了一个小的 PHP 脚本,该脚本失败并表明 ibm_db2 函数不可用。)
我必须每隔几年处理一次 PHP,所以请从一个非常基本的层面告诉我我可以做些什么来启用对 DB2 的基于 Web 的 GUI 访问。
locate php.ini
会立即告诉您文件在系统上的位置。
在命令行执行:
php --ini
你会得到类似的东西:
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_sqlite.ini,
/etc/php5/cli/conf.d/sqlite.ini,
/etc/php5/cli/conf.d/sqlite3.ini,
/etc/php5/cli/conf.d/xdebug.ini,
/etc/php5/cli/conf.d/xsl.ini
那来自我的本地开发机器。然而,第二行是有趣的。如果没有提及,请看第一个。这就是 PHP 查找 php.ini
文件的路径。
您可以在脚本中使用 phpinfo() grep 相同的信息并使用浏览器调用它。它在输出的第一个块中提到。 php -i
对命令行做同样的事情,但它很不舒服。
找到这个的最好方法是:
创建一个 PHP (.php) 文件并添加以下代码:
<?php phpinfo(); ?>
并在浏览器中打开它。它将显示实际正在读取的文件!
OP的更新:
先前接受的答案可能对您来说更快、更方便,但并不总是正确的。请参阅有关该答案的评论。另请注意更方便的替代方法 在这个答案中提到。
<?php phpinfo(); ?>
php -r \@phpinfo\(\)\;
为我工作php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1
提取特定信息
<?php echo php_ini_loaded_file(); ?>
这对我有用:
php -i | grep 'php.ini'
您应该会看到如下内容:
Loaded Configuration File => /usr/local/lib/php.ini
附言
要仅获取 php.ini 路径,请使用:
php -i | grep /.+/php.ini -oE
php.ini
,这正是问题所在:如果没有,您仍然不知道在哪里查看,或者在哪里放置一个新的。
Configuration File (php.ini) Path => /usr/lib
,但运行 <?php phpinfo(); ?>
给我 Loaded Configuration File: /etc/php.ini
。因此,在我的情况下,phpinfo()
更可靠。
php -i | grep 'php.ini'
吗? (脚本.php)
在命令窗口中,键入
php --ini
它将向您显示路径,例如:
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini
如果上述命令不起作用,请使用以下命令:
echo phpinfo();
使用以下命令在 Linux 上查找 php.ini
文件路径。
locate php.ini
输出:
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.4.45/php.ini-development
/usr/share/doc/php-common-5.4.45/php.ini-production
或尝试其他方式:
php --ini
它显示了路径结果。
php -i | grep 'php.ini'
之类的方法,因为它会找到 any php.ini 并且不会告诉您您的 PHP 安装使用的是哪一个。此外,当 locate
数据库不是最新的时,它可能会给出错误的结果。
locate
默认情况下未安装在 Ubuntu MATE 20.04(Focal Fossa)上。
该命令应该可以帮助您找到它
php -r "phpinfo();" | grep php.ini
PHP 带有两个原生函数来显示加载了哪个配置文件:
php_ini_loaded_file 返回加载的 .ini 文件
php_ini_scanned_files 返回从附加 ini 目录解析的 .ini 文件列表
根据您的设置,Apache 和 CLI 可能使用不同的 .ini 文件。以下是两种解决方案:
阿帕奇:
只需在 PHP (.php) 文件中添加以下内容并在浏览器中打开它:
print php_ini_loaded_file();
print_r(php_ini_scanned_files());
命令行:
复制粘贴到您的终端:
php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
php_ini_loaded_file
可能并不总是可用。
php_ini_loaded_file
的文档说 php version >= 5.2.4
phpinfo();
会告诉你它的位置,或者从命令行
php -i
在命令行中运行它:
php -r "echo php_ini_loaded_file().PHP_EOL;"
尝试其中一种解决方案
在您的终端中,输入 find / -name "php.ini" 在您的终端中,输入 php -i | grep php.ini。它应该将文件路径显示为“配置文件(php.ini)路径=> /etc”如果您可以访问您的PHP文件之一,请在编辑器(记事本)中打开它并插入phpinfo();在
find / -name php.ini
嘿......它对我有用!
php --ini
有效,但这只是另一种选择 :) 通常有一个 /etc/php5/cli/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
并且通常你想要哪个是很明显的。 (cli、apache、cgi)
您可以使用以下方式获取有关配置文件的更多信息:
$ -> php -i | ack config # Use fgrep -i if you don't have ack
Configure Command => './configure' ...
Loaded Configuration File => /path/to/php.ini
对于 SAPI:php-fpm
没有任何必要创建 php.info 文件(无论如何,让世界阅读它并不是一个好政策)。在命令行上:
php-fpm -i | more
在其输出的某处,它将显示这一行:
Configuration File (php.ini) Path => /etc
以下是更完整的解释:How to Figure out Your PHP Configuration Parameters without info.php
根据此 answer,从 PHP 7 开始,常规 php.ini 文件已被删除并添加了 php.ini-production
和 php.ini-devlopment
。
因此,不要使用在我的情况下不存在的 php.ini(我已经安装了 php 8.1),而是使用 php.ini-production
,它位于 php 安装文件夹中(类似于:C:\PHP-8.1.5
)并创建一个文件并将其命名为 {3 },然后将 php.ini-production
的内容复制到这个新的 php.ini
中。
.php
文件的答案。顺便说一句,如果您对问题发表评论,我会收到通知,我可以尽快解决问题。phpinfo.php
的文件。使用 FPM,您至少可以使用php5-fpm -i | grep '\.ini'
。通常你会使用两到三遍,到最后你知道文件在哪里;)