NameVirtualHosts kullanarak bir LAMP sunucusunda site başına php.ini dosyalarını nasıl ayarlarım?


10

NameVirtualHosts kullanarak birkaç farklı web siteleri sunan bir LAMP sunucusu var .

Yakın zamana kadar küresel bir php.ini dosyasına sahip olmak gayet iyi, ama son zamanlarda geliştiricilerimizden biri php.ini'de küresel olarak ayarlayamayacağım bazı ayarlar istedi.

Php.ini dosyalarını site bazında ayarlayabileceğinizi duydum ama bunu nasıl yapacağımı bilmiyorum.

Birisi bana bunu nasıl başaracağımı doğru yönde gösterebilir mi?

Yanıtlar:


14

Php.ini dosyasına yerleştireceğiniz ayarların çoğu .htaccess veya o sitenin apache yapılandırmasına da yerleştirilebilir . Örneğin, sanal ana bilgisayarlarımdan birinde .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

Bu benim için işe yaramıyor. Buna izin vermek için master php.ini dosyasında ayarlanması gereken bir tür yönerge var mı?
Brent

1
Bunun çalışabilmesi için APache yapılandırmasında "AllowOverride Options" veya "AllowOverride All" seçeneklerinin ayarlanması gerekir.
StackKrish

Örneğin, değerler dosyanızdaki değerlerin apache.confüzerine php.inimi yoksa başka bir şekilde mi yazılır ?
puk

7

Ayrıca yapılandırma ayarlarını Apache yapılandırma dosyasında da belirleyebilirsiniz (httpd.conf / apache.conf). Sizin durumunuzda, bağlam içindeki yapılandırma değerlerini belirleyebilirsiniz.

Aşağıdaki örnek, example.com sanal ana bilgisayarı için upload_max_filesize değerini 10M olarak ayarlamalıdır.

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

Bu değeri sitenin tamamı için değil, uygulamanın yaşadığı belirli bir dizine ayarlamak istiyorsanız, a içindeki değerleri belirleyebilirsiniz.

<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>

Daha fazla açıklama için bkz. Http://php.net/manual/en/configuration.changes.php .


+1 Tuhaf bir şekilde, başka hiçbir şey işe yaramadı. Yerel htaccess, php ini dosyaları, bunların hiçbiri işe yaramadı.
çizme13

Teşekkürler! Belki birisi mod-güvenlik parametrelerinin üzerine yazılması gerektiği sorunuyla karşılaşır. Bu, yalnızca DIRECTORY veya LOCATION düzeyinde değil, hayalet düzeyinde çalışır. Bunun nedeni, mod-sec'in dizinler veya konum blokları okunmadan önce yapılandırılmış olmasıdır.
ora-600

1

Başka bir öneri, PHP'yi ayrı bir bağımsız daemon olarak çalıştıran mod-fastcgi veya mod-fcgi kullanmaktır. Ardından, her web sitesi için ayrı bir kullanıcı ve php.ini yapılandırma dosyası tanımlayabilirsiniz.


1

Yine başka bir seçenektir suPHP'ye her VirtualHost için php.ini tanımlamanızı sağlar. Ayrıca her VirtualHost için bir PHP sürümü belirtmenize izin verir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.