使用于PHP的App Engine加载BCMath或php.ini

时间:2014-05-23 22:19:29

标签: php google-app-engine archlinux

我正在运行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返回BCMATH。

php -i | grep -i bcmath返回BCMATH。

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

谷歌云的SDK /平台/ google_appengine /谷歌/应用服务引擎/工具/ 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

快乐的应用。