16.04.2 LTS - 使用 PECL 安装 PHP 交易扩展时出错

16.04.2 LTS - 使用 PECL 安装 PHP 交易扩展时出错

PHP 7.0.15-0ubuntu0.16.04.4

$ pecl install trader
... 
Libraries have been installed in:
/tmp/pear/temp/pear-build-rootdGbCc2/trader-0.4.0/modules
...
Build complete.
Don't forget to run 'make test'.

running: make INSTALL_ROOT="/tmp/pear/temp/pear-build-rootdGbCc2/install-trader-0.4.0" install
...
Build process completed successfully
Installing '/usr/lib/php/20151012/trader.so'

好的,到目前为止,一切似乎都进展顺利。然后我收到以下错误:

Warning: Invalid argument supplied for foreach() in PEAR/PackageFile/v2/Validator.php on line 870
PHP Warning:  Invalid argument supplied for foreach() in /usr/share/php/PEAR/PackageFile/v2/Validator.php on line 870

Warning: Invalid argument supplied for foreach() in PEAR/PackageFile/v2.php on line 1675
PHP Warning:  Invalid argument supplied for foreach() in /usr/share/php/PEAR/PackageFile/v2.php on line 1675

Warning: Invalid argument supplied for foreach() in PEAR/PackageFile/v2.php on line 1675
PHP Warning:  Invalid argument supplied for foreach() in /usr/share/php/PEAR/PackageFile/v2.php on line 1675

但是,输出结果如下:

install ok: channel://pecl.php.net/trader-0.4.0
Extension trader enabled in php.ini

我将其添加extension=trader.so到我的/etc/php/7.0/apache2/php.ini并重新启动了 apache,但扩展未出现在phpinfo()或 中php -m。尝试执行任何功能都会出现以下结果:

Fatal error: Uncaught Error: Call to undefined function

关于如何解决这个问题有什么建议吗?谢谢!

答案1

我已经安装了这个扩展 3-4 次,每次都遇到这个问题。不过我想我已经解决了。如果命令

php -i | grep trader

返回“Trader”,则表示已安装,但直到 php 通过 php.ini 加载它后,您才能使用它。您可以运行 phpinfo() 函数并查找 trader 扩展来检查。如果找不到,则可能是您将 extension=trader.so 添加到了错误的 php.ini 文件中。这就是令人困惑的地方。运行

php -i | grep php.ini

告诉您加载了哪个 php.ini 文件...但是我在 php 7.4 目录 > 子目录中总共找到了 3 个 php.ini 文件。因此,我将 extension=trader.so 行添加到我能找到的所有 php.ini 文件中,然后重新启动 Apache 并运行 phpinfo() 函数,现在已加载 trader。使用一些 trader 函数进行了测试。

注意 1. Trader 在 php 8.* 中似乎还不能 100% 正常工作。测试显示某些 Trader 功能失败。

注意 2。您还可以在 php.ini 文件中控制交易者的精度和舍入。有关更多详细信息,请参见交易者运行时。

答案2

您可能有一个用于 CLI 的特定 php.ini。

要测试扩展是否在 php CLI 上:

php -i | grep trader

要查看哪个是正确的 php.ini:

php -i | grep php.ini

相关内容