SpawnWP 0.5.18
description: SpawnWP 0.5.18 release notes — the PHP image now ships FTP/FTPS and the common extensions sites were missing (pdo_mysql, soap, sockets, pcntl, gmp, calendar).
SpawnWP 0.5.18
WordPress sites could not perform outbound FTP or FTPS transfers — plugins and core reported
"ftp and ftps are not available". The PHP image was missing the ftp extension. While fixing it
we also found pdo_mysql was absent, and added the other extensions a WordPress platform is
expected to have.
Reported by @wpeasy, with a precise diagnosis that saved a lot of
digging — thank you.
FTP and FTPS now work
ftp is installed, and FTPS is enabled on every PHP version we build (7.4, 8.2, 8.3, 8.4).
ftp_connect() and ftp_ssl_connect() are both available.
Getting FTPS on took two things beyond installing the extension:
- The base image ships the OpenSSL runtime but not its headers, so
ext/ftpcompiled without
SSL. The image now installslibssl-dev. - FTPS must be explicitly opted into when the extension is built standalone (which is how these
images build extensions). The flag was renamed in PHP 8.4 —--with-openssl-dirup to 8.3,
--with-ftp-sslfrom 8.4 — and passing the wrong one aborts the build, so the image now picks
the right one per version.
Extensions added
Alongside ftp: pdo_mysql, soap, sockets, pcntl, gmp, calendar.
pdo_mysql deserves a special mention: the image previously had only pdo_sqlite. WordPress
itself was unaffected (it uses mysqli), which is exactly why the gap went unnoticed — but any
plugin using PDO with MySQL was failing.
What you need to do
- New sites: nothing. They get the new image automatically.
- Existing sites: they keep running their current container, so they do not pick this up on
their own. To get FTP on an existing site, rebuild its PHP image (System → refresh PHP images,
or setSPAWNWP_REBUILD=1) and then recreate the site's containers (Down, then Up). - The first deploy on each PHP version after updating rebuilds that image — a one-off of about
five minutes, which the cockpit announces while it happens. Later deploys are back to their usual
speed.