我正在运行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?
答案 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
快乐的应用。