Php Can';我不明白为什么我会得到AppEngine flex“;未捕获错误:调用未定义的函数Google\Protobuf\Internal\bccomp();
我试图在App Engine flex环境上实现Google的文本到语音API,但出现以下错误: PHP消息:PHP致命错误:未捕获错误:调用未定义 函数Google\Protobuf\Internal\bccomp()位于 /app/web/vendor/google/protobuf/src/google/protobuf/Internal/Message.php:941“ 有一次,我在composer.json中要求BCmath()来解决这个问题Php Can';我不明白为什么我会得到AppEngine flex“;未捕获错误:调用未定义的函数Google\Protobuf\Internal\bccomp();,php,google-app-engine,composer-php,google-text-to-speech,bcmath,Php,Google App Engine,Composer Php,Google Text To Speech,Bcmath,我试图在App Engine flex环境上实现Google的文本到语音API,但出现以下错误: PHP消息:PHP致命错误:未捕获错误:调用未定义 函数Google\Protobuf\Internal\bccomp()位于 /app/web/vendor/google/protobuf/src/google/protobuf/Internal/Message.php:941“ 有一次,我在composer.json中要求BCmath()来解决这个问题 { "require": {
{
"require": {
"ext-bcmath": "*",
"google/cloud-text-to-speech": "^1.0",
"google/gax": "^1.3",
"grpc/grpc": "^1.4",
"google/auth": "^1.8",
"phpseclib/phpseclib": "^2.0",
"google/protobuf": "^3.11"
}
}
{
"require": {
"ext-bcmath": "*"
}
}
然后在重新安装/vendor后,我无法清除错误消息。我试图通过运行
sudo apt install php7.2-bcmath
但是它说扩展已经安装。
我也经营这个
php-i | grep-i bcmath
并得到这个消息
/etc/php/7.2/cli/conf.d/20-bcmath.ini,bcmath-bcmath-support=>
已启用bcmath.scale=>0=>0
bccomp()的测试
我得到了应该的“-1”。看起来这个函数可以工作
我甚至尝试在php.ini中启用BCmath扩展
extension=bcmath.so
我将.ini文件放在与my/vendor和index.php相同的目录中。不过,在部署应用程序之后
gcloud app deploy
我仍然得到致命错误。在打破头部5天后,找到了解决方案。BCMath似乎安装在PHP版本>=7中,但未在Google App Engine上启用。为了启用它,我执行了以下操作:
{
"require": {
"ext-bcmath": "*",
"google/cloud-text-to-speech": "^1.0",
"google/gax": "^1.3",
"grpc/grpc": "^1.4",
"google/auth": "^1.8",
"phpseclib/phpseclib": "^2.0",
"google/protobuf": "^3.11"
}
}
{
"require": {
"ext-bcmath": "*"
}
}
最后部署项目
gcloud app deploy
就这些 您确定FPM中已启用bcmath吗?检查fpm的php。ini@Mihail0v您能详细说明一下如何检查FPM并在Google Cloud Shell中启用bcmath吗?/etc/php/7.2/FPM/php.ini默认情况下应该在这里。检查文件是否包含“extensions=bcmath.so”节。@Mihail0v没有像/fpm这样的目录。当我在/etc/php/7.2/目录中时,它只显示“cgi”“cli”和“mods available”子目录。在可用的/mods中有一个bcmath.ini文件,其内容是“PHPBcmath模块的配置;优先级=20扩展名=bcmath.so”。php.ini位于/cli目录中,我没有找到bcmath extesion。那么,如何将其添加到php.ini?@TechToSpeech抱歉,我以为您使用的是php fpm。您可以传递phpinfo();出口在index.php的开头,查看可用的扩展和php.ini路径。它是否显示bcmath已启用?谢谢。这一问题也曾在本报告中讨论过。