Best practice per i file di configurazione in un sito Web

3

Sto creando qualcosa di simile a un Content Management System , che può essere scaricato e utilizzato da chiunque ne abbia bisogno. Ho lavorato nello sviluppo web per un paio d'anni (principalmente come hobby, cioè creando home page personali per conoscenti), ma non ho mai avuto la necessità di un utente di inserire le sue configurazioni personali (lascia che sia la connessione al database, meta -data sul suo sito, comportamento desiderato del sito web).

Pertanto non ho esperienza con la gestione dei file di configurazione personalizzata. Ecco dove si trova la mia domanda: qual è la migliore pratica per gestire file di configurazione personalizzati per tutto il sito e gestirli in PHP?

Ho pensato di creare file INI, che possono essere personalizzati all'interno del pannello di amministrazione e che sono nascosti all'utente da .htaccess per motivi di sicurezza. Tuttavia non so se INI è il metodo migliore per farlo considerando che la pagina è in fase di sviluppo per essere estendibile tramite plugin (che potrebbe portare presto a un'altra domanda).

Quindi qual è la mia scommessa migliore per gestire la configurabilità? Ad esempio, voglio archiviare la configurazione del database nei file in qualche modo e ho altre configurazioni esternalizzate al database stesso? Oppure memorizzo tutto in file INI (considerando anche la configurabilità per i plugin: tutti questi hanno il proprio file di configurazione)?

    
posta Padarom 25.04.2014 - 12:24
fonte

3 risposte

4

Hai esaminato altri CMS e come hanno affrontato il problema?

Ad esempio, la configurazione Drupal risponde a tutte le tue esigenze attuali e mostra un modo possibile per non essere limitato dai vincoli di INI.

Potresti anche prendere in considerazione:

  • File PHP ordinari (pros: semplice, nessun parser necessario, contro: l'utente finale può avvitare il file e interrompere l'intera app),
  • INI (pro: ancora semplice, contro: la struttura piatta è limitante),
  • XML (pro: nessun limite di INI; contro: non user-friendly, troppo markup),
  • JSON (pros: meno markup rispetto a XML; contro: ancora non user-friendly),
  • YAML (pro: umanamente leggibile, contro: l'utente finale può ancora rovinare la struttura),
  • Pagina personalizzata che consente all'utente di configurare ogni aspetto dell'applicazione tramite l'interfaccia web (pro: user-friendly, contro: il costo eccessivo di sviluppo della soluzione).

Se lavori con utenti finali che non hanno uno sfondo tecnico, l'ultima soluzione è l'unica valida.

Applicazioni come PHPBB mostrano come creare una configurazione in due passaggi: quando l'applicazione viene eseguita per la prima volta, esegue setup.php che richiede la stringa di connessione, la password di root, ecc. Una volta installata l'app, l'amministratore può accedere per accedere al pannello di amministrazione.

    
risposta data 25.04.2014 - 12:48
fonte
1

Ci sono diverse configurazioni per qualsiasi applicazione web decente. Alcuni di essi devono essere archiviati nel file system, perché al momento dell'inizializzazione non si ha accesso a Archiviazione dati , a meno che non si esegua un hard-code all'interno del codice sorgente.

Puoi archiviare quelle configurazioni che sono per lo più impostazioni di connessione e codifica del database in qualsiasi formato che possa essere successivamente inserito nella tua applicazione.

Un file INI è buono perché è semplice. Quindi, se un utente non tecnico deve andare e modificare manualmente la configurazione, è meno probabile che lo abbiano interrotto, tuttavia c'è un sovraccarico molto piccolo in termini di analisi. I file INI sono uno dei metodi più comuni per la memorizzazione dei dati di configurazione.

Un'altra opzione è utilizzare JSON per memorizzare i dati. In questo caso sarà più difficile modificare manualmente il file, tuttavia JSON è un tipo stabilito come metodo standard per gestire i dati. Ciò significava essere così in effetti.

Un file PHP contenente qualsiasi forma di codice PHP valido potrebbe essere un'altra opzione. Puoi definire le tue opzioni come Costanti e poi avrai tutte queste cose nell'ambito globale - potrebbe essere una buona cosa in fase di sviluppo o un potenziale buco di sicurezza nella produzione, specialmente se sei consentendo l'inclusione di codice di terze parti da parte dell'utente nella propria applicazione.

Una matrice di impostazioni PHP o una stringa serializzata di un array sono altre opzioni. Puoi avere anche un'istanza della tua classe di configurazione, all'interno del tuo file di configurazione, che potrebbe fornire anche funzionalità extra.

Dopo aver inizializzato l'applicazione, è possibile connettersi all'archiviazione dei dati e caricare o archiviare il resto del lavoro, cosa che è più conveniente per la maggior parte dei casi.

P.S. Esistono dozzine di altri formati come XML , ecc. Che puoi usare come modo per memorizzare la configurazione dell'applicazione, ma sono quasi gli stessi di JSON e File INI in termini di spiegazione, quindi non ho intenzione di elencarli tutti. Dovresti infine scegliere un formato che sia più adatto per il tuo utente finale o offrirgli un paio di modi e lasciare che scelgano come vogliono archiviare la configurazione - So che sembra un eccesso, ma in alcuni progetti è necessario supportare diversi formati.

    
risposta data 25.04.2014 - 12:51
fonte
0

Il popolare CMS come Wordpress memorizza la sua configurazione del database con poche opzioni di configurazione di base nel file php chiamato config.php e riposa tutto nel database.

Questo metodo è molto efficace se vuoi memorizzare singole e multiple configurazioni alle quali potresti pensare come per theames, plug-in, lingue, ecc.

Anche la modifica del file di configurazione php con costanti può essere altrettanto intuitiva di un altro file INI di testo se scritto così.

Dovrai identificare quali impostazioni possono andare nel file di configurazione e altre nel database.

    
risposta data 03.05.2014 - 17:13
fonte