Come posso configurare i file php.ini per sito su un server LAMP usando NameVirtualHosts?


10

Ho un server LAMP che serve un numero di siti Web diversi usando NameVirtualHosts .

Fino a poco tempo fa avere un file php.ini globale andava bene, ma recentemente uno dei nostri sviluppatori ha richiesto alcune impostazioni in php.ini che preferirei non impostare a livello globale.

Sono abbastanza sicuro di aver sentito che puoi configurare i file php.ini su una base per sito , ma non so come fare.

Qualcuno può indicarmi la giusta direzione su come realizzare questo?

Risposte:


14

La maggior parte delle impostazioni che inseriresti nel tuo php.ini possono anche essere inserite in un .htaccess o nella configurazione di apache per quel sito. Ad esempio uno dei miei host virtuali ha questo nel .htaccess

    php_value display_errors 1
    php_value register_globals 0
    php_value short_open_tag 0
    php_value magic_quotes_runtime 0
    php_value magic_quotes_gpc 0
    php_value session.name "PHPSESSID_SITEBLAH"
    php_value session.gc_maxlifetime 57600
    php_value session.gc_probability 1
    php_value session.gc_divisor 500

Questo non sembra funzionare per me. Esiste una sorta di direttiva che deve essere impostata nel master php.ini per consentire ciò?
Brent,

1
"AllowOverride Options" o "AllowOverride All" devono essere impostati nella configurazione di APache affinché funzioni.
StackKrish,

Ad esempio, i valori apache.confsovrascriverebbero quelli nel php.inifile o viceversa?
puk

7

Puoi anche specificare le impostazioni di configurazione nel file di configurazione di Apache (httpd.conf / apache.conf). Nel tuo caso puoi specificare i valori di configurazione nel contesto.

L'esempio seguente dovrebbe impostare upload_max_filesize su 10M per l'host virtuale example.com.

<VirtualHost *>
    ServerName example.com
    DocumentRoot /path_to_docroot
    php_value upload_max_filesize 10M
    php_admin_flag allow_url_fopen on
</VirtualHost>

Se non si desidera impostare questo valore per l'intero sito, ma su una directory particolare in cui risiede l'applicazione, è possibile specificare i valori in a.

<VirtualHost *>
   ServerName example.com
   DocumentRoot /path_to_docroot
  <Location /testApp/>
     php_value upload_max_filesize 10M
     php_admin_flag allow_url_fopen on
  </Location>
</VirtualHost>

Vedi http://php.net/manual/en/configuration.changes.php per ulteriori spiegazioni.


+1 Stranamente, nient'altro ha funzionato. Htaccess locale, file php ini, nessuno di questi ha funzionato.
boot13,

Grazie! Forse qualcuno si imbatte nel problema che i parametri di mod-security devono essere sovrascritti. Funziona solo a livello di vhost e non a livello DIRECTORY o LOCATION. Il motivo è che mod-sec viene configurato prima della lettura delle directory o dei blocchi di posizione.
ora-600,

1

Un altro suggerimento è usare mod-fastcgi o mod-fcgi, che eseguono PHP come demone autonomo separato. Quindi, per ogni sito Web, è possibile definire un utente separato e un file di configurazione php.ini.


1

Un'altra opzione è suPHP che consente di definire un php.ini per ciascun VirtualHost. Inoltre, consente di specificare una versione di PHP per ciascun VirtualHost.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.