阿里云函数计算PHP运行时强制要求入口函数名为handler且签名必须为function handler($event, $context);$event是原始字符串需手动解析;日志必须用error_log();依赖须在FC对应镜像中安装。

PHP函数计算入口函数必须是handler且接受两个参数
阿里云函数计算(FC)PHP运行时强制要求入口函数名为handler,且签名必须为function handler($event, $context)。不是main、不是index、也不能少参数或多参数——否则部署后调用直接报Function handler not found或Invalid handler。
常见错误包括:
- 把
index.php里写echo "hello"当入口,没定义handler函数 - 用了
function myHandler($event, $context)但未在函数配置中填myHandler(注意:FC PHP不支持自定义函数名,硬编码只认handler) - 参数顺序颠倒,写成
($context, $event),会导致$event实际是Context对象,后续json_decode($event)失败或静默空值
$event是原始字节流,不是自动解析的数组
PHP运行时不会帮你json_decode或urldecode请求体。$event是string类型,内容取决于触发方式:HTTP触发时是原始POST body(可能为JSON字符串、表单数据或二进制),定时触发时是空字符串,OSS触发时是Base64编码的事件通知JSON。
典型处理方式:
- HTTP触发且前端发JSON:
$data = json_decode($event, true) ?: []; - HTTP触发且
Content-Type: application/x-www-form-urlencoded:parse_str($event, $data); - OSS触发:
$ossEvent = json_decode(base64_decode($event), true); - 不确定来源时,先
var_dump(gettype($event), strlen($event));确认再处理,别默认json_decode
日志必须用error_log(),echo和print_r在FC里不输出到日志服务
阿里云FC的PHP运行时只捕获error_log()和trigger_error()产生的日志,写入到SLS日志服务;echo、print、var_dump()(除非重定向到stderr)全被丢弃,控制台看不到任何输出。
正确做法:
- 调试用:
error_log("debug: " . json_encode($data)); - 结构化日志(推荐):
error_log(json_encode(['level' => 'info', 'msg' => 'start processing', 'event_id' => $context->requestId])); - 避免
var_dump($var)裸用,改用error_log(print_r($var, true)); - 注意
error_log()默认写入stderr,已在FC日志链路中捕获,无需额外配置
依赖不能靠composer install --no-dev本地装完就上传
FC PHP运行时环境是精简Linux容器,glibc版本、扩展(如curl、openssl、mbstring)与本地开发机可能不同。直接在Mac或Windows上composer install生成的vendor/,大概率因.so扩展缺失或ABI不兼容导致Class not found或undefined symbol错误。
可靠方案只有两个:
- 用FC提供的
docker run构建镜像:拉取registry.cn-shanghai.aliyuncs.com/aliyunfc/runtime-php7.4等对应版本镜像,在容器内执行composer install --no-dev,再打包上传 - 使用
fun build(Funcraft):它会自动拉起对应runtime容器完成依赖安装,比手写Dockerfile更轻量 - 绝对不要把本地
vendor/压缩包直接上传——尤其含ext-*扩展或bin/可执行文件(如phpunit)时,90%会失败
最易被忽略的一点:FC PHP的$context对象里$context->credentials返回的是临时STS Token,有效期默认仅15分钟,别拿它长期缓存或写死到配置里;每次调用都应重新获取,或用Aliyun\Core\Config::loadOptionsFromEnv()让SDK自动刷新。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











