Google App Engine部署多PHP服务路由异常返回500怎么解决?
问题原因
你的问题属于配置错误,核心问题是各服务的yaml配置中script路径和服务部署根目录不匹配,导致GAE找不到入口文件返回500错误:
你部署单个服务时,会以对应服务yaml所在的目录为部署根目录,文件路径的计算是相对于这个根目录的,而不是相对于整个项目的根目录。原来的api.yaml中script: /API/api/index.php的写法,会在API目录下寻找API/api/index.php文件,这个路径实际不存在,所以触发500错误。
修复方案
1. 修改各服务配置文件
调整API/api.yaml配置
runtime: php73 service: api handlers: - url: /.* script: api/index.php
调整admin/admin.yaml配置
runtime: php73 service: admin handlers: - url: /.* script: public/index.php
dispatch.yaml的路由规则无需修改,现有配置可以正确把对应前缀的请求转发到目标服务。
2. 按顺序部署所有资源
执行以下命令完成部署:
- 在项目根目录部署默认服务:
gcloud app deploy - 进入
admin目录部署admin服务:gcloud app deploy admin.yaml - 进入
API目录部署api服务:gcloud app deploy api.yaml - 回到项目根目录部署路由规则:
gcloud app deploy dispatch.yaml
3. 验证
部署完成后测试:
- 访问
https://PROJECT_ID.REGION_ID.r.appspot.com/API/api/返回Welcome to api service - 访问
https://PROJECT_ID.REGION_ID.r.appspot.com/admin/public/返回Welcome to admin service - 访问根路径返回
Not found
如果仍有500错误,可以到GAE控制台的日志查看器中查看具体报错信息,确认是否为文件路径配置问题。
内容的提问来源于stack exchange,提问作者tipikae
相关产品推荐
相关产品推荐

