upgrade fails when disk space is exhausted due to quotas
|Reported by:||list2010@…||Owned by:|
The upgrade from wordpress 3.4.2 to 3.5 failed due to a disk space limitation:
Downloading update from http://wordpress.org/wordpress-3.5-new-bundled.zip… Unpacking the update… The package could not be installed.: PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature Installation Failed
A similar bug occurs if the space for the files themselves is exhausted. On the same installation, functions.php was truncated at 112k, leaving the installation in a non-functional state.
This kind of behaviour can be avoided with an upgrade function of the form:
# test for 64k free disk space ... dd if=/dev/zero of=biggish-test-file bs=1024 count=64 && rm biggish-test-file && wget -O - http://wordpress.org/latest.tar.gz | tar -zvx --strip-components=1
Streaming the download imposes no additional disk space requirements for the intermediate .zip file, but does require a change in the extraction code. Streaming an update cannot be done with zip files, since the index is at the end. ZIP files have to be complete, since the tag is at the end. 'tar' files are more suitable for streaming.