[PATCH] services: php-fpm: Add 'php-ini-file' configuration.

  • Done
  • quality assurance status badge
Details
3 participants
  • Jelle Licht
  • Jonathan Brielmaier
  • Ludovic Courtès
Owner
unassigned
Submitted by
Jelle Licht
Severity
normal
J
J
Jelle Licht wrote on 25 May 2020 18:48
(address . guix-patches@gnu.org)
20200525164845.9012-1-jlicht@fsfe.org
* gnu/services/web.scm: (<php-fpm-configuration>)[php-ini-file]: New record field.
(php-fpm-shepherd-service): Use it.
* doc/guix.texi (Web Services): Document it.
---
doc/guix.texi | 4 ++++
gnu/services/web.scm | 10 ++++++++--
2 files changed, 12 insertions(+), 2 deletions(-)

Toggle diff (59 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 3d1b097447..82ea7ae852 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -21370,6 +21370,10 @@ Can be set to @code{#f} to disable logging.
@item @code{file} (default @code{#f})
An optional override of the whole configuration.
You can use the @code{mixed-text-file} function or an absolute filepath for it.
+@item @code{php-ini-file} (default @code{#f})
+An optional override of the default php settings.
+It may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).
+You can use the @code{mixed-text-file} function or an absolute filepath for it.
@end table
@end deftp
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 9fcfe8a0dc..7cc53ef12f 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -159,6 +159,7 @@
php-fpm-configuration-timezone
php-fpm-configuration-workers-log-file
php-fpm-configuration-file
+ php-fpm-configuration-php-ini-file
<php-fpm-dynamic-process-manager-configuration>
php-fpm-dynamic-process-manager-configuration
@@ -857,6 +858,8 @@ of index files."
(version-major (package-version php))
"-fpm.www.log")))
(file php-fpm-configuration-file ;#f | file-like
+ (default #f))
+ (php-ini-file php-fpm-configuration-php-ini-file ;#f | file-like
(default #f)))
(define-record-type* <php-fpm-dynamic-process-manager-configuration>
@@ -963,7 +966,7 @@ of index files."
(match-lambda
(($ <php-fpm-configuration> php socket user group socket-user socket-group
pid-file log-file pm display-errors
- timezone workers-log-file file)
+ timezone workers-log-file file php-ini-file)
(list (shepherd-service
(provision '(php-fpm))
(documentation "Run the php-fpm daemon.")
@@ -974,7 +977,10 @@ of index files."
#$(or file
(default-php-fpm-config socket user group
socket-user socket-group pid-file log-file
- pm display-errors timezone workers-log-file)))
+ pm display-errors timezone workers-log-file))
+ #$@(if php-ini-file
+ `("-c" ,php-ini-file)
+ '()))
#:pid-file #$pid-file))
(stop #~(make-kill-destructor)))))))
--
2.26.2
J
J
Jonathan Brielmaier wrote on 25 May 2020 19:11
(address . guix-patches@gnu.org)
bd654bb7-577a-9e9f-53c8-1f4ca8439360@web.de
Nice Jelle!

On 25.05.20 18:48, Jelle Licht wrote:
Toggle quote (23 lines)
> * gnu/services/web.scm: (<php-fpm-configuration>)[php-ini-file]: New record field.
> (php-fpm-shepherd-service): Use it.
> * doc/guix.texi (Web Services): Document it.
> ---
> doc/guix.texi | 4 ++++
> gnu/services/web.scm | 10 ++++++++--
> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 3d1b097447..82ea7ae852 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -21370,6 +21370,10 @@ Can be set to @code{#f} to disable logging.
> @item @code{file} (default @code{#f})
> An optional override of the whole configuration.
> You can use the @code{mixed-text-file} function or an absolute filepath for it.
> +@item @code{php-ini-file} (default @code{#f})
> +An optional override of the default php settings.
> +It may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).
> +You can use the @code{mixed-text-file} function or an absolute filepath for it.
> @end table
> @end deftp

Could you add a small simple example here. I would relaly appreciate it!
J
J
Jelle Licht wrote on 25 May 2020 20:58
[PATCH v2] services: php-fpm: Add 'php-ini-file' configuration.
(address . 41529@debbugs.gnu.org)
20200525185846.19200-1-jlicht@fsfe.org
* gnu/services/web.scm: (<php-fpm-configuration>)[php-ini-file]: New record field.
(php-fpm-shepherd-service): Use it.
* doc/guix.texi (Web Services): Document it.
---
doc/guix.texi | 25 +++++++++++++++++++++++++
gnu/services/web.scm | 10 ++++++++--
2 files changed, 33 insertions(+), 2 deletions(-)

Toggle diff (80 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 3d1b097447..3364b05873 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -21370,6 +21370,31 @@ Can be set to @code{#f} to disable logging.
@item @code{file} (default @code{#f})
An optional override of the whole configuration.
You can use the @code{mixed-text-file} function or an absolute filepath for it.
+@item @code{php-ini-file} (default @code{#f})
+An optional override of the default php settings.
+It may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).
+You can use the @code{mixed-text-file} function or an absolute filepath for it.
+
+For local development it is useful to set a higher timeout and memory
+limit for spawned php processes. This be accomplished with the
+following operating system configuration snippet:
+@lisp
+(define %local-php-ini
+ (plain-file "php.ini"
+ "memory_limit = 2G
+max_execution_time = 1800"))
+
+(operating-system
+ ;; @dots{}
+ (services (cons (service php-fpm-service-type
+ (php-fpm-configuration
+ (php-ini-file %local-php-ini)))
+ %base-services)))
+@end lisp
+
+Consult the @url{https://www.php.net/manual/en/ini.core.php,core php.ini
+directives} for comprehensive documentation on the acceptable
+@file{php.ini} directives.
@end table
@end deftp
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 9fcfe8a0dc..7cc53ef12f 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -159,6 +159,7 @@
php-fpm-configuration-timezone
php-fpm-configuration-workers-log-file
php-fpm-configuration-file
+ php-fpm-configuration-php-ini-file
<php-fpm-dynamic-process-manager-configuration>
php-fpm-dynamic-process-manager-configuration
@@ -857,6 +858,8 @@ of index files."
(version-major (package-version php))
"-fpm.www.log")))
(file php-fpm-configuration-file ;#f | file-like
+ (default #f))
+ (php-ini-file php-fpm-configuration-php-ini-file ;#f | file-like
(default #f)))
(define-record-type* <php-fpm-dynamic-process-manager-configuration>
@@ -963,7 +966,7 @@ of index files."
(match-lambda
(($ <php-fpm-configuration> php socket user group socket-user socket-group
pid-file log-file pm display-errors
- timezone workers-log-file file)
+ timezone workers-log-file file php-ini-file)
(list (shepherd-service
(provision '(php-fpm))
(documentation "Run the php-fpm daemon.")
@@ -974,7 +977,10 @@ of index files."
#$(or file
(default-php-fpm-config socket user group
socket-user socket-group pid-file log-file
- pm display-errors timezone workers-log-file)))
+ pm display-errors timezone workers-log-file))
+ #$@(if php-ini-file
+ `("-c" ,php-ini-file)
+ '()))
#:pid-file #$pid-file))
(stop #~(make-kill-destructor)))))))
--
2.26.2
L
L
Ludovic Courtès wrote on 9 Sep 2020 23:02
(name . Jelle Licht)(address . jlicht@fsfe.org)(address . 41529@debbugs.gnu.org)
87k0x2ll36.fsf@gnu.org
Hi Jelle,

Jelle Licht <jlicht@fsfe.org> skribis:

Toggle quote (4 lines)
> * gnu/services/web.scm: (<php-fpm-configuration>)[php-ini-file]: New record field.
> (php-fpm-shepherd-service): Use it.
> * doc/guix.texi (Web Services): Document it.

It’s been a long time already and I think you can go ahead and push it.

Thank you!

Ludo’.
J
J
Jelle Licht wrote on 10 Sep 2020 09:49
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 41529-done@debbugs.gnu.org)
87sgbqrrzw.fsf@jlicht.xyz
Ludovic Courtès <ludo@gnu.org> writes:
Toggle quote (9 lines)
>
> Jelle Licht <jlicht@fsfe.org> skribis:
>
>> * gnu/services/web.scm: (<php-fpm-configuration>)[php-ini-file]: New record field.
>> (php-fpm-shepherd-service): Use it.
>> * doc/guix.texi (Web Services): Document it.
>
> It’s been a long time already and I think you can go ahead and push it.

pushed as bba0533115df9a31b696ee3782c8054174b955b1 to master.
Closed
?