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