Ayar PHP bir site başına temelinde Path dahil?

8 Cevap php

Ben de yol dahil PHP set php.ini yapabilirsiniz:

include_path = /path/to/site/includes/

Ama sonra diğer web böylece hiç iyi etkilenir.

Ben her dosyanın start PHP dahil ayarlayabilirsiniz:

$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

Ama bu kötü uygulama ve clutters şeyler yukarı gibi görünüyveya.

Yani bir o include ve daha sonra her bir dosyanın içine dahil yapabilirsiniz:

include 'includes/config.php';

veya

include '../includes/config.php';

Bu şu anda ne yapıyorum, ama config.php bunu dahil ne bağlı olarak değişecektir yolunu içerir.

Daha iyi bir yolu var mı? Bu önemli mi?

8 Cevap

Eğer bir web sunucusu olarak apache kullanıyorsanız (eğer izin varsa). Htaccess dosyalarını kullanarak ayarlarını geçersiz kılabilirsiniz. Ayrıntılar için the php manual bakın.

Temelde bazı php ini değerleri içeren web sitenizin kök içinde. Htaccess adlı bir dosya koydu. Eğer geçersiz kılmaları izin apache yapılandırılmış Sağlanan, bu site php config tüm değerleri kullanacak + değerleri. Htaccess dosyasında belirtin.

Ben bağlantılı sayfasında belirtildiği gibi, "PHP_INI_ALL ve PHP _INI _PERDIR tipi direktifleri yalnızca kullanılabilir". Eğer tam liste aracılığıyla tıklarsanız içeren yol PHP _INI _ALL direktif olduğunu görüyoruz.

Erik Van Brakel, IMHO, en iyi yanıtlardan birini verdi.

Daha, Apache & kullanıyorsanız Sanal barındıran, onlara doğrudan içerir kurabilirsiniz. Bu yöntemi kullanarak,. Htaccess içinde php_admin komutları bırakmak için hatırlamak zorunda kalmazsınız.

Kur sunucu çapında php.ini olarak aynı sözdizimi ile CGI (paylaşılan ana en sık vaka) olarak PHP kullanıyorsa web kökünde bir php.ini dosyası kullanın; . bir Apache modülü ((Bir phpinfo yapmak) emin değilseniz) olarak PHP varsa htaccess içine koydu:

php_value include_pathdaki "her yerde"

Başı klasör php.ini alt klasörleri etkilediğini unutmayın.

Neden yol kötü uygulama olduğunu eklemeyi append düşünüyorsunuz?

Kök yazısının üstüne yakın Bu kod kötü olmamalı ...

$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());

Ana avantajı taşınabilir ve Apache ile sadece uyumlu olmasıdır IMHO

EDIT: küçük bir performans etkisi: Bu yöntemin bir dezavantajı gördüm. bkz http://www.geeksengine.com/article/php-include-path.html

Host kurmak nasıl bağlı, ekstra yapılandırma direktifleri ile ev dizininin kökünde bir php.ini dosyayı yerleştirmek için izin verilebilir.

Genellikle benim sistemleri I () gwtcwd bir DIR sabiti kullanabilirsiniz. Bu construct.php (bir sayfa başlangıç ​​dosyası) denir. Ben include_pathdaki muhtemelen daha somut bir çözüm olduğunu kabul ediyorum ama yine de alışkanlık dışında benim DIR sabitleri kullanın.

Sizin uygulama PHP ile yazılmış bir yapılandırma dosyası olmalıdır. Sonra programda her sayfaya bir göreli sayfası ile bulunur. Bu config dosyası içerir dir, şablonlar dir, görüntüler dir, vb yolu için bir değişken olacak

Siz de php.ini dosyasındaki include_path ayarlayabilirsiniz. Ben bir perl adam değilim, bu yüzden yüklemek mümkün olmasını bekliyoruz içerir ve include doğru şeyi yapmak zorunda. Ben bütün include_path eklenen belirli bir dizinde bulunuyor var. Ben gibi şeyler yapabilirsiniz

require_once "ClassName.php";

Ben dosyaların görece yolları veya yerleri hakkında endişelenmenize gerek yoktur.

Ben de böyle şeyler yapmak için kendi CustomRequire yazdım

function CustomRequire ($file)
{
  if(defined('MYINCLUDEPATH'))
  {
    require_once MYINCLUDEPATH . "/$file";
  }
  else
  {
    require_once $file;
  }
}

Ben nasıl değiştirebilirsiniz Bu şekilde daha sonraki bir tarihte içerir. Tabii ki, hala sizin kod include için bir yol bulmak gerekiyor :)