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
- imidc→(香港+台湾)独立服务器 $30 月 e3-12xx 16g独立服务器[U]
- SoftShellWeb→首月 0.01-0.02 美元 KVM 主机 全球[VPS测评]
- 搬瓦工→新增 10Gbps 带宽的 cn2 gia 线路 VPS 移动+全球[VPS测评]
- 疯狂猜成语 图猜成语一个胖子在吃言是什么成语?全球[VPS测评]
- JustHost→10.5 元 月 512MB 内存 5GB 空间 不限虚拟空间(主机)
- 便宜 VPS tmhhost→1 核 512M 内存 20G 硬盘 50全球[VPS测评]
- ExCloud→深港 IPLC 沪日 IPLC 等 VPS 256MB 全球[VPS测评]
- KMS 激活 Windows OfficeWINDOWS
- Linux 服务器局域网(内网)快速传输文件全球[VPS测评]
- HKBTELE→699 元 月 E3-1225 16G 内存 1TB 硬日本VPS[主机]
- STSDUST→$15 年 512MB 内存 8GB SSD 空间 1T虚拟空间(主机)
- 标准互联→90 元 月-4GB 80GB 30M 无限流量 洛杉矶(CN全球[VPS测评]
- CloudCone→$2 月 KVM-512MB 15GB 1TB 洛杉全球[VPS测评]
- 线路不行-1GServers 凤凰城 E3-1230v2 8G 1TB 独立服务器[U]
- SpinVPS→$5.99 月 1GB 内存 20GB SSD 空间 2虚拟空间(主机)
- 超值! CCleaner Pro 5折促销 折后仅98.02元全球[VPS测评]
- 今日头条欲做号内搜索,可搜站外不少内容全球[VPS测评]
- 网站配置HSTS协议的好处和必要性全球[VPS测评]
- HostKvm 新上洛杉矶CN2VPS 2G内存入门套餐七折终身优惠$6全球[VPS测评]
- TAKI CLOUD → 台湾HINET 韩国CN2 25$ 月 1C1韩国VPS[主机]
- BugetNode → 7G内存 70G储存 7T流量 荷兰高配鸡 月付全球[VPS测评]
- 2019圣诞: CloudCone 512 内存 30G SSD 3T流全球[VPS测评]
- 跨境电商洋码头生死攸关:买手流失资金被冻结保全全球[VPS测评]
- 景文互联年终活动:云服务器7折,多送2G内存,香港cn2\\日本cn2\日本VPS[主机]
- 恒星云:高防服务器优惠活动,成都高防云服务器及辽宁香港服务器特惠活动香港VPS[主机]
- kvmcloud怎么样?香港BGP云服务器 月付12.9元香港VPS[主机]
- 快云科技:2核2G3M香港云BGP/新界CN2云服务器,月付33元香港VPS[主机]
- wordpress 上传附件报错 “抱歉,出于安全的考虑,不支持此文件类全球[VPS测评]
- edgeNAT:香港/韩国/美国CN2云服务器,企业运营,年付6折/月付韩国VPS[主机]
- 持续高温!长沙所有初中新生停止军训!全球[VPS测评]
转载请注明原文地址:http://140.238.13.167:12355/read-205582.html











