Nasıl PHP'nin open_basedir kısıtlama dinlenebilir?

3 Cevap php

open_basedir bir dizin ağacı içinde PHP ile açılabilir dosyaları sınırlar.

Benim web kök dizini dışında birçok sınıf kitaplıkları ve yapılandırma dosyalarını depolamak. Bu şekilde web sunucusu, bunları kamuya erişilebilir yapmaz. Benim uygulamadan onları eklemeyi deneyin Ancak ben böyle bir open_basedir kısıtlama hata alıyorum:

Warning: realpath() [function.realpath]: open_basedir restriction in effect. File(/var/www/vhosts/domain.tld/zend/application) is not within the allowed path(s): (/var/www/vhosts/domain.tld/httpdocs:/tmp) in /var/www/vhosts/domain.tld/httpdocs/index.php on line 5

Benim web kökü burada:

/var/www/vhosts/domain.tld/httpdocs

Benim kütüphaneler ve yapılandırma dizini burada:

/var/www/vhosts/domain.tld/zend

Ne etki klasörü altında dizin ağacı benim uygulama için kullanılabilir hale böylece open_basedir kısıtlama dinlenmek için en iyi çözüm olurdu? Ben bunu yapmak istiyorum etki bir dizi var, ve ben de güvenlik açıklarını yaratma açıkça dikkatli yaşıyorum.

Not: Ben CentOS, Apache, Plesk, kullanıyorum ve ben sunucuya root ssh erişimi vardır. Bu doğrudan Zend Framework için geçerli değildir ama, ben bu durumda kullanıyorum. Yani burada zerdüştlerin bootstrap itibaren dahil edilmesi:

define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../zend/application/'));
set_include_path(APPLICATION_PATH . '/../zend/library' . PATH_SEPARATOR . get_include_path());

3 Cevap

Ayrıca (bu web sunucusu varsayarak) yapılandırma dosyasını Apache kullanarak bir dizin başına temelinde kolayca yapabilirsiniz (httpd.conf)

<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend"
</Directory>

Eğer aynı şekilde tamamen kısıtlamayı kaldırabilirsiniz

<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir none
</Directory>

(':'; 'pencerelerinde ya da yolunu ayırıcı kullanarak çeşitli yolları belirtebilirsiniz) sizin open_basedir direktifi (/ var / www / vhosts / biralan.tld / zend) erişmek için gereken yolları eklemek

open_basedir'dan değerler / var / www / vhosts / biralan.tld / zend altında bir şey erişilebilir olacağı anlamına gelir, önek unutmayın

Plesk Panel'de (ex: 1and1) Eğer PHP paneli ayarlarını yapabilirsiniz:

enter görüntü açıklaması here

burada:

enter görüntü açıklaması here