Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Definire il livello di error_reporting() in un file di configurazione

    Ciao a tutti,
    vorrei riuscire a definire il valore di error_reporting() in un file di configurazione esterno allo script ed in formato *.ini, ad esempio:

    codice:
    ...
    error_reporting = "E_ALL"
    ...
    dbHost = "127.0.0.1"
    dbUser = "root"
    dbPsw = "root"
    Tale file viene poi letto e mediante la funzione parse_ini_file() viene creato un array associativo.

    A questo punto vorrei fare qualcosa di simile:
    codice:
    error_reporting($configurazione['error_reporting']);
    Tutto ciò però non funziona dato che quella che dovrebbe essere una costante si rivela in verità essere una semplice stringa di testo dopo questi passaggi (penso).

    Come posso risolvere mantenedo un'impostazione simile?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    innanzitutto COME scrivi i valori e COME leggi il file..
    per una corretta interpretazione sia con php4 che con php5 ti consiglio una struttura del genere:

    config.ini
    codice:
    [CONFIG]
    
    ...
    error_reporting="E_ALL";
    ...
    max_input_size = "8MB";
    nota che TUTTI i parametri devono essere definiti in doppi apici

    per il parsing e relativi settaggi

    Codice PHP:
    $iniparse_ini_file('config.ini',true);

    foreach (
    $ini['CONFIG'] as $key=>$valueini_set($key,$value); 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Purtroppo anche utilizzando ini_set() non funziona.

    Il parsing del file di configurazione non dà problemi, infatti l'istruzione
    codice:
    echo $configurazione['error_reporting']);
    stampa effettivamente a video la stringa impostata nel file ini ma, mentre ini_set('error_reporting', E_ALL) dà i risultati sperati ini_set('error_reporting', $configurazione['error_reporting']) ha lo stesso risultato di error_reporting(0).

    La mia impressione è che il valore impostato nel file ini venga poi interpretato come una stringa e non come il nome di una costante.. e direi anche gustamente ma non so trovare la strada corretta..

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    codice utilizzato??
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Casse Configuration
    codice:
    class Configuration extends Singleton {
    		private $configurationValues = array();
    		
    		protected function __construct($args = null) {
    			
    			$this->configurationValues = parse_ini_file($args['configurationFile']);
    		}
    		
    		public static function getInstance($args = null){
    			return parent::getInstance(get_class(),$args);
    		}
    		
    
    		public function setValue($key,$value){
    			$this->configurationValues[$key] = $value;
    		}
    		
    
    		public function getValue($key){
    			return $this->configurationValues[$key];
    		}
    	}
    Frammento di codice in cui viene usata:
    codice:
    $cfg = Configuration::getInstance(array('configurationFile' => 'cfg.ini'));
    
    //Non funziona
    error_reporting($cfg->getValue('error_reporting'));
    
    //Non funziona
    ini_set('error_reporting', $cfg->getValue('error_reporting'));
    
    //Funziona
    echo $cfg->getValue('error_reporting');

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    prova anzichè
    Codice PHP:
            public static function getInstance($args null){
                return 
    parent::getInstance(get_class(),$args);
            } 
    con

    Codice PHP:
            public static function getInstance(null,$args null){
                return 
    parent::getInstance(get_class(),$args);
            } 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    Ciao,
    ti assicuro che il problema non è dovuto alla classe Configuration dato che tutti i valori presenti nel file ini vengono correttamente letti.

    Il problema sta nel fatto che $this->configurationValues['error_reporting'] contiene una stringa (ad esempio "E_ALL") e non il valore rappresentato dalla costante E_ALL.
    Purtroppo però non so come far interpretare una stringa di caratteri come il nome di una costante e non come un normale stringa.

    La soluzione semplice e funzionante è quella di inserire nel file ini non la costante ma il suo valore numerico; in tal modo si perde però portabilità e compatibilità con le future versioni di php, cosa che vorrei evitare.



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.