如何修复Cpanel中Laravel项目运行seed时出现的file_get_contents客户端错误
解决方案
错误原因
你当前使用的kavist/rajaongkir包默认采用file_get_contents发送HTTP请求,而你所使用的Cpanel主机PHP配置中关闭了allow_url_fopen参数,导致无法发起HTTPS请求触发报错。
可选解决方法
方法1:开启allow_url_fopen(最直接)
- 登录Cpanel管理后台,找到「选择PHP版本(Select PHP Version)」功能入口
- 进入后切换到「选项(Options)」标签页
- 找到
allow_url_fopen选项,勾选前方复选框后保存配置 - 等待1-2分钟配置生效后,重新执行填充命令即可:
php artisan db:seed --class=LocationsTableSeeder
方法2:替换RajaOngkir HTTP客户端(无需开启allow_url_fopen)
如果你的主机商禁止开启allow_url_fopen,可以将包的请求驱动替换为Guzzle,Laravel项目默认已内置Guzzle依赖,操作步骤如下:
- 执行命令发布RajaOngkir配置文件:
php artisan vendor:publish --provider="Kavist\RajaOngkir\Providers\LaravelServiceProvider"
- 打开项目根目录下的
config/rajaongkir.php文件,将api.client配置项的值修改为:
'client' => \Kavist\RajaOngkir\HttpClients\GuzzleClient::class,
- 重新执行数据填充命令即可,该方案完全不依赖
allow_url_fopen配置。
方法3:本地生成数据导入服务器(临时快速方案)
如果你仅需要执行一次省市区数据填充,可以先在本地开发环境跑完seed,将生成的省份、区县表数据导出为SQL文件,直接导入到服务器的生产数据库中即可,无需修改任何服务器配置。
内容的提问来源于stack exchange,提问作者Muzakir Nur
相关产品推荐
相关产品推荐

