pengaturan php.ini berbeda untuk berbagai virtualhost (php-fpm)

11

Saya mencari allot di serverFault dan menemukan solusi ini ...

Termasuk ini di virtual host harus berfungsi:

  php_admin_flag register_argc_argv = On
  php_value max_execution_time = 1000
  php_value session.gc_maxlifetime = 15000
  php_admin_flag magic_quotes_gpc = on

Tapi saya sadar, saya tidak menggunakan mod_php sama sekali. Saya sudah menginstal php-fpm. Dan saya benar-benar tidak dapat menemukan informasi apa pun jika metode saya akan berhasil, atau jika ada cara alternatif ...

Jadi, apa yang harus saya lakukan jika saya memiliki php-fpm dan ingin memiliki pengaturan yang berbeda untuk virtualhost?

S.


sumber
Mengapa Anda pernah ingin kutipan sihir? Itu jahat.
Nathan C
@NathanC Saya tahu, tetapi penulis naskah bahkan cukup kasar untuk memberi tahu saya: "Ya semua persyaratan diperlukan, itu sebabnya mereka adalah persyaratan."
Kalau saja mungkin untuk memecat penulis skrip itu.
Nathan C
@NathanC ya, saya benci pengembang sombong :) hanya jika saya punya waktu, saya akan mengembangkannya sendiri: S
Ya da opp 0pu66996 9 6 79
sbrattla

Jawaban:

8

Pada php-fpm, Anda biasanya mengatur ini di kumpulan fpm domain. Kolam disertakan dari conf-file utama php-fpm, yang terletak di server saya di /etc/php/fpm-php5.3/php-fpm.conf:

...

;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ; 
;;;;;;;;;;;;;;;;;;;;

include=/var/www/*/conf/fpm-pool.conf

Di fpm-pool-config, Anda dapat mengatur php_admin_flagdan php_admin_valuemenyukai ini:

...

;   php_value/php_flag             - you can set classic ini defines which can
;                                    be overwritten from PHP call 'ini_set'. 
;   php_admin_value/php_admin_flag - these directives won't be overwritten by
;                                     PHP call 'ini_set'
php_flag[display_errors]            = on
php_admin_value[error_log]          = /var/www/cloud/logs/php_err.log
php_admin_flag[log_errors]          = on
php_admin_value[memory_limit]       = 1024M
#php_value[max_execution_time]       = 30
php_admin_value[upload_max_filesize] = 4G
php_admin_value[post_max_size]      = 4.2G
php_admin_value[max_input_time]     = 3600
php_admin_value[max_execution_time] = 3600
etagenklo
sumber
4

Saya memiliki server yang haus RAM dan ingin menghindari mengonfigurasi beberapa kumpulan untuk setiap situs dengan lalu lintas rendah yang saya jalankan. Saya juga tidak suka masalah keamanan .user.ini berbasis direktori, jadi saya menerapkan solusi berbeda menggunakan "bagian" php.ini:

http://php.net/ini.sections

Anda dapat mendefinisikan bagian-bagian dari php.ini (dalam kasus saya, /etc/php5/fpm/php.ini) yang merupakan path, atau host, spesifik. Di bagian bawah, saya punya:

[HOST=host1.example.com]
auto_prepend_file = '/var/www/something'

[HOST=host2.example.net]
upload_max_filesize = 5M

Saya membaca di tempat lain bahwa jika Anda menggunakan metode host, Anda harus menggunakan nilai spesifik yang didefinisikan di ServerName di konfigurasi VirtualHost, bukan alias.

PS Ini semua dilakukan pada Debian Jessie 8.4

jaydisc
sumber
1

Anda dapat menyertakan flag-flag ini dalam file .htaccess di bawah setiap host virtual yang Anda inginkan. Lihat: http://www.php.net/manual/en/configuration.file.per-user.php

Nathan C
sumber
1
Bukankah ini hanya mungkin dengan mod_php? Saya sudah menginstal php-fpm.
Dari apa yang saya baca, ini adalah metode untuk mencapainya dengan php-fpm. mod_php memungkinkan arahan berada di httpd.conf Anda.
Nathan C
0

Untuk nginx gunakan solusi ini:

Karena PHP 5.3.3Anda dapat menggunakan perintah ini di nginx-vhost-file Anda.

Contoh untuk mengatur maxlifetimesesi:

server {
    listen 80;
    listen [::]:80;

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}
Nama kode
sumber