CodeIgniter 4局域网跨设备访问资源加载失败:net::ERR_CONNECTION_REFUSED
解决CodeIgniter 4局域网跨设备访问资源加载失败问题
问题核心
你硬编码了app.baseURL为http://localhost:96/sun/,导致局域网其他设备访问时,资源路径仍指向仅服务器本地能解析的localhost,进而触发net::ERR_CONNECTION_REFUSED错误。
解决方案
1. 动态自动适配(推荐)
CodeIgniter 4支持自动根据请求生成baseURL,无需硬编码:
- 打开项目根目录的
.env文件(若无则复制.env.example并重命名为.env),修改配置:
app.baseURL = ''
- 或直接修改
app/Config/App.php中的对应配置:
public $baseURL = '';
设置为空后,框架会自动识别当前请求的IP/域名和端口,生成适配的资源路径,本地localhost和局域网IP访问都能正常工作。
2. 固定为服务器局域网IP
如果需要固定baseURL,直接替换为服务器的局域网IP(示例IP为192.168.1.100):
app.baseURL = 'http://192.168.1.100:96/sun/'
这样局域网内所有设备访问时,资源路径都会指向该IP,避免解析错误。
3. 可选:本地域名映射(兼顾本地和局域网)
若想使用友好域名访问,可在服务器和局域网设备的hosts文件中添加映射:
服务器/设备hosts文件添加:
192.168.1.100 sun.local
然后修改baseURL为:
app.baseURL = 'http://sun.local:96/sun/'
这样本地和局域网设备都能通过sun.local访问,资源路径也会自动适配。
额外注意事项
- 确保服务器的96端口未被防火墙拦截,局域网内设备能正常访问该端口。
- 修改配置后,清除CodeIgniter的配置缓存(删除
app/Config目录下的缓存文件),避免旧配置残留。
内容的提问来源于stack exchange,提问作者Yato
相关产品推荐
相关产品推荐

