PHP开发RESTful API时PATH_INFO无法读取?后参数问题咨询
问题原因
你遇到的情况和explode拆分逻辑无关,是$_SERVER['PATH_INFO']的设计特性导致的:PHP 中的$_SERVER['PATH_INFO']本身只会返回请求地址中「域名之后、?开头的查询参数之前」的路径内容,查询参数默认不会包含在这个变量里。你预期拆分得到[database, table?key=value]是对PATH_INFO的取值范围理解有误,对应你的请求地址,PATH_INFO的实际取值就是/database/table,所以拆分后第二个元素只会是table。
解决方案
- 路径部分的拆分逻辑不需要调整,你当前拿到的
[database, table]是标准的路径拆解结果,查询参数本身不属于路径的一部分。 - 如果你需要获取
?之后的查询参数,不需要手动拆分字符串,直接使用PHP原生的$_GET全局数组即可,示例中的key参数可以直接通过$_GET['key']读取到对应的值value。不管请求方法是GET、PUT还是DELETE,URL中携带的查询参数都可以通过$_GET正常读取。 - 如果你需要获取整个查询串的原始内容,可以读取
$_SERVER['QUERY_STRING']变量,对应你的请求该变量值为key=value。
内容的提问来源于stack exchange,提问作者Sacooley1
相关产品推荐
相关产品推荐

