Make WordPress Core

Opened 5 months ago

Last modified 5 months ago

#62209 new defect (bug)

When updating languages, wordpress via ftpext tries to chdir to json files and fails

Reported by: danroeg's profile danroeg Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version: 6.6.2
Component: Upgrade/Install Keywords:
Focuses: Cc:

Description

Hello WP team,

I am using wordpress 6.6.2 on Debian with php 8.2.24, everything on recent patches.
Updates of local files via FS_METHOD ftpext with properly configured ftpd host, paths, credentials, file permissions.
When updating translations / language files , I run into an error as follows:

  • Upload process uploads new jsons to wp-content/upgrade/wordpress-6.6.2-de_de, all fine
  • It then tries to 'delete' the old wp-content/language files but treats them as directories, which fails. See ftpd log example 1. Note ftpd only accepts directories as parameter for nlist. The UI reports : "Updating translations for WordPress (de_DE)… Could not remove the old translation. Translation update failed."

Thank you for looking into this.

FTPD Log Example 1
[nlst] public_html/wp-content/languages/de_DE.po
[pwd] []
[cwd] public_html/wp-content/languages/de_DE.po/
change directory to /public_html/wp-content/languages/de_DE.po/: Not a directory
[pwd] []
[pasv] []
[nlst] public_html/wp-content/languages/de_DE.mo
[cwd] public_html/wp-content/languages/de_DE.mo/
change directory to /public_html/wp-content/languages/de_DE.mo/: Not a directory
[pwd] []
[pasv] []
[nlst] public_html/wp-content/languages/de_DE.l10n.php
[cwd] public_html/wp-content/languages/de_DE.l10n.php/
change directory to /public_html/wp-content/languages/de_DE.l10n.php/: Not a directory
...
[nlst] public_html/wp-content/languages/de_DE-0cc31205f20441b3df1d1b46100f6b8d.json
[cwd] public_html/wp-content/languages/de_DE-0cc31205f20441b3df1d1b46100f6b8d.json/
change directory to /public_html/wp-content/languages/de_DE-0cc31205f20441b3df1d1b46100f6b8d.json/: Not a directory
[pwd] []
[pasv] []
[nlst] public_html/wp-content/languages/de_DE-0ce75ad2f775d1cac9696967d484808c.json
[cwd] public_html/wp-content/languages/de_DE-0ce75ad2f775d1cac9696967d484808c.json/
change directory to /public_html/wp-content/languages/de_DE-0ce75ad2f775d1cac9696967d484808c.json/: Not a directory
...

Change History (2)

#1 @swissspidy
5 months ago

  • Component changed from Administration to Upgrade/Install

#2 in reply to: ↑ description @danroeg
5 months ago

Replying to danroeg:

I think I have figured this out - I have been using "pure-ftpd" as ftpd. This does reject FILES as parameter for NLIST as written below (a recently introduced pure-ftpd 'feature'). I have switched to a different ftpd "vsftpd", which does accept FILES as parameter for NLIST. With this, updates seem to work. Yet you might want to reconsider the use of NLIST with FILES.

Hello WP team,

I am using wordpress 6.6.2 on Debian with php 8.2.24, everything on recent patches.
Updates of local files via FS_METHOD ftpext with properly configured ftpd host, paths, credentials, file permissions.
When updating translations / language files , I run into an error as follows:

  • Upload process uploads new jsons to wp-content/upgrade/wordpress-6.6.2-de_de, all fine
  • It then tries to 'delete' the old wp-content/language files but treats them as directories, which fails. See ftpd log example 1. Note ftpd only accepts directories as parameter for nlist. The UI reports : "Updating translations for WordPress (de_DE)… Could not remove the old translation. Translation update failed."

Thank you for looking into this.

FTPD Log Example 1
[nlst] public_html/wp-content/languages/de_DE.po
[pwd] []
[cwd] public_html/wp-content/languages/de_DE.po/
change directory to /public_html/wp-content/languages/de_DE.po/: Not a directory
[pwd] []
[pasv] []
[nlst] public_html/wp-content/languages/de_DE.mo
[cwd] public_html/wp-content/languages/de_DE.mo/
change directory to /public_html/wp-content/languages/de_DE.mo/: Not a directory
[pwd] []
[pasv] []
[nlst] public_html/wp-content/languages/de_DE.l10n.php
[cwd] public_html/wp-content/languages/de_DE.l10n.php/
change directory to /public_html/wp-content/languages/de_DE.l10n.php/: Not a directory
...
[nlst] public_html/wp-content/languages/de_DE-0cc31205f20441b3df1d1b46100f6b8d.json
[cwd] public_html/wp-content/languages/de_DE-0cc31205f20441b3df1d1b46100f6b8d.json/
change directory to /public_html/wp-content/languages/de_DE-0cc31205f20441b3df1d1b46100f6b8d.json/: Not a directory
[pwd] []
[pasv] []
[nlst] public_html/wp-content/languages/de_DE-0ce75ad2f775d1cac9696967d484808c.json
[cwd] public_html/wp-content/languages/de_DE-0ce75ad2f775d1cac9696967d484808c.json/
change directory to /public_html/wp-content/languages/de_DE-0ce75ad2f775d1cac9696967d484808c.json/: Not a directory
...

Note: See TracTickets for help on using tickets.