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’;

然后就可以了

 

其实做到这里,我还是有点疑惑,如果你看到这篇博客,如果你有什么见解,请一定要留言,我会非常感谢的

转载于:https://www.cnblogs.com/-beyond/p/7624366.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值