Bir dev sunucu üzerinde kod ve üretim sunucusu - bağlantıları ile nasıl başa?

6 Cevap php

Ben üretim sunucu üzerinde çalışan bir kodun bir kopyasını, ve ben bir dev sunucusu olarak benim yerel makine (ler) çalışan xampp kullanın. Ben aktif olarak geliştirmek çeşitli web siteleri var, bu yüzden kullanmak zorunda kaldım http://localhost/sitename

Bütün URL'ler (/ file.php), etki göredir. Ben onlara bulundukları site klasörüne tüm iş göreceli yapmak istiyorum, onlar eşya sunucu üzerinde iyi çalışır, ancak yerel bir sunucu üzerinde, hepsi noktası Localhost'a ben şimdi ne başka yapabileceğim bir şey var mı hangi şudur:

if($_SERVER['SERVER_NAME'] == "localhost") {
 $path_to = "http://" . $_SERVER['SERVER_NAME'] . "/folder";
 $path_to_files = $_SERVER['DOCUMENT_ROOT'] . "/folder";
} else {
 $path_to = "http://" . $_SERVER['SERVER_NAME'];
 $path_to_files = $_SERVER['DOCUMENT_ROOT'];
}

ve sadece sitede her bağlantının önce $path_to koyarak.

6 Cevap

Bunun yerine bir vhostu kullanmak gerekir.

Yani, hosts dosyası, gibi bir şey eklemek:

sitename.dev 127.0.0.1

Daha sonra in xampp/apache/conf/extra/httpd-vhosts.conf,

<VirtualHost *:80>
        DocumentRoot "/xampp/htdocs/sitename"
        ServerName sitename.dev
</VirtualHost>

Yeniden Apache sonra http://sitename.dev gözatın

Bu üretim olarak aynı davranışı sağlamalıdır.

Sankonlara hakkında daha fazla okuyun here.

sadece bağlantı görüntü / dosya bağlantıları host isimlerinden ile çalışmak istemiyorum.

http kök etki alanı / klasör / file.jpg => / klasör / file.jpg gider - bu bir http://domain gerekmez

. ve komut yan başvurmak / veya FILE veya benzer işlevleri / sabitleri ile mevcut yol alabilirsiniz:

içine bakmak:

basename(dirname(__FILE__));

Neden sadece göreceli bağlantıları kullanın:

<a href='/some/relative/path'>

Sonra URL'lerin için dosya adlarını harita ve geri, ilgili $ _SERVER değişkenler kullanabilir? Her web sitesi ile ilgili çok sayıda dizin ağaçları istemiyorum basitlik için (NB.

Alternatif olarak hemen her yerde bilgisayar adını sağlamanız gerekir $ _SERVER ['HTTP_HOST'] kullanabilir?

C.

Neden farklı müşteriler için xampp gelişim içinde sanal alanları kullanmak değil mi?

Eğer vermek çözüm iyi biridir, ama zor kod mutlak URL'ler istiyorsanız, her site için bir sanal konak ile dev apache yapılandırabilirsiniz.

Apache Virtual Host documentation bakın.

Ya Apache çeşitli portları dinlemek ve her site için bir bağlantı noktası atamak yapabilirsiniz.

Apache tüm IP'lere dinlemek ve her site için farklı bir IP kullanmak yapabilirsiniz ya.

Yoksa 127.0.0.1 çözümlemek ve isme dayalı sanal barındırma yapılandırmak birkaç hostnames oluşturabilirsiniz düzenleyebilirsiniz. Matt tarafından önerildiği gibi, gerçek bir DNS sunucusu kullanmak veya hosts dosyasını düzenlemek ya.

Ne yapmak istiyorsun Apache sanal host kullanmak olduğunu. Httpd.conf bu kullanın:

NameVirtualHost 127.0.0.1

<VirtualHost localhost>
DocumentRoot "C:/My Documents/My Webs"
ServerName localhost
</VirtualHost>

<VirtualHost sitename>
DocumentRoot "C:/My Documents/My Webs/Site Name"
ServerName sitename
</VirtualHost>

: Sonra hosts dosyasına (C:\Windows\System32\Drivers\etc\hosts Windows) sunucu adını ekleyin

127.0.0.1        localhost sitename