Nasıl DOCUMENT_ROOT localhost ve canlı sunucuda çalışmak için kontrol edebilirsiniz?

1 Cevap php

Sürüm kontrollü projelerinde çalışan URL'leri tutmak için, ben $ _SERVER ['DOCUMENT_ROOT'] kullanarak oldum. Sorun bir klasör içinde projeler geliştirmek, bu yüzden bu olsun, bir:

$ _SERVER ['DOCUMENT_ROOT']. '/ Klasör / / yol / file.php'

Ben canlı gittiğinizde, ben genelde sadece istediğim şu:

$ _SERVER ['DOCUMENT_ROOT']. '/ / Yol / file.php'

Ben dünyanın en büyük sorunlar bu klasör adını kaldırmak ve eklemek zorunda daha var biliyorum, ama kolayca bu otomatik bir yolu var mı? Ben nasılsa ben çalışıyorum klasör içermek üzere yerel olarak benim belge kökü ayarlayabilir miyim? Ben şeyler çalışıyoruz şekilde temel bir yanlış anlama var mı? Bu işlerde yeni tür, ve mümkün olduğunca ve öğrenmek isteyen gerçekten "neden." Grok

Çok teşekkürler!

1 Cevap

Bunun yerine $_SERVER['DOCUMENT_ROOT'] kullanarak, neden her zaman web uygulamasının kök tutan sabit bir beyan değil?

<?php
define('ABSPATH', dirname(__FILE__));

Uygulamanızın kök klasöründe bulunan bir dosyaya aşağıdaki kodu koyun ve her sayfa yük üzerinde bulunmaktadır.

Daha sonra, sadece her zaman $path = ABSPATH . '/path/to/file.php'; olursa olsun, yerel kopyası bir alt dizine folder veya değil eğer yapabilirsiniz.


Uygulama zaten her sayfa yük üzerinde bulunan bir dosya varsa, sadece bu dosyada yukarıdaki kodunu bırakın ve bu iş olacak.

Sadece ek eklemek zorunda olabileceğini unutmayın dirname() Bu dosya bulunduğu yere bağlı olarak çağırır. Eğer webapp kökünden geçmek her dizin için bir tane ekleyin.

: Da webapp /webapp/ bulunan ve "küresel içerir" Örneğin, /webapp/includes/framework/init.php, daha sonra yukarıda kod gibi modifiye edilmesi gerekmektedir bulunur

define('ABSPATH', dirname(dirname(dirname(__FILE__))));

yani:. 2 ek dirname() webapp kökünden nedeniyle iki ek klasörler çağırır (includes/framework)


Clarification

Yukarıdaki kod tek bir dosyada olması gerekiyordu, ve web uygulama yalnızca bir dosyadır. Bu dosya her sayfada yükü dahil edilmesi gerekiyor.

Zaten (Böyle bir yapılandırma dosyası ya da diğer) herhangi bir işlem önce dahil bir dosya varsa, bu dosyada bu kodu kopyalayıp yapıştırabilirsiniz.

The number of dirname() calls depends on how deep the file you copied and pasted the code in is relative to the root directory of your web application. For the examples above, assume the root of your web application is represented by ~.

Eğer ~/abspath.php içine benim kodu kopyalayıp yapıştırın, o zaman bir dirname() çağrıyı gerekir.

Eğer ~/includes/abspath.php içine benim kodu kopyalayıp yapıştırın, daha sonra iki dirname() aramaları gerekir.

Eğer ~/includes/config/abspath.php, o zaman gereken üç dirname() aramaların içine benim kodu kopyalayıp yapıştırın. Şimdi sadece bu nihai konumu diyelim.

~/index.php, aşağıdaki misiniz:

<?php
require_once('includes/config/abspath.php');

ve ABSPATH erişebilirsiniz.

~/dir/someOtherPage.php aşağıdaki misiniz:

<?php
require_once('../includes/config/abspath.php');

ve ABSPATH erişebilirsiniz.

Ben zaten her sayfada yükü bulunan bir dosya varsa, onun basit sadece yukarıdaki kodu damla söylüyorum nedeni budur. Sadece dirname() buna göre çağırır miktarını değiştirmek emin olun. Yine, bu kod sadece bir dosya olması içindir.