Php.ini Can ayarları PHP + ııs6 kullanarak bir web sitesi tarafından geçersiz olabilir mi?

6 Cevap php

Biz PHP 5.2.6 c dağıtılmış olması: \ php ve bu klasördeki php.ini dosyası yok. Windows'ta, bir web sitesi apache. Htaccess olduğunu benzer şekilde bu ayarları geçersiz kılabilirsiniz? örneğin

DirectoryIndex index.php index.html
<IfModule mod_php5.c>
php_flag magic_quotes_gpc off
  php_flag register_globals off
</IfModule>
<IfModule mod_php4.c>
  php_flag magic_quotes_gpc off
 php_flag register_globals off
</IfModule>

Update:

Ben ini_set farkındaydı () değil komut daha web sitesinde bir yapılandırma dosyasında bu yapmak için bir bildirge yolu olup olmadığını merak etti.

6 Cevap

Ben r değişen önlemek için elinizden geleni yapıyor tavsiye ederim egister_globals için bu büyük bir güvenlik delik olduğu gibi.

PHP koşmaya başladı sonra bazı ayarlar değiştirilemez olsa Ama sen, init_set() PHP kodu içinde ayarlarını değiştirmek için kullanmayı da deneyebilirsiniz. (Bu sanırım biraz sunucu bağlıdır.)

Sen php.ini dosyası birkaç yönden direktifleri kılabilirsiniz, ancak tüm direktifler her yöntemi ile değiştirilebilir. Her biri üzerinde çalışacak direktifleri ve yöntemlerinin listesi için kılavuzda php.ini directives sayfasına bakınız.

Tablodaki son sütun, söz konusu yöntem üzerinde çalışacak yöntemlerini listeler. Erişim düzeyi artan:

  • PHP_INI_USER - Can be set in user scripts with ini_set() (or any higher method)
  • PHP_INI_PERDIR - Can be set using the .htacess file with php_value for string values or php_flag for binary values (or any higher method)
  • PHP_INI_SYSTEM - Can be set using php.ini or httpd.conf only (both require access to the server's configuration files)
  • PHP_INI_ALL - Can be set using any of the above methods

ini_set sonra konum ne yapmalıyım -

$option = 'magic_quotes_gpc';
echo "Value of $option => ", ini_get($option);
ini_set($option,0);
echo "New value of $option => ", ini_get($option);

Burada bir uyarı sadece çalışma zamanında değerini ayarlayabilirsiniz çünkü, örneğin, beklendiği gibi çalışır anlamına gelmez ki o ayar zaten script başlar zaman işi yaptığı gibi zamanında register_globals ayarı az kullanım olacaktır.

I just found a new way of doing this. First of all, I used phpinfo() to find the PHP.ini being used by my Hosting provider.

Bundan sonra, benim Hosting alana aşağıdaki kodu içeren bir dosya yüklendi:

    $fsrc = fopen($pathToIni,'r');
    $fdest = fopen($myHostingDir,'w+');
    $len = stream_copy_to_stream($fsrc,$fdest);
    fclose($fsrc);
    fclose($fdest);
    echo $len;

Bu etkili benim Hosting alana php.ini kopyalanan. Bundan sonra, ben, o php.ini indirilen (Ben bütün bu yaptığı için) kapalı register_globals değişti ve benim Hosting alanı köküne yükledi. Bingo, oraya gitmek.

Ben IIS bir dizinde mevcut tam php.ini eğer kullandığı gerçeğine dayanıyordu. Sen Apache. Htaccess kullanarak gibi sadece belirli ayarları geçersiz kılamaz.

Cgi ortamlarda, htscanner adlı bir modül vardır. Bu temelde. Htaccess davranışı sahte ve dizin yapılandırmaları başına sağlar. Ne yazık ki hiçbir Windows üzerinde bu deneyimi şöyle dursun, IIS6 ile var.

Dan http://us.php.net/configuration.changes:

Changing PHP configuration via the Windows registry

Windows üzerinde PHP çalışırken, yapılandırma değerleri Windows kayıt defterini kullanarak bir dizin başına bazında değiştirilebilir. Yapılandırma değerleri yol adları karşılık alt anahtarları, Dizin Değerler Başına kayıt defteri anahtarı HKLM \ SOFTWARE \ PHP \ saklanır. Örneğin, dizin c için yapılandırma değerleri: \ inetpub \ wwwroot Dizini Değerler \ c \ inetpub \ wwwroot Başına anahtarı HKLM \ SOFTWARE \ PHP \ içinde saklanır. Dizinin ayarlar bu dizinde veya onun herhangi bir alt çalışan herhangi bir komut dosyası için aktif olacaktır. Anahtarının altında değerler PHP yapılandırma yönergesinin adını ve dize değeri olmalıdır. Değerler PHP sabitleri çözümlenmez. Ancak, PHP_INI_USER değişebilir yapılandırma değerleri PHP_INI_PERDIR değerleri olamaz, bu şekilde ayarlanabilir.

Aslında ... Henüz bu denemedim, bu yüzden sizin kilometre değişebilir.