几年前,我在自己维护的一台Linux服务器上安装了Apache 2.2x和PHP 5.3.1。我使用.tar.gz并按照指示构建它们(而不是rpm和什么)。一切都很好。

今天我需要安装这个看起来像一个PHP库。我执行了安装的所有步骤,找到了ibm_db2。所以在$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so。

最大的问题是,最后一步是配置文件php.ini,但我的系统上没有任何php.ini文件。恐怖中的恐怖。PHP工作得很好,当然,除了我想使用的这个新奇的ibm_db2 thingamajig之外,这样人们就可以使用GUI来修补DB2。(我尝试了一个小的PHP脚本,该脚本失败并指示ibm_db2函数不可用。)

我每隔几年就要处理一次PHP,所以请从非常基础的层面上给我一些启发,告诉我如何才能启用基于web的GUI对DB2的访问。


当前回答

对于SAPI: php-fpm

不需要创建一个php.info文件(不管怎样,把它留给世界阅读并不是一个好策略)。在命令行中:

php-fpm -i | more

在输出的某个地方,它将显示这一行:

Configuration File (php.ini) Path => /etc

下面是一个更完整的解释: 如何找出你的PHP配置参数没有info.php

其他回答

在命令行执行:

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()生成相同的信息,并使用浏览器调用它。在输出的第一个块中提到了它。PHP -i对命令行也做同样的事情,但这很不舒服。

试试这些解决方案中的一种

在终端中,输入find / -name "php.ini" 在终端中输入php -i | grep php.ini。它应该显示文件路径为“配置文件(php.ini) path => /etc” 如果你可以访问你的一个PHP文件,在编辑器(记事本)中打开它,并插入phpinfo();在< ?PHP换一行。这将告诉你php.ini的位置。 还可以以交互模式与PHP对话。只需在终端中输入php -a并输入phpinfo();PHP解释器启动后。

PHP提供了两个本地函数来显示加载哪个配置文件:

Php_ini_loaded_file返回加载的.ini文件 Php_ini_scanned_files返回从附加的ini目录解析出来的.ini文件列表

根据您的设置,Apache和CLI可能使用不同的.ini文件。以下是两种解决方案:

Apache:

只需在PHP (.php)文件中添加以下内容,并在浏览器中打开它:

print php_ini_loaded_file();
print_r(php_ini_scanned_files());

CLI:

复制粘贴在你的终端:

php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'

根据这个答案,从PHP 7开始,常规的PHP .ini文件被删除,并添加了PHP .ini-production和PHP .ini- development。

因此,而不是php.ini,这在我的情况下不存在(我已经安装了php 8.1),使用php.ini-production,它位于php安装文件夹(类似于:C:\ php -8.1.5),并创建一个文件并命名为php.ini,然后复制php.ini-production的内容在这个新的php.ini。

find / -name php.ini

嘿…这对我很管用!