From admin at beckspaced.com Mon Sep 7 13:52:44 2026 From: admin at beckspaced.com (Admin Beckspaced) Date: Mon, 7 Sep 2026 15:52:44 +0200 Subject: [horde] IMP attachment upload limit with PHP-FPM and .user.ini In-Reply-To: <3f3112d6-6083-49c5-87ef-5d2167476b73@beckspaced.com> References: <3f3112d6-6083-49c5-87ef-5d2167476b73@beckspaced.com> Message-ID: <1d45c9b3-60a9-4e17-9bd6-8bf065ec511b@beckspaced.com> Hello again, just a small follow-up to my message from yesterday, as I noticed something that might be relevant for diagnosing this issue. On the same server I am also running Roundcube 1.6.16 with the same Apache / proxy_fcgi / PHP-FPM setup. Interestingly, Roundcube behaves exactly as I would have expected with regard to .user.ini. The PHP-FPM php.ini contains the default: upload_max_filesize = 2M For the Roundcube web directory I override the PHP limits via .user.ini, and Roundcube correctly uses these values. Larger attachments can be uploaded without having to define the values as php_admin_value in the PHP-FPM pool configuration. So, on the same server and with the same PHP-FPM setup, the situation is basically: Roundcube 1.6.16: php.ini = 2M .user.ini = higher value -> higher .user.ini value is effective for attachment uploads Horde / IMP: php.ini = 2M .user.ini = 32M -> PHP test script reports 32M -> IMP still rejects attachments above approximately 2 MB -> only setting 32M as php_admin_value in the FPM pool solves it This seems to indicate that .user.ini itself and the Apache/PHP-FPM configuration are working correctly, since Roundcube can use the overridden values without any problem. I thought this comparison might be useful and perhaps helps to narrow down why IMP behaves differently. Greetings Becki Am 06.09.2026 um 11:08 schrieb Admin Beckspaced: > Hello there :) > > I recently migrated my mail server from openSUSE Leap 15.6 to openSUSE > Leap 16.0 and ran into a strange issue with attachment uploads in IMP. > > My current setup is: > >  * > >    openSUSE Leap 16.0 > >  * > >    PHP 8.4.24 > >  * > >    Apache with proxy_fcgi and PHP-FPM > >  * > >    Horde: dev-FRAMEWORK_6_0 (1b16603) > >  * > >    IMP: dev-FRAMEWORK_6_0 (3852464) > >  * > >    Horde Core: 3.3.0 > >  * > >    Horde Browser: 3.0.0 > > Horde is installed via Composer under: > > |/srv/www/horde/httpdocs| > > The active PHP-FPM configuration contained the PHP default: > > |/etc/php8/fpm/php.ini: upload_max_filesize = 2M| > > For the Horde installation I had a |.user.ini| in the web directory > containing: > > |upload_max_filesize = 32M post_max_size = 40M memory_limit = 128M| > > I verified with a PHP test script in the same web environment that PHP > reported these values from |.user.ini| correctly. > > Nevertheless, IMP refused attachments larger than approximately 2 MB > and displayed: > > |Your attachment(s) are too large and cannot be uploaded.| > > IMP itself was configured with: > > |$conf['compose']['link_attachments'] = false; > $conf['compose']['attach_size_limit'] = 0; > $conf['compose']['attach_count_limit'] = 0;| > > According to IMP's |conf.xml|, |attach_size_limit = 0| means that > there is no IMP-specific total attachment size limit. > > As a test I also explicitly set: > > |$conf['compose']['attach_size_limit'] = 33554432;| > > but this made no difference. IMP still rejected attachments larger > than approximately 2 MB. > > I then looked at |Horde_Browser::allowFileUploads()|. As far as I > understand the code, the upload limit is determined from: > > |ini_get('upload_max_filesize') ini_get('post_max_size')| > > with the smaller value being returned. > > What finally solved the problem was setting the limits directly in the > active PHP-FPM pool configuration: > > |/etc/php8/fpm/php-fpm.d/www.conf| > > |php_admin_value[upload_max_filesize] = 32M > php_admin_value[post_max_size] = 40M php_admin_value[memory_limit] = > 128M| > > After restarting PHP-FPM, IMP immediately accepted larger attachments. > I successfully tested uploads with attachments of 4.4 MB and 7.1 MB. > > So the practical problem is solved, but I would like to understand the > reason for this behaviour. > > The interesting point for me is that the PHP-FPM |php.ini| definitely > contained |upload_max_filesize = 2M|, while the |.user.ini| contained > |upload_max_filesize = 32M|. A PHP test script in the Horde web > environment reported the 32M value correctly, but IMP still behaved as > if the 2M value from the FPM |php.ini| was being used. > > Only after setting the same 32M value as |php_admin_value| directly in > the FPM pool did IMP accept larger attachments. > > Is there anything in IMP's dynamic attachment upload handling or in > |Horde_Browser::allowFileUploads()| that could explain why the > |.user.ini| value appeared to be effective in a PHP test script, but > IMP still behaved according to the 2M FPM default? > > And is configuring these limits directly in the PHP-FPM pool the > recommended way to configure Horde/IMP when using Apache with > |proxy_fcgi| and PHP-FPM? > > Thanks in advance for any hints or explanations. > > Greetings > Becki > >