php curl 301 无效 php curl 网页不自动跳转 php CURLOPT_FOLLOWLOCATION 选项无效的解决办法
![]() | ![]() | ![]() | ![]() |
| 【性价之王】 | 【线路之王】 | 【价格之王】 | 【配置之王】 |
| 【免费之王】 | 【香港首推】 | 【梯子之王】 | 【独服之王】 |

最近突然有同学反馈说微服务系统新用户无法绑定了,绑定功能是通过 curl 登录正方教务系统进行用户验证的,经过检查发现是因为新更换了服务器,程序 curl 登录正方教务系统时无法自动跳转链接。
在 php 中 curl 通过设置 CURLOPT_FOLLOWLOCATION 选项来设置是否自动跟随跳转链接,如果该选项为 true 或 1 则自动跳转,否则不会自动跳转。如果你是新开发的程序,那么首先检查 curl 代码中是否设置了 CURLOPT_FOLLOWLOCATION。
而我这里已经设置了 CURLOPT_FOLLOWLOCATION 为 true,之前也是好用的,那么初步怀疑是服务器中某些设置不兼容导致的。
经过查阅资料发现 php 中 curl 确实有一个 bug,那就是当服务器开启了安全模式或设置了 open_basedir 时,CURLOPT_FOLLOWLOCATION 配置是不起作用的,一些服务器设置的放跨站攻击就是通过 open_basedir 实现的。知道了原因就好办了,这里提供两种解决方案:
方案一:
关闭服务器安全模式或者 open_basedir 设置,这是最简单的做法,不过很多时候我们无法修改服务器的这些设置,那么请看方案二。
方案二:
使用下面的自定义函数执行 curl
function curlExec($curlOptions='', $curlHeaders='', $postFields='') { $newUrl = ''; $maxRedirection = 10; do { if ($maxRedirection<1) die('Error: reached the limit of redirections'); $ch = curl_init(); if (!empty($curlOptions)) curl_setopt_array($ch, $curlOptions); if (!empty($curlHeaders)) curl_setopt($ch, CURLOPT_HTTPHEADER, $curlHeaders); if (!empty($postFields)) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); } if (!empty($newUrl)) curl_setopt($ch, CURLOPT_URL, $newUrl); // redirect needed $curlResult = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($code == 301 || $code == 302 || $code == 303 || $code == 307) { preg_match('/Location:(.*?)n/', $curlResult, $matches); $newUrl = trim(array_pop($matches)); curl_close($ch); $maxRedirection--; continue; } else // no more redirection { $code = 0; curl_close($ch); } } while($code); return $curlResult; }猜你可能想看的VPS
- 便宜 VPS 商家列表及商家简评全球[VPS测评]
- stsdust 广州移动 vds 预售,1Gbps 带宽无限流量,硬件资全球[VPS测评]
- 傲游主机春季促销→全场 75 折 XEN KVM 香港&日本&韩国&新加日本VPS[主机]
- 国庆促销标准互联→全场九折 买两年送一年 国内高防 美国高防 美国 CN美国VPS[主机]
- 便宜 VPS 商家列表及商家简评全球[VPS测评]
- HostSolutions→罗马尼亚大硬盘 KVM 抗投诉 1TB 月付全球[VPS测评]
- Domeny.pl→.pl .com.pl .edu.pl .site 全球[VPS测评]
- MoeCloud 香港 HGC 商宽 VDS 上线,500M 端口无线流香港VPS[主机]
- imidc→香港服务器 50 刀 月;香港站群服务器(8C) 195 美站群服务器[IP]
- DiyVM→香港 2G 内存 XEN 月付 69 元起 香港独立服务器 独立服务器[U]
- Digital-VM→日本 新加坡 洛杉矶 英国 丹麦 挪威等 KVM 日本VPS[主机]
- 不建议年付-ParkinHost→50 欧元 年 200Mbps 宽带 全球[VPS测评]
- php 获取客户端 ip 的最简单方法全球[VPS测评]
- Debian 系统下宝塔面板安装 Nginx 后不显示的解决办法全球[VPS测评]
- 疯狂猜成语 图猜成语一个人抱着一袋金子在骂另一个人是什么成语?全球[VPS测评]
- 星轮数据 美国200G高防VPS 月付38元 香港BGP线路 月付仅需1美国VPS[主机]
- 网站发布完博客文章之后还应该做些什么?全球[VPS测评]
- VPC.KR 韩国 IPLC NAT 评测韩国VPS[主机]
- 人力资源管理系统前端Web模板 - SmartHR全球[VPS测评]
- 精编案例丨游戏行业转型升级迫在眉睫,云计算助力打造下一代游戏体验全球[VPS测评]
- 云计算拯救互联网巨头?全球[VPS测评]
- CombCloud,香港沙田CN2VPS测评,2核1G52元/月,安畅C香港VPS[主机]
- 桔子数据怎么样?便宜香港安畅CN2 VPS1核1G10M 28/月香港VPS[主机]
- JGKVM:1核/512M/30G/600G/30Mbps/洛杉矶CN2全球[VPS测评]
- 紫云服务器怎么样?紫云香港云服务器1核1G2M仅65元/月香港VPS[主机]
- 弘速科技:香港安畅CN2 GIA/弹性云服务器10元/月,2核1GB/2香港VPS[主机]
- 原创解析:云计算含义及定义全球[VPS测评]
- 极光KVM:新上香港CN2VPS,终身6折优惠,1核/1G/5Mbps,香港VPS[主机]
- UCloud:全球31个机房全球云服务器大促,香港2核4G低至485元/日本VPS[主机]
- CentOS 7.x 系统安装和配置redis-7.0.4集群全球[VPS测评]
转载请注明原文地址:http://140.238.13.167:12355/read-214440.html











