cài đặt php.ini khác nhau cho các máy chủ ảo khác nhau (php-fpm)


11

Tôi đã tìm kiếm phân bổ ở đây trên serverFault và tìm thấy giải pháp này ...

Bao gồm điều này trong máy chủ ảo sẽ hoạt động:

  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

Nhưng hơn tôi đã nhận ra, tôi hoàn toàn không sử dụng mod_php. Tôi đã cài đặt php-fpm. Và tôi thực sự không thể tìm thấy bất kỳ thông tin nào nếu phương pháp của tôi sẽ hoạt động, hoặc nếu có một cách khác ...

Vậy, tôi phải làm gì nếu tôi có php-fpm và muốn có các cài đặt khác nhau cho virtualhost?

S.


Tại sao bạn sẽ không bao giờ muốn báo giá ảo thuật? Đó là những điều xấu xa.
Nathan C

@NathanC Tôi biết, nhưng tác giả kịch bản thậm chí còn thô lỗ nói với tôi: "Có tất cả các yêu cầu là cần thiết, đó là lý do tại sao chúng là yêu cầu."

Giá như có thể sa thải tác giả kịch bản đó.
Nathan C

@NathanC yeah, tôi ghét các nhà phát triển hợm hĩnh :) chỉ khi tôi có thời gian, tôi sẽ tự phát triển nó: S

Có da opp 0pu66996 9 6 79
sbrattla

Câu trả lời:


8

Trên php-fpm, bạn thường đặt cái này trong nhóm fpm của tên miền. Các nhóm được bao gồm từ tệp conf chính của php-fpm, được đặt trên máy chủ của tôi tại /etc/php/fpm-php5.3/php-fpm.conf:

...

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

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

Trong fpm-pool-config, bạn có thể đặt php_admin_flagphp_admin_valuethích điều này:

...

;   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

4

Tôi đã có một máy chủ ngốn RAM và muốn tránh cấu hình nhiều nhóm cho mỗi trang lưu lượng truy cập thấp mà tôi đang chạy. Tôi cũng không thích những lo ngại về bảo mật của .user.ini dựa trên thư mục, vì vậy tôi đã triển khai một giải pháp khác bằng cách sử dụng "phần" php.ini:

http://php.net/ini.sections

Bạn có thể xác định các phần của php.ini (trong trường hợp của tôi, /etc/php5/fpm/php.ini) là đường dẫn hoặc máy chủ lưu trữ cụ thể. Ở phía dưới, tôi có:

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

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

Tôi đọc ở nơi khác rằng nếu bạn sử dụng phương thức lưu trữ, bạn phải sử dụng giá trị cụ thể được xác định trong ServerName trong cấu hình Virtualhost, không phải bất kỳ bí danh nào.

PS Tất cả đã được thực hiện trên Debian Jessie 8.4


1

Bạn có thể bao gồm các cờ này trong tệp .htaccess dưới mỗi máy chủ ảo mà bạn muốn các cài đặt này. Xem: http://www.php.net/manual/en/configuration.file.per-user.php


1
Điều này có thể chỉ với mod_php không? Tôi đã cài đặt php-fpm.

Từ những gì tôi đã đọc, đây là phương pháp để thực hiện nó với php-fpm. mod_php cho phép các chỉ thị có trong httpd.conf của bạn.
Nathan C

0

Đối với nginx sử dụng giải pháp này:

PHP 5.3.3bạn có thể sử dụng lệnh này trong nginxtệp -vhost của mình .

Ví dụ để thiết lập các maxlifetimephiên:

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

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.