Bagaimana saya bisa membuat file konfigurasi terpisah untuk php (cli) dan php-fpm pada linux lengkung

10

Apakah mungkin membuat file php.ini terpisah untuk php (cli) dan php-fpm, seperti dimungkinkan pada debian dan ubuntu dengan dua folder /etc/php/7.0/clidan /etc/php/7.0/fpm?

Saya juga akan keren jika saya dapat memuat modul independen dengan conf.ddirektori untuk setiap subsistem.

Adakah yang tahu bagaimana cara mengkonfigurasi secara terpisah?

Saya juga mencoba menggunakan struktur seperti itu dikonfigurasi di ubuntu 16.04 tanpa hasil.

Fiete
sumber

Jawaban:

11

Saya telah menemukan beberapa penyesuaian untuk menyelesaikan masalah saya.

Pertama : memuat php.inifile terpisah :

Seorang pengguna di forum arch linux memposting ini dari man phphalaman:

FILES
   php-cli.ini    The configuration file for the CLI version of PHP.

   php.ini        The standard configuration file will only be used when php-cli.ini cannot be found.

Jika saya membuat /etc/php/php-cli.inifile hanya file ini akan dimuat dan tidak /etc/php/php.inidengan phpperintah cli. php-fpmmasih memuat /etc/php/php.ini.

Kedua : memuat konfigurasi modul yang berbeda:

Saya telah menemukan dalam dokumentasi php yang PHP_INI_SCAN_DIRvariabel lingkungan. Oleh karena itu saya telah memindahkan /usr/lib/systemd/system/php-fpm.servicefile ke /etc/systemd/system/php-fpm.servicedan menambahkan konfigurasi berikut ke file layanan:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
Environment="PHP_INI_SCAN_DIR=/etc/php/fpm/conf.d" ; <-- I have added this line
PIDFile=/run/php-fpm/php-fpm.pid
ExecStart=/usr/bin/php-fpm --nodaemonize --fpm-config /etc/php/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Setelah memulai ulang / memuat kembali layanan, php-fpm hanya memuat file dari /etc/php/fpm/conf.ddan tidak lagi dari /etc/php/conf.d. Ini memungkinkan saya untuk mengkonfigurasi cli dan fpm secara terpisah.

Mungkin ini bukan solusi terbaik tetapi saya cocok untuk penggunaan saya. Jika semua orang memiliki solusi yang lebih baik, jangan ragu untuk mengirimkan jawaban Anda!

Fiete
sumber
1
Pendekatan kedua ini sangat berguna untuk debugging, yaitu Anda membuat salinan suffixed dari layanan php-fpm dan file conf / dirs, tentukan konfigurasi fpm terpisah seperti yang Anda miliki, secara opsional tentukan ini dengan yang berbeda --php-ini, kemudian muat xdebug hanya pada yang kedua layanan. Tentu saja, layanan kedua perlu dijalankan pada port / soket yang berbeda. Saya mengatur Environment="PHP_INI_SCAN_DIR=/etc/php-debugger.d:"dalam file layanan saya, usus besar ditambahkan sehingga memuat semua modul default selain xdebug yang saya salin ke debugger.ddir.
Walf
3

Anda selalu dapat melakukan ini untuk versi cli:

php -c /path/to/your/php.ini

dan biarkan default dengan yang dilayani lebih dari php-fpm. Atau bahkan lebih baik, tambahkan ini ke skrip login Anda

# ~ / .bashrc
# alias dan fungsi pribadi

# Sumber PHP pribadi ini
alias php = 'php -c /path/to/your/php.ini'

# Warnai ls
alias ls = 'ls --color'
...

Akan lebih baik jika Anda telah menyatakan versi yang Anda gunakan

the_architecht
sumber
ide yang bagus, tetapi tidak persis apa yang saya cari. Mungkin kalau tidak ada cara lain. Terima kasih.
Fiete
baik, mungkin ada, tolong bagikan versi apa dari php, php-fpm dan pengaturan dasar Anda (apakah Anda menggunakan nginx, apache dll). Bagaimana Anda mengatur php-fpm. mungkin dari sana, kita bisa membantu
the_architecht