CodeIgniter中使用base_url()时显示http://::1/ci/
URL 辅助函数文件包含了一些帮助你处理 URL 的函数。
加载辅助函数后,你可以使用base_url(),site_url(),current_url()等一些列函数,但是有时候你会遇到这种问题,就是你尝试输出这些函数的值的时候,你会得到http://::1/ci/等类似的结果,即期望的localhost/ci/或者127.0.0.1/ci/ 变成了 http://::1/ci/
我到处搜集信息,想知道为啥会出现这样的结果,然后有人说这是ipv6的地址,需要关闭ipv6功能,我试了,结果当然是失败了。
我们一般在引用其他路径下的文件时才会用到base_url()函数,因为我们可以把他的结果连接上一个路径的字符串,就可在文件中引用或包含所需的文件了,比如我要ci/style/test.css文件,那我在其他文件里面可以用下面一行代码实现
<?php
$path = base_url()."style/test.css";
?>
但是这是我们想当然,你会发现,$path当做路径去访问的时候,因为$path=http://::1/ci/style/test.css,访问不了
查看网页源代码,发现代码是这样的
<link rel="stylesheet" href="http://::1/ci/style/test.css" />
然后我点了一下那个链接,跳转到一个空的页面,证明浏览器也没找到。
这个时候,我上网百度,谷歌了不止一下下,大家都说要设置application/config/config.php中的$config['base_url']的值
$config['base_url'] ='';
要在这里加内容,这里的路径值就是函数base_url()的值,但是我发现及时改成
$config['base_url']='localhost';
//或者
//$config['base_url']='E:/phpstudy/www/ci/';
但是发现依旧不对,然后我将鼠标定位到该链接,然后看浏览器左下角的链接,显示的是localhost/ci/localhost/ci//style/test.css
这个时候,我就将$config['base_url']的值清空,然后在引用文件的地方直接用style/test.css,居然成功了
但是,我并不知道为什么。
于是我就去看了一下base_url()的源码
base_url()在system/core/config.php中的.php函数中,源码是这样的
class CI_Config {
var $config = array();
var $is_loaded = array();
var $_config_paths = array(APPPATH);
function __construct(){
$this->config =& get_config();
log_message('debug', "Config Class Initialized"); // Set the base_url automatically if none was provided
if ($this->config['base_url'] == ''){
if (isset($_SERVER['SERVER_ADDR'])){
$base_url = (empty($_SERVER['HTTPS']) OR strtolower($_SERVER['HTTPS']) === 'off') ? 'http' : 'https';
$base_url .= '://'.$_SERVER['SERVER_ADDR'];
$base_url .= substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'], basename($_SERVER['SCRIPT_FILENAME'])));
}
else{
$base_url = 'http://localhost/';
} $this->set_item('base_url', $base_url);
}
}
然后我找到输出http://::1的原因了,因为一个$_SERVER['SERVER_ADDR'],其中,$_SERVER['SERVER_ADDR']的值就是::1/,难怪不得,我马上把他改为$_SERVER['HTTP_HOST'],然后依旧保持$config['base_url']为空,然后,成功了
在其他界面只需要
$path=base_url().'style/test.css’;
然后就可以了
其实做到这里,我还是有点疑惑,如果你看到这篇博客,如果你有什么见解,请一定要留言,我会非常感谢的
CodeIgniter中使用base_url()时显示http://::1/ci/的更多相关文章
- asp.net中当服务器出错时显示指定的错误页面
http://blog.csdn.net/helloxiaoyu/article/details/2943537 此篇文章描述了当异常再ASP.NET中发生时怎样使用C#.NET代码去拦截和相应异常. ...
- ueditor与mvc4中坑 -编辑时显示源码问题
最近一次使用 ueditor 时,在MVC中的修改新闻内容时发现,怎么调用都是编辑器保存下来的源码,代码如下 <script id="ucontent" name=" ...
- mysql中插入中文时显示乱码
在插入mysql的时候参数是中文的时候显示的是???乱码,这个是由于没有配置字符编码引起的 只要在SqlMapconfig.xml文件中加上<property name="url&qu ...
- 向mysql数据库中插入数据时显示“Duplicate entry '1′ for key ‘PRIMARY' ”错误
错误情况如题,出现这个错误的原因十分简单: 很明显,这是主键的问题. 在一张数据表中是不能同时出现多个相同主键的数据的 这就是错误的原因,解决的方法: 1.可以将这张表设置成无主键(mysql支持,其 ...
- jquery mobile 请求数据方法执行时显示加载中提示框
在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更 ...
- Flex中如何通过showAllDataTips属性使鼠标移动到图表时显示所有的数据Tips的例子
原文 http://blog.minidx.com/2008/11/10/1616.html 接下来的例子演示了Flex中如何通过showAllDataTips属性,使鼠标移动到图表时显示所有的数据T ...
- Linux故障:linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0"。
linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0". ...
- ie6 表格td中无内容时不显示边框的解决办法
1.在单元格中加入一个空格.这样: <td> </td> 2.直接在table里这样写:<table border="0" cellspacing=& ...
- JS文件中的中文在网页引用时显示乱码的简单解决方式
今天把一个jquery方法从前台cshtml文件转移到单独的js文件中后执行不成功,调试发现if判断中的中文字符串变成了乱码,之前在前台文件中是可以正常显示的,所以判定可能是跟文件的编码方式有关系. ...
随机推荐
- Luogu P3462 [POI2007]ODW-Weights
题目描述 While moving to a new compound the Byteotian Institute of Experimental Physics has encountered ...
- 习题 6 字符串(string)和文本
虽然你已经在程序中写过字符串了,你还没学过它们的用处.在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途.首先我们解释一下字符串是什么 东西. 字符串通常是指你想要展示给别人 ...
- zookeeper+kafka集群安装之中的一个
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/cheungmine/article/details/26678877 zookeeper+kafka ...
- Maven Dependency Scope
官方API描述 Dependency scope 是用来限制Dependency的作用范围的, 影响maven项目在各个生命周期时导入的package的状态. 自从2.0.9后,新增了1种,现在有了 ...
- Qt Creator中根据为Windows系统还是Linux系统对源码进行条件编译
方法1: 在.h和.cpp文件中,针对需要不同平台编译的代码:添加上如下的条件编译指令: #ifdef 标识符 程序段1 #else 程序段2 #endif 举例说明如下: //Windows系统包含 ...
- Matlab中要显示数学公式或符号Latex
\rho 代表 ρ, \sigma 代表 σ \alpha α \beta β \gamma γ \delta δ \epsilon ϵ \zeta ζ \eta ...
- WebSocket原理与实践(四)--生成数据帧
WebSocket原理与实践(四)--生成数据帧 从服务器发往客户端的数据也是同样的数据帧,但是从服务器发送到客户端的数据帧不需要掩码的.我们自己需要去生成数据帧,解析数据帧的时候我们需要分片. 消息 ...
- 20175105 2018-2019-2 《Java程序设计》第八周学习总结
20175105 2018-2019-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章主要内容有:泛型.链表.堆栈.散列映射.树集以及树映射. 泛型:可以使用class名 ...
- ASP.NET Newtonsoft 序列化反序列化
1.NuGet 安装 Newtonsoft 2.调用方法 一 NuGet 安装 Newtonsoft 二 调用方法 Student stu = new Student(); stu.ID = &quo ...
- 你真的了解volatile关键字吗?
volatile关键字经常在并发编程中使用,其特性是保证可见性以及有序性,但是关于volatile的使用仍然要小心,这需要明白volatile关键字的特性及实现的原理,这也是本篇文章的主要内容. 一. ...