2010-03-31 67 views
2

外界的看法我运行Windows 7之内,我运行VirtualBox和Ubuntu Linux系统。在Ubuntu中,我运行Apache和使用PHP笨。要引用我们的CSS和JS文件,我们使用这个语法:在PHP解析本地主机等都可以成为VM

<?php echo site_url('css/styles.css'); ?> 

当查看本地的网站(Ubuntu的VM内)解析为:

http://localhost/styles.css 

所以工作正常。

美中不足的是,当我访问该站点从Windows 7中(为IE测试)。访问该网站,在Windows 7中,我指的是虚拟机的IP地址:

http://xx.x.x.x/ 

加载的网站,但,唉,所有的SITE_URL变量仍然被改写为“localhost”的。说文件显然没有对我的Windows 7

localhost的存在有没有解决这个简短的只是硬编码在我的PHP文件相对链接的方式?

回答

1

CodeIgniter中的site_url()函数documented here使用您在配置文件中设置的任何内容。你应该能够打开你的主配置文件(application/config/config.php)和更改基本URL设置你的虚拟机的IP,然后你的链接将两个环境中工作。这是文件中的第一个设置:

$config['base_url'] = "http://x.x.x.x/"; 
+0

啊!我没有意识到这只是在配置文件中设置的变量。很高兴知道! – 2010-03-31 14:26:23

0

更实际的是建立在Apache虚拟主机,并添加主机名到Windows的hosts文件,这样就可以使用类似“mysite的。本地”而不是‘本地主机’或IP地址。

这里

more info

5

许多选项从非常简单到复杂的疯狂:

$config['base_url'] = 'http://'. $_SERVER['HTTP_HOST'].'/'; 

这支持:

复杂

$config['base_url'] = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ? 'https' : 'http'; 
$config['base_url'] .= '://'. $_SERVER['HTTP_HOST']; 
$config['base_url']l .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']); 

这支持:

潜在疯狂

这一个是非常相似,但让您的config.php干净,报价如果HTTP_HOST失败,则会出现回退,这为您提供了一个在整个站点中使用的常量,并且可以为您提供一个从web根目录的BASEPATH和APPPATH相对URI。

把这个constants.php:

/* 
|-------------------------------------------------------------------------- 
| Docment root folders 
|-------------------------------------------------------------------------- 
| 
| These constants use existing location information to work out web root, etc. 
| 
*/ 

// Base URL (keeps this crazy sh*t out of the config.php 
if(isset($_SERVER['HTTP_HOST'])) 
{ 
    $base_url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ? 'https' : 'http'; 
    $base_url .= '://'. $_SERVER['HTTP_HOST']; 
    $base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']); 

    // Base URI (It's different to base URL!) 
    $base_uri = parse_url($base_url, PHP_URL_PATH); 
    if(substr($base_uri, 0, 1) != '/') $base_uri = '/'.$base_uri; 
    if(substr($base_uri, -1, 1) != '/') $base_uri .= '/'; 
} 

else 
{ 
    $base_url = 'http://localhost/'; 
    $base_uri = '/'; 
} 

// Define these values to be used later on 
define('BASE_URL', $base_url); 
define('BASE_URI', $base_uri); 
define('APPPATH_URI', BASE_URI.APPPATH); 

// We dont need these variables any more 
unset($base_uri, $base_url); 

在你的config.php文件,你可以简单地使用:

$config['base_url'] = BASE_URL; 

这支持:

(是的,这是相同的列表为一体的复合方法)。

这应该会让您的应用程序在您放置的任何位置运行,但至今仍不支持/〜userdir URL。

+0

你好......你在COMPLEX部分的第三行有错字:'$ config ['base_url'] l。= .........'? – dsdsdsdsd 2016-04-04 03:32:39