Ne php.ini ve bir PHP dosyası arasındaki include_path değiştirebilirsiniz

3 Cevap apache

Ben kurulum değil mi bir sistemde bazı kod devralınan ve PHP yolu ayarlanır ediliyor dahil nerede izini bir sorun haline çalıştırıyorum.

Ben aşağıdaki include_path ile bir php.ini dosyası var

 include_path = ".:/usr/local/lib/php"

Ben şu Phpinfo çağrısı ile test.php adında webroot bir PHP dosyası var

 <?php
      phpinfo();

Ben Phpinfo çağrı bir göz attığımızda, include_path yerel değerleri geçersiz ediliyor

                 Local Value                                        Master Value
 include_path    .;C:\Program Files\Apache Software Foundation\     .:/usr/local/lib/php
                 Apache2.2\pdc_forecasting\classes

Ayrıca, php.ini dosyaları ek gösterir. Ini dosyalarını takılıyken olmak

Configuration File (php.ini) Path           /usr/local/lib
Loaded Configuration File                   /usr/local/lib/php.ini
Scan this dir for additional .ini files     (none)
additional .ini files parsed                (none)

Yani, benim soru php.ini ve idam / yorumlanıyor gerçek php kodu arasındaki include_path geçersiz olabilir, standart PHP sistemi (bazı PEAR kütüphaneleri dahil) başka, ne olduğunu.

3 Cevap

PHP yollardan Outisde

ini_set( 'include_path', 'new/path' );
// or
set_include_path( 'new/path' );

auto_prepend_file aracılığıyla bir PHP dosyasında yüklü olabilir ki, bir .htaccess dosya de bunu yapabilirsiniz

phpvalue include_path new/path

Orada garip sonuçlar alıyorsanız çeşitli nedenleri vardır.

  • include_pathdaki yere php kod geçersiz. O set_include_path() çağrısı içerip kodunuzu kontrol edin. Bu fonksiyon ile özelleştirebilirsiniz yolunu içerir. Eğer akım yolunu korumak istiyorsanız, sadece bir dizeyi bağlamak . PATH_SEPARATOR . get_include_path()
  • include_pathdaki .htaccess dosyasında geçersiz. Herhangi bir php_value veya php_flag direktifleri tehlikeli yolları ekleyerek olup olmadığını kontrol edin
  • php yorumlayıcısı standart dışı yapılandırma dosyası. Bu php süreci özel geçti php.ini dosya ile başlatılmış olduğunu, ancak mümkündür, çok düşüktür. Beklenen konumu ne olduğunu görmek için web sunucusu kurulum ve / veya php dağılımını kontrol php.ini. Belki yanlış bir bakıyoruz.

Bir .htaccess dosya veya Apache yapılandırma (httpd.conf) da sorumlu olabilir.

Aşağıdaki gibi görünüyor şey kontrol edin:

php_value include_path something

Burada bu davranış hakkında daha fazla bilgi:

PHP: How to change configuration settings


Diğer seçeneği kullanımı olacaktır ini_set() or set_include_path() somewhere, but considering that your test.php sadece içerir phpinfo() (and assuming that test.php), doğrudan denir, Ben o senin sorunun şüpheliyim.