今天工作中,遇到个很诡异的问题,在本地测试没有问题,传到线上测试服务器,运行出现了Bug。
我在做一个接口,使用php的curl扩展,向远程服务器post数据,在网上搜了很多关于json_decode解析返回null的解决办法,但是感觉跟自己的都不符合,在服务端打印出post过来的字符串, "{\"data\":[{\"xmon_task_id\":152,\"ip\":134744072,\"port\":80,\"xmon_list\":\"17,18,19,20,21,22\",\"updated_task_time\":1375779072,\"ip_char\":\"8.8.8.8\",\"rdlist_id\":\"6060\",\"is_main\":1,\"zr_id\":\"5821\",\"pause_flag\":0,\"operation_flag\":\"add_task\"}],\"key\":\"25a9368715693a50e6609beaae5e566a\"}" "
发现所有的双引号都被转义了,怪不得无法解析。在网上搜索了下,magic_quotes_gpc 这个选项导致的,我本地php.ini这个选项是关闭的,所以没有问题,但是线上测试服务器是新配置的,这个选项是打开的,所以就会出现不同的测试结果。在网上了找了下magic_quotes_gpc打开与否对程序的影响如下:
注意:
return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
}