部署在AWS S3上的Twilio Gather Action关联PHP文件无法执行
为什么Twilio Gather组件指向S3托管的PHP文件无法执行?
这绝对不是正常现象,问题的核心在于你选的存储服务不对——Amazon S3是静态存储服务,它没办法执行像PHP这样的服务器端脚本。
先看一下你提供的Twilio响应XML:
<?xml version="1.0" encoding="UTF-8"?> <Response> <Gather action="https://s3.amazonaws.com/chumbucketv1/process_gather.php" method="GET"> <Say> Please enter your account number, followed by the pound sign </Say> </Gather> <Say>We didn't receive any input. Goodbye!</Say> </Response>
为什么S3上的PHP没法执行?
S3的定位是存储静态文件(比如HTML、图片、CSS、纯文本),它没有内置的PHP解析器,也不会运行任何服务器端代码。当Twilio请求这个S3上的PHP文件时,S3只会把PHP的源代码原封不动地返回给Twilio,而不是执行它并返回处理后的Twilio XML响应——这就导致Twilio无法识别响应内容,自然没法按预期工作。
怎么解决这个问题?
你需要把process_gather.php部署到能运行PHP的环境里,比如:
- AWS EC2:自己搭建一台云服务器,配置PHP运行环境(比如LAMP/LEMP栈),把PHP文件上传到服务器的网站根目录
- AWS Elastic Beanstalk:AWS的PaaS服务,一键部署PHP应用,不用手动配置服务器
- AWS Lambda + API Gateway:无服务器方案,把PHP逻辑改成Lambda函数(或者用支持PHP的Lambda运行时),然后通过API Gateway暴露一个HTTP端点给Twilio调用
- 其他第三方主机:比如虚拟主机、VPS,只要支持PHP运行就行
部署完成后,记得把Gather的action属性改成新的可执行PHP的URL,并且先手动测试一下这个URL:在浏览器里访问它(或者用curl),确认它返回的是符合Twilio要求的XML响应,而不是PHP源代码。
内容的提问来源于stack exchange,提问作者gpu2017
相关产品推荐
相关产品推荐

