【问题标题】:Make App Engine for PHP load BCMath or php.ini让 App Engine for PHP 加载 BCMath 或 php.ini
【发布时间】:2014-05-23 22:19:29
【问题描述】:

我正在运行来自 Arch Linux 存储库的最新 php-cgi。我在 php.ini 上启用了 BCMath 模块,当我在 Apache 中运行 php、php-cgi 和 php 时它可以工作。但是,当 dev_appserver.py 运行 php 时,它会以某种方式丢失我在 php.ini 中设置的配置。导致 BCMath、soap 和我的语言环境设置都无法加载,导致:

dev_appserver.py --php_executable_path /usr/bin/php-cgi appengine-try-php
PHPEnvironmentError: The PHP runtime requires the "bccomp" function, which is not defined.

php-cgi -i | grep -i bcmath 返回启用 BMATH。

php -i | grep -i bcmath 返回启用 BMATH。

php -r "echo bccomp('1.0001', '1', 5);" 返回 1。

有没有办法让 dev_appserver.py 加载模块或 php.ini?

【问题讨论】:

    标签: php google-app-engine archlinux


    【解决方案1】:

    这是失败的代码 - 我们检查函数是否存在。

    if (!function_exists('bccomp')) {
      echo "The PHP runtime requires the \"bccomp\" function, which is not ";
      echo "defined.\n";
      echo "If you built PHP using \"configure\" then please rebuild with:\n";
      echo ' ./configure  --enable-bcmath';
      exit(1);
    }
    

    我不知道为什么您启用了扩展程序但该功能不存在。可能尝试列出可用于仔细检查它的功能。

     php -r 'print_r(get_defined_functions());' | grep -i bccomp
    

    【讨论】:

    • 似乎 devappserver.py 脚本完全忽略了 php.ini。我在那里声明了我的时区设置,并在那里指定了 bcmath 模块。导致 devappserver 在没有正确设置的情况下加载 php。从命令行运行 php 和 php-cgi 会加载 php.ini 文件。但是当我冒险修改 check_environment.php 并注入一个 phpinfo() 时,它给出了一个完全不知道 php.ini 的 php,包括没有设置时区。
    • 我已经更新了这个问题......它好像 dev_appserver.py 用 -n 运行 php-cgi,“不会使用 php.ini 文件”。是的,当我运行 php -r 'print_r(get_defined_functions());' | grep -i bccomp 时,bccomp 是函数 938
    • 原来 dev_appserver.py 在 runtime.py 的第 145 行加载了自己的 php.ini。我正在调查。
    • 原来,你可以在项目目录下放一个php.ini,它就会被读取。不幸的是,现在我收到一个关于“未指定输入文件”的奇怪错误。
    【解决方案2】:

    google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/php/runtime.py

    支持从项目目录加载一个php.ini文件,这样你就可以把一个php.ini文件放到项目目录下。默认情况下,它会忽略 /etc/php/php.ini 中的 php.ini 文件,这与所有其他 php 实例不同。这是我正在使用的 php.ini 脚本。与生产版 App Engine 相比,它可能有额外的模块和缺失的模块。

    date.timezone = America/New_York
    extension=bcmath.so
    extension=bz2.so
    extension=curl.so
    extension=gd.so
    extension=gettext.so
    extension=mcrypt.so
    extension=mysqli.so
    extension=mysql.so
    extension=openssl.so
    extension=pdo_mysql.so
    extension=soap.so
    extension=zip.so
    

    应用愉快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 2016-11-10
      相关资源
      最近更新 更多