Nasıl kendi dizinleri ve kendi php.ini PHP uygulamalar sınırı mı?

6 Cevap php

Ben OS X 10.5.6 çalışan, benim Mac birden çok PHP uygulamaları çalıştırıyorum, Apache 2, PHP 5. Her proje için subdomain kurulumu, her etki alanı için bir ana dosya girişleri ve Apache config Sanal dizin blokları var. Bu yüzden

project1.localhost goes to /Library/WebServer/Documents/Project1
project2.localhost goes to /Library/WebServer/Documents/Project2
etc...

Ancak, bu yöntem gerçekten web uygulamaları "izole" değildir. Örneğin, ben şöyle bir komut dosyası eklerseniz:

<?php
include("/includes/include.php");
?>

It references the script from the base directory of my computer. So it accesses
C:/includes/include.php

Is there a way for me to make it reference
C:/Library/WebServer/Documents/Project2/includes/include.php

Temelde, bu yüzden kendi dizini dışında bir şey onun farkında değil emin olun. Ayrıca, aynı zamanda bir alt bazında php.ini 's kullanmak için bir yolu var mı?

6 Cevap

Ben sanal konak başına bir php.ini ayarlamak mümkündür inanıyorum

<VirtualHost *:80>
    ...

    PHPINIDir /full/path/to/php/ini/

</VirtualHost>

Eğer open_basedir'inizi ve diğerleri özelleştirebilirsiniz bu yolu

Sen open_basedir direktifi httpd.conf dosyasında bir klasör blok ekleyerek belirli bir klasör ağacı yukarıdaki şey görmek için bir komut yeteneğini sınırlayabilir. Bu gibi görünmelidir:

php_admin_value open_basedir "/ tam / yol / / üst / klasör / of / arzu / ağaç /"

Bir şey - Sizinle yolu bitmiyor eğer / o bir joker maç bulunuyor. "/ Var / etc / benim /" sadece tam klasörü maç olurken, diğer bir deyişle "/ var / etc / benim", "/ var / etc / myfolder" hem de "/ var / etc / myMothersFolder" maç olacak isim.

Başkalarına erişemiyor uygulama izolasyonu konusunda ~ Bu securing PHP getirmedi mi? Ayrıntılı Lütfen -

Php.ini ile ilgili - Ben dizinde başına belirli bir php.ini kullanmak için herhangi bir şekilde farkında değilim, ama kesinlikle ini_set bir demet () hatları, böyle bir belki bir şey ile sayfa dahil bir php oluşturabilirsiniz ..

<?php
  // in your header or along top of all php modules in your pap
  require_once ( '/path/to/includes/ini_set.php' );

  // ...

?>

ve ini_set.php komut:

<?php
  // one of these for each override of defaults set in php.ini file --
  ini_set ( $varname, $newvalue );
  ini_set ( $varname, $newvalue );
  ini_set ( $varname, $newvalue );
?>

Eğer ini_set () işlevi hakkında daha fazla bilgi edinmek istiyorsanız, burada php.net ilgili dokümantasyon sayfası: http://us3.php.net/ini_set

~ Bu biraz yardımcı oldu umuyoruz

Bunu yapmak için en iyi yol fcgi (mod_fcgid) üzerinden PHP kullanmaktır. Bu şekilde, farklı bir kullanıcı ve VHost başına farklı bir php.ini PHP kullanarak çalıştırabilirsiniz.

http://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-ubuntu-8.10: İşte Ubuntu böyle bir yapılandırma kurmak için nasıl bir örnek

Tam yol adı kullanmak istiyorsanız, bu kullanabilirsiniz:

<?php
include  dirname( __FILE__ ) . '/includes/include.php';
?>


Possible solution for php.ini file

Göreli bir yol deneyin! Gibi:

<?php
include("./includes/include.php");
?>

veya

<?php
include("includes/include.php");
?>