百度云计算(BAE)试用体验

BAE-LOGO

今天心血来潮,想在BAE上搭建一个集成化公有API接口,将一些现有的比较常用的接口同时部署到BAE上,方便今后使用。于是想将SAE上一个写好的现有的接口搬到BAE上。接口是通过fsockopen实现的,但是经过反复不断的测试,总是报告服务器错误(500)。一开始以为是代码写的有问题,于是不断的找代码错误,折腾了好长时间发现没有了任何错误还是不行。同样的代码在SAE上可以,为什么到了BAE上就不行了呢?

         就在看似无解的时候,突然想到前几天曾尝试放一个探针到BAE上,发现无法正常工作。然后测试phpinfo()函数也不被许可,查看BAE封禁函数,发现phpinfo函数被封禁,所以考虑是不是fsockopen不被允许呢?于是找到BAE官方文档,在搜索框输入fsockopen找到了关于fsockopen的介绍(介绍地址Php提供的另一个网络访问函数是fsockopen,这个函数仅仅允许系统环境变量中的地址,对于不在地址中的请求都无法通过安全校验。于是明白了无法成功的原因。那究竟哪些地址被允许呢?于是找文档里关于服务器环境变量被允许的地址的描述,但是失望而归。那这样就没有办法了吗?想到用PHP自带的print_r打印一下环境变量($_ENV),但是却只输出了一个Array(),数组为空。经查询,没有输出的原因是在服务器php.ini中的设置中variables_order=”EGPCS”中未配置E(E表示Environment,G表示Get,P表示Post,C表示Cookies,S表示Server),则PHP无法接受环境变量,所以$_ENV输出为空。

至此,在BAE平台上搭建集成化API接口的计划落空。