การตั้งค่า php.ini ที่แตกต่างกันสำหรับ virtualhost ต่างๆ (php-fpm)


11

ฉันค้นหา allot ที่นี่ใน serverFault และพบวิธีแก้ปัญหานี้ ...

การรวมสิ่งนี้ไว้ในโฮสต์เสมือนควรทำงาน:

  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

แต่กว่าจะเริ่มฉันฉันไม่ได้ใช้ mod_php เลย ฉันติดตั้ง php-fpm แล้ว และฉันไม่พบข้อมูลใด ๆ หากวิธีการของฉันใช้งานได้หรือหากมีวิธีอื่น ...

ดังนั้นฉันจะทำอย่างไรถ้าฉัน php-fpm และต้องการมีการตั้งค่าที่แตกต่างกันสำหรับ virtualhost?

เอส


ทำไมคุณเคยต้องการคำพูดเวทมนตร์? นั่นคือความชั่วร้าย
นาธาน C

@NathanC ฉันรู้ แต่ผู้เขียนสคริปต์ก็หยาบคายมากพอที่จะบอกฉัน: "ใช่ข้อกำหนดทั้งหมดมีความจำเป็นนั่นคือเหตุผลที่พวกเขามีข้อกำหนด"

ถ้าเพียงเป็นไปได้ที่จะยิงผู้เขียนสคริปต์นั้น
นาธาน C

@NathanC ใช่ฉันเกลียดนักพัฒนา snobby :) เฉพาะเมื่อฉันมีเวลาฉันจะพัฒนาตัวเอง: S

ใช่ da opp 0pu66996 9 6 79
sbrattla

คำตอบ:


8

ใน php-fpm คุณมักจะตั้งค่านี้ในพูล fpm ของโดเมน พูลถูกรวมไว้ในไฟล์ conf หลักของ php-fpm ซึ่งตั้งอยู่บนเซิร์ฟเวอร์ของฉันที่/etc/php/fpm-php5.3/php-fpm.conf:

...

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

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

ใน fpm-pool-config คุณสามารถตั้งค่าphp_admin_flagและphp_admin_valueดังนี้:

...

;   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

ฉันมีเซิร์ฟเวอร์ที่หิว RAM และต้องการหลีกเลี่ยงการกำหนดค่าหลายพูลสำหรับแต่ละไซต์ที่มีปริมาณการใช้งานต่ำที่ฉันใช้อยู่ ฉันไม่ชอบข้อกังวลด้านความปลอดภัยของ .user.ini ที่ใช้งานไดเรกทอรีดังนั้นฉันจึงใช้โซลูชันอื่นโดยใช้ php.ini "section":

http://php.net/ini.sections

คุณสามารถกำหนดส่วนของ php.ini (ในกรณีของฉัน /etc/php5/fpm/php.ini) ที่เป็นพา ธ หรือโฮสต์เฉพาะ ที่ด้านล่างฉันมี:

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

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

ฉันอ่านที่อื่นว่าถ้าคุณใช้วิธีโฮสต์คุณต้องใช้ค่าเฉพาะที่กำหนดใน ServerName ในการตั้งค่า VirtualHost ไม่ใช่นามแฝงใด ๆ

ปล. สิ่งนี้ทำกับ Debian Jessie 8.4


1

คุณสามารถรวมการตั้งค่าสถานะเหล่านี้ในไฟล์. htaccess ภายใต้แต่ละโฮสต์เสมือนที่คุณต้องการตั้งค่าเหล่านี้ ดู: http://www.php.net/manual/en/configuration.file.per-user.php


1
เป็นไปไม่ได้ที่ mod_php เท่านั้น ฉันติดตั้ง php-fpm แล้ว

จากสิ่งที่ฉันอ่านนี่เป็นวิธีการที่จะทำให้สำเร็จด้วย php-fpm mod_php อนุญาตให้คำสั่งอยู่ใน httpd.conf ของคุณ
นาธาน C

0

สำหรับ nginx ใช้วิธีนี้:

เนื่องจากPHP 5.3.3คุณสามารถใช้คำสั่งนี้ในnginxไฟล์ -vhost-file ของคุณ

ตัวอย่างสำหรับการตั้งค่าmaxlifetimeของเซสชัน:

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

    ...

    location ~ \.php$ {
        ...

        fastcgi_param PHP_VALUE "session.gc_maxlifetime=604800";
        fastcgi_param PHP_VALUE "session.cookie_lifetime=604800";
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.