php localhost çözülmesi yani VM dış görünümler olabilir

3 Cevap php

Ben Windows 7 koşuyorum. Içinde, ben Virtualbox ve Ubuntu koşuyorum. Ubuntu içinde, Apache çalışan ve PHP CodeIgniter kullanıyorum. Bizim CSS ve JS dosyalarını başvurmak için, biz bu sözdizimini kullanın:

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

: (Ubuntu VM içinde) yerel siteyi görüntülerken olduğunu giderir

http://localhost/styles.css

Yani çalışıyor.

Ben (IE test için), Windows 7 içinde bu siteyi eriştiğinizde yakalamak. Windows 7 sitesine erişmek için, ben VM IP adresine bakın:

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

Bu siteyi yükler ama, ne yazık ki, tüm site_url değişkenler hala 'localhost' olarak yeniden ediliyor. Dosya Açıkçası benim windows 7 localhost yok dediler.

Sadece benim PHP dosyası göreli bağlantılar sabit kodlama Bu kısa etrafında bir yolu var mı?

3 Cevap

Deli karmaşık çok basit burada birçok seçenekleri:

Easy

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

Bu destekler:

Complex

$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']);

Bu destekler:

Potentially insane

Bu bir çok benzer ama config.php temiz tutar, HTTP_HOST başarısız olursa bir geri dönüş sunar, size site boyunca kullanmak için sabit verir ve web kökten BasePath ve AppPath size bir göreli URI çok verebilir.

Constants.php bu koyun:

/*
|--------------------------------------------------------------------------
| 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 basitçe kullanabilirsiniz:

$config['base_url'] = BASE_URL;

Bu destekler:

(Evet, bu karmaşık yöntemi olarak aynı liste).

Bu hemen hemen her yerde bunu koymak çalışan app olsun, ama henüz bunu desteklemiyor / ~ userdir URL olmalıdır.

CodeIgniter'daki site_url() function, documented here, yapılandırma dosyasında kurdunuz ne kullanır. Sadece (application/config/config.php) ana yapılandırma dosyasını açın ve VM IP taban URL ayarını değiştirin, ve sonra bağlantıları hem ortamları için çalışacak gerekir. Bu dosyadaki ilk ayarı bulunuyor:

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

Daha pratik Apache üzerinde bir sanal konak kurmak ve bunun yerine 'localhost' veya ip adresi 'mysite.local' gibi bir şey kullanabilirsiniz, böylece pencereler 'ana bilgisayarlarının dosyasına bir ana bilgisayar adını ekleyerek olacaktır.

more info