Laravel7开启allow_url_fopen后仍报get_headers https wrapper禁用错误如何解决
修复方案
报错原文:production.ERROR: get_headers(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0
相关配置截图:
- 第一步:验证PHP配置实际生效状态
在Laravel项目public目录下新建phpinfo.php文件,写入代码:
浏览器访问该文件,搜索<?php phpinfo();allow_url_fopen参数,确认「本地值」和「主值」均为On。如果是命令行任务/队列触发的报错,需要在服务器终端执行php -i | grep allow_url_fopen校验CLI模式下的参数值,CLI和Web模式默认使用不同的php.ini配置文件,cPanel默认只修改Web模式的配置。 - 第二步:检查目录级自定义配置覆盖
查看Laravel根目录下是否存在.user.ini文件,检查是否有allow_url_fopen = Off配置,如有修改为On或删除该行。另外检查.htaccess文件,删除php_admin_flag allow_url_fopen Off这类强制禁用配置。 - 第三步:清除配置缓存
修改完配置后重启对应服务:如果用的是PHP-FPM就重启PHP-FPM服务,用Apache就重启Apache服务,开启了OPcache的话需要先清空OPcache缓存,避免旧配置持续生效。 - 第四步:Laravel兼容替代方案(无需修改服务器配置)
如果你没有服务器配置修改权限,可以直接替换get_headers()调用,改用Laravel自带的Http客户端实现相同功能,底层基于cURL不依赖allow_url_fopen参数,示例代码:
该方案兼容性更强,也符合Laravel的开发规范。use Illuminate\Support\Facades\Http; $headers = Http::get($目标url)->headers();
内容的提问来源于stack exchange,提问作者Shwetha
相关产品推荐
相关产品推荐


