Skip to content Skip to sidebar

This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 8:00 – 12:00 8:00 – 12:00 8:00 – 12:00 8:00 – 12:00 8:00 – 12:00 -
- 12:00 – 16:00 12:00 – 16:00 12:00 – 16:00 12:00 – 16:00 12:00 – 16:00 -

Supporter timezone: Europe/Zagreb (GMT+01:00)

Tagged: 

This topic contains 4 replies, has 0 voices.

Last updated by Dražen 2 days, 20 hours ago.

Assisted by: Dražen.

Author Posts
March 23, 2026 at 1:49 pm #17918924

stefanK-69

Hello,

We’ve been using the ffraenz/private-composer-installer to handle our WPML updates for quite a while now, but we’ve recently run into an issue. Every time we try to run an update, we're hitting a 403 Forbidden error during the download process.

The strange thing is that our credentials are definitely correct. If I take the exact URL that Composer generates and paste it directly into my browser, the download starts immediately without any issues. It only seems to fail when the request is made through the terminal/Composer.

I was wondering if something has changed on your end recently? It feels like the request might be getting flagged by a firewall or a User-Agent block. Also, could you let me know what the status on the official composer package currently is?

Thanks for your help!
Best regards,
Julian

March 24, 2026 at 6:52 am #17920167

Dražen
Supporter

Languages: English (English )

Timezone: Europe/Zagreb (GMT+01:00)

Hi Julian,

Thanks for the detailed explanation.

What you’re experiencing is somewhat expected, as WPML installation via Composer is not officially supported at the moment:
https://wpml.org/errata/composer-installation-of-wpml-not-officially-supported-yet/

Because of that, setups like ffraenz/private-composer-installer can break or behave inconsistently. The difference between browser and Composer requests is likely related to how headers/authentication are handled or filtered. Since it worked in the past, it’s possible something changed either on our side or in the Composer setup, I can not tell at this moment.

To further try to narrow it down, I see in GitHub you need to explicitly set the plugin version in your Composer config. If no version is defined, the download can fail. Have you already tried setting a specific version instead of relying on “latest”?

Also, could you confirm if the same method still works with other plugins? This would help determine if the issue is WPML-specific or more general.

Let me know how it goes, thanks.

Regards,
Dražen

March 24, 2026 at 4:38 pm #17923471

stefanK-69

Hi Dražen,

thanks for your reply and the hints.

I did some testing and I can now reproduce the issue very clearly. I used the exact same download URL (same download, user_id, subscription_key, version) from the same machine/IP and only changed the User-Agent:

With a browser-like User-Agent, I get HTTP 302 and a redirect to the signed CDN ZIP URL.
With User-Agent: Composer/2.8.0, I get HTTP 403 directly (server: awselb/2.0), no redirect.
So credentials/version don’t seem to be the problem here, because with the same credentials the request works as soon as it looks like a browser request. It looks like non-browser/composer-style requests are being blocked or filtered before the normal download flow.

Could you check if there is currently a WAF/bot rule or any policy that blocks Composer/private-installer requests downloads?

Also, could you please share what the recommended machine-to-machine update path is right now, and if there is any updated timeline for official Composer support?

Thanks again for your help.

Best regards,
Julian

March 25, 2026 at 7:21 am #17924637

Dražen
Supporter

Languages: English (English )

Timezone: Europe/Zagreb (GMT+01:00)

Hello Julian,

Thank you for the detailed testing and explanation this is very helpful.

I will check this further with our internal team and systems to better understand what might be causing this behavior. Please note that it may take a day or two before I have a concrete update.

Regarding Composer support, this is currently tracked as a feature request. I’ve added your vote to it, but at the moment we don’t have an estimated timeline for when it might be implemented.

I’ll get back to you as soon as I have more information.

Regards,
Dražen

March 25, 2026 at 11:42 am #17926125

Dražen
Supporter

Languages: English (English )

Timezone: Europe/Zagreb (GMT+01:00)

Hello Julian,

Thank you for your patience while I checked this internally.

After reviewing this with our systems team, I can confirm that WPML installation and updates via Composer (including setups like ffraenz/private-composer-installer) are not officially supported at this time.

What we’re seeing matches your findings:

- Requests with a browser-like User-Agent follow the normal flow (302 → signed CDN URL → download)
- Requests with a Composer User-Agent are returning a 403 before reaching that stage

This indicates that such requests are likely being filtered upstream (WAF/CDN level), based on factors like User-Agent, headers, or automated request patterns.

Since Composer based installations are not part of our officially supported or tested flow, these requests are not currently whitelisted and may be blocked by security rules protecting the download endpoints.

At the moment, this is tracked internally as a feature request, and it will be up to our development team to evaluate if and when this will be supported. Unfortunately, there isn’t anything we can adjust or enable from our side right now to change this behavior.

Please let me know if you have any further questions.

Regards,
Dražen