Ok, I understand what you are saying. Your replies where helpful in that I now 
know what workaround options I have.

I agree this is ultimately a more general rcctl(8) or rc(8) issue. And I don’t 
have any ideas on how to improve that.

But given that a somewhat high level interface such as rcctl(8) exists, I feel 
editing the low level /etc/rc.conf.local directly is much more fragile. (And I 
shudder when I hear vi — but let’s not start a discussion/war about editor 
preferences.) But that all comes down to personal preference I guess.


Thanks!
Mike

> Am 10.07.2023 um 16:31 schrieb Stuart Henderson <s...@spacehopper.org>:
> 
> On 2023/07/10 15:57, Mike Fischer wrote:
>>>> (Note: I know this could be further reduced to just one master process for 
>>>> each version with a chroot(2) and a non-chroot(2) pool defined in the 
>>>> single php-fpm.conf for each PHP version. But that is irrelevant to the 
>>>> issue at hand.)
>>> 
>>> Actually I think that is relevant. At least, if you just had one running
>>> php-fpm daemon per version, you totally avoid the problem.
>> 
>> That would only solve the chroot/non-chroot problem, not the multiple 
>> versions of PHP. If you want, then just reduce my issue to one web server 
>> (either one). Then this is indeed irrelevant as I stated.
> 
> It absolutely does solve the multiple versions of PHP problem, I use it
> exactly that way.
> 
>>> With a single daemon per version, remove the extra added phpXX_fpm
>>> copies, instead follow the suggestion after "If you need to run multiple
>>> versions of PHP on one machine" in php's pkg-readme.
>> 
>> Actually that is effectively what I did.
>> Ok to be fair the strict pkg-readme method would store the config file paths 
>> in /etc/rc.conf.local which means the scripts in /etc/rc.d/ do not need to 
>> be modified. That does help with the update issue but then I loose my 
>> settings when I disable and later re-enable the service. So it opens another 
>> issue.
> 
> Putting the daemon flags in rc.conf.local is the key to it.
> 
> The "lose settings when disabling and re-enabling" is an rcctl
> limitation, and affects everything not just php. You can however
> add/remove phpXX_fpm from the pkg_scripts line yourself i.e.
> not use rcctl(8) for that part..
> 
> (IIRC the reason for that in the first place is because base daemons
> use xxx_flags=NO so there would be no way to "save" the old flags when
> disabling them, and generally base+pkg daemons should be treated the
> same)..
> 
>>>> 2) Would it make sense to include the more specific pexp in the PHP ports? 
>>>> (I don’t think doing so would hurt the default use case, but maybe I’m 
>>>> overlooking something?)
>>> 
>>> This is a bit awkward to do; the rc script would then need to
>>> parse the phpXX_fpm_flags variable and figure out what string php-fpm
>>> will use when it sets the process name (i.e. look for -y or --fpm-config
>>> and parse them the same way that php-fpm itself does).
>> 
>> No not really. Just adding »/etc/php-fpm.conf.*« to the pexp in the default 
>> rc.d script for the PHP version works for all versions of php-fpm and solves 
>> the problem. E.g.:
>> pexp="php-fpm-8.2: master process .*/etc/php-fpm.conf.*“
> 
> That breaks my use case (which is also the use case suggested in the
> pkg-readme, so others probably use it too):
> 
> $ pgrep -lf php.*process
> 65701 php-fpm-8.0: master process (/etc/php-fpm-8.0.conf)
> 28288 php-fpm-8.2: master process (/etc/php-fpm.conf)
> 
>>> Though the existing pexp is slightly less flexible, IMHO it's enough for
>>> most use cases, and it doesn't really seem worth the extra fragility to
>>> do this differently.
>> 
>> Is my suggestion really more fragile?
> 
> Yes, because you need to parse the command-line string from
> phpXX_fpm_flags to figure out how the process string will look,
> i.e. what config filename is used.
> 
>> Is there any chance the default install would not use /etc/php-fpm.conf as 
>> the php-fpm config file?
> 
> Yes, if someone sets phpXX_fpm_flags.
> 
>> Ok, I do see that someone strictly using the pkg-readme method would run 
>> into issues as the matched pattern would not always match the the manually 
>> configured config file. So I guess I’m left with the strict pkg-readme 
>> method, /etc/rc.conf.local and the fact that my settings get lost on 
>> disable. Sigh…
>> 
>> Maybe I need to write scripts to enable the services and automatically 
>> restore the settings. Something like:
>> 
>> # cat /root/bin/enable_php74_fpm.sh
>> #!/bin/sh
>> service='php74_fpm'
>> /usr/sbin/rcctl enable "$service" && \
>> /usr/sbin/rcctl set "$service" flags '-c /etc/php-7.4.ini -y 
>> /etc/php-fpm-74.conf'
>> # EOF.
>> # cat /root/bin/enable_php80_fpm.sh
>> #!/bin/sh
>> service='php80_fpm'
>> /usr/sbin/rcctl enable "$service" && \
>> /usr/sbin/rcctl set "$service" flags '-c /etc/php-8.0.ini -y 
>> /etc/php-fpm-80.conf'
>> # EOF.
>> # cat /root/bin/enable_php81_fpm.sh
>> #!/bin/sh
>> service='php81_fpm'
>> /usr/sbin/rcctl enable "$service" && \
>> /usr/sbin/rcctl set "$service" flags '-c /etc/php-8.1.ini -y 
>> /etc/php-fpm-81.conf'
>> # EOF.
>> # cat /root/bin/enable_php82_fpm.sh
>> #!/bin/sh
>> service='php82_fpm'
>> /usr/sbin/rcctl enable "$service" && \
>> /usr/sbin/rcctl set "$service" flags '-c /etc/php-8.2.ini -y 
>> /etc/php-fpm-82.conf'
>> # EOF.
>> # 
> 
> honestly I would just "vi /etc/rc.conf.local" to disable/enable by
> adding or removing from the pkg_scripts line...



Reply via email to