Maltfield Log/2025 Q1
Jump to navigation
Jump to search
My work log from the first quarter of the year 2025. I intentionally made this verbose to make future admin's work easier when troubleshooting. The more keywords, error messages, etc that are listed in this log, the more helpful it will be for the future OSE Sysadmin.
See Also
Sun Feb 09, 2025
- yesterday I finished updating the wiki skins, extensions, and fixed read errors
- today let's see if I can login
- nope; login fails (before it even prompts me for the TOTP)
[Z6jiQdBARKwS5eO0NyyPzwAAAAI] 2025-02-09 17:13:37: Fatal exception of type "DomainException"
- strange, the apache error log doesn't have a cooresponding entry
- I confirmed that varnish *is* calling the apache backend, and it's returning with a 500 Internal Server Error
- the error log doesn't exist; I wonder if I create it, will it start writing to it?
root@hetzner3 /var/www/html/wiki.opensourceecology.org # tail LocalSettings.php # # note: do *not* enable any of the following variables, or it may leak # sensitive user or server data to web clients: # $wgDebugComments, $wgShowDBErrorBacktrace, $wgShowDebug, # $wgShowSQLErrors, $wgShowExceptionDetails # # instead, just tail the log file outside the docroot: # `tail -f /var/www/html/wiki.opensourceecology.org/wiki-error.log` $wgDebugLogFile = "/var/www/html/wiki.opensourceecology.org/wiki-error.log"; root@hetzner3 /var/www/html/wiki.opensourceecology.org # root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls cache htdocs LocalSettings.20250206_220118.php LocalSettings.php root@hetzner3 /var/www/html/wiki.opensourceecology.org # root@hetzner3 /var/www/html/wiki.opensourceecology.org # touch wiki-error.log root@hetzner3 /var/www/html/wiki.opensourceecology.org # root@hetzner3 /var/www/html/wiki.opensourceecology.org # chown not-apache:www-data wiki-error.log root@hetzner3 /var/www/html/wiki.opensourceecology.org # chmod 0060 wiki-error.log root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- yep, that worked. I refresh the login page's POST in the browser, and now there's 91 lines of data written to this file
root@hetzner3 /var/www/html/wiki.opensourceecology.org # wc -l wiki-error.log 91 wiki-error.log root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- alright, here's the exception
[exception] [Z6jk6sI43HtXVYKRFwoLOQAAAAY] /index.php?title=Special:UserLogin&returnto=Special%3ASearch&returntoquery=search%3DCHG%26go%3DGo DomainException: Invalid password policy config. No check defined for 'PasswordCannotBePopular'.
- looks like that's from our "HARDENING" section of LocalSettings.php
############# # HARDENING # ############# $wgSecureLogin = true; $wgSecretKey = 'REDACTED'; # PASSWORD POLICIES $wgPasswordPolicy['policies']['default']['MinimalPasswordLength'] = 10; $wgPasswordPolicy['policies']['default']['PasswordCannotBePopular'] = PHP_INT_MAX; $wgPasswordPolicy['policies']['default']['PasswordCannotMatchUsername'] = true; $wgPasswordPolicy['policies']['sysop']['MinimalPasswordLength'] = 20;
- according to the docs, PasswordCannotBePopular was removed in MediaWiki v1.35 https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy
- it says to use "PasswordNotInCommonList" instead
- there's also a few new ones that I like
- PasswordCannotBeSubstringInUsername
- PasswordCannotMatchBlacklist
- here's a command to fix this
# remove deprecated password policy and add new https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy grep 'PasswordNotInCommonList' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e "s%\\\$wgPasswordPolicy\['policies'\]\['default'\]\['PasswordCannotBePopular'\] = PHP_INT_MAX;%#\\\$wgPasswordPolicy['policies']['default']['PasswordCannotBePopular'] = PHP_INT_MAX;\n\\\$wgPasswordPolicy['policies']['default']['PasswordNotInCommonList'] = true;\n\\\$wgPasswordPolicy['policies']['default']['PasswordCannotMatchBlacklist'] = true;\n\\\$wgPasswordPolicy['policies']['default']['PasswordCannotBeSubstringInUsername'] = true;%igs" ${vhostDir}/LocalSettings.php
- I refreshed the login POST in the browser, but now I have a new error in wiki-error.log
[exception] [Z6jryiT2KExyu6R5tRR0twAAAAc] /index.php?title=Special:UserLogin&returnto=Special%3ASearch&returntoquery=search%3DCHG%26go%3DGo DomainException: Invalid password policy config. No check defined for 'PasswordCannotMatchBlacklist'.
- well, the docs say it's available but I'll just remove it manually
- I get an error on this one too!
[exception] [Z6jsfUWy7Z1fzmrwWGWXiwAAAAA] /index.php?title=Special:UserLogin&returnto=Special%3ASearch&returntoquery=search%3DCHG%26go%3DGo DomainException: Invalid password policy config. No check defined for 'PasswordCannotMatchUsername'.
- ok, I'm wondering if it needs to be a sub-value 'value'
- my best-guess is that this was also removed (replaced by PasswordCannotBeSubstringInUsername), but the docs haven't been updated.
- anyway, I would guess that PasswordCannotBeSubstringInUsername would also apply for an exact match of username, so I'm going to use that one instead only
# remove deprecated password policy and add new https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy grep 'PasswordNotInCommonList' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e "s%\\\$wgPasswordPolicy\['policies'\]\['default'\]\['PasswordCannotBePopular'\] = PHP_INT_MAX;\n\\\$wgPasswordPolicy\['policies'\]\['default'\]\['PasswordCannotMatchUsername'\] = true;%#\\\$wgPasswordPolicy['policies']['default']['PasswordCannotBePopular'] = PHP_INT_MAX;\n#\\\$wgPasswordPolicy['policies']['default']['PasswordCannotMatchUsername'] = true;\n\\\$wgPasswordPolicy['policies']['default']['PasswordNotInCommonList'] = true;\n\\\$wgPasswordPolicy['policies']['default']['PasswordCannotBeSubstringInUsername'] = true;%igs" ${vhostDir}/LocalSettings.php
- I tried to edit the docs page's discussion tab, but I got an error again about no open proxies https://www.mediawiki.org/wiki/Manual_talk:$wgPasswordPolicy
- I already have an exception on my account for wikipedia, but I guess my mediawiki one expired. It usually takes them a few months to approve and it expires every year. Very frustrating.
- ok, after that I'm now prompted for the TOTP token
- and I'm able to login!
- I checked some special pages
- the 2fa page was just for my own account. I couldn't see how to require 2fa for privileged users
- I visited the ConfrmAccount list (of pending account requests). There's definitely spam in there. I hope that the transition to hCaptcha will reduce this.
- I also went ahead and created an account on the MediaWiki "phabricator" – to submit feature requests and bug reports
- I found there's already a feature request for mCaptcha support, opened last year https://phabricator.wikimedia.org/T376393
- I also opened a ticket about the ini_set and putenv bug https://phabricator.wikimedia.org/T385965
- To generate the error for the bug report, I had found that the php_uname function override was no longer necessary in the latest version of MediaWiki (1.43), so the bug report only mentions ini_set and putenv
- I went to this Special page, which told me that Marcin does *not* have 2FA enabled https://wiki.opensourceecology.org/wiki/Special:VerifyOATHForUser
- cool, this page translates the password policies I was configuring earlier https://wiki.opensourceecology.org/wiki/Special:PasswordPolicies
- ok, looks like the docs for 2fa in mediawiki are here https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration
- apparently I just enabled it before and never set it up; let's do that now
- looks like, by default, the range of tokens accepted deviates from the current time by 1+(2*4)* (30 seconds) = 270 seconds. So that's +/- 2.25 minutes.
- That actually doesn't seem too bad, but I'll increase it a bit to prevent login issues (which ultimately cause people to disable 2FA and leave their accounts less secure)
- Looks like the "Relaxed Mode" that we for Google Authenticator is +/- 4 minutes https://wordpress.org/plugins/google-authenticator-encourage-user-activation/
- So let's change this from 4 to 8 to get 1+(2*8)* (30 seconds) = 481 seconds = 241 seconds = +/- 4 minutes
- looks like, by default, the range of tokens accepted deviates from the current time by 1+(2*4)* (30 seconds) = 270 seconds. So that's +/- 2.25 minutes.
# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely # The security consequences are small. The usability benefits are huge. $wgOATHAuthWindowRadius = 8 # make admins require 2FA $wgOATHRequiredForGroups = ['sysop', 'interface-admin', 'bureaucrat', 'suppress', 'widgeteditor' ] # make "powerful" rights require 2FA $wgOATHExclusiveRights = [ 'apihighlimits', 'applychangetags', 'autoconfirmed', 'autopatrol', 'bigdelete', 'block', 'blockemail', 'bot', 'changetags', 'createaccount', 'createtalk', 'delete', 'deletechangetags', 'deletedhistory', 'deletedtext', 'deletelogentry', 'deleterevision', 'editcontentmodel', 'editinterface', 'editprotected', 'editsemiprotected', 'editsitecss', 'editsitejs', 'editsitejson', 'editusercss', 'edituserjs', 'edituserjson', 'hideuser', 'import', 'importupload', 'ipblock-exempt', 'managechangetags', 'markbotedits', 'mergehistory', 'move-categorypages', 'move-rootuserpages', 'move-subpages', 'nominornewtalk', 'noratelimit', 'patrol', 'protect', 'renameuser', 'reupload-shared', 'sendemail', 'suppressionlog', 'suppressredirect', 'suppressrevision', 'unblockself', 'unwatchedpages', 'userrights', ] # full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration # $wgOATHExclusiveRights = [ 'apihighlimits', 'applychangetags', 'autoconfirmed', 'autopatrol', 'bigdelete', 'block', 'blockemail', 'bot', 'browsearchive', 'changetags', 'createaccount', 'createpage', 'createtalk', 'delete', 'deletechangetags', 'deletedhistory', 'deletedtext', 'deletelogentry', 'deleterevision', 'edit', 'editcontentmodel', 'editinterface', 'editmyoptions', 'editmyprivateinfo', 'editmyusercss', 'editmyuserjs', 'editmyuserjson', 'editmyuserjsredirect', 'editmywatchlist', 'editprotected', 'editsemiprotected', 'editsitecss', 'editsitejs', 'editsitejson', 'editusercss', 'edituserjs', 'edituserjson', 'hideuser', 'import', 'importupload', 'ipblock-exempt', 'managechangetags', 'markbotedits', 'mergehistory', 'minoredit', 'move', 'move-categorypages', 'movefile', 'move-rootuserpages', 'move-subpages', 'nominornewtalk', 'noratelimit', 'patrol', 'protect', 'read', 'renameuser', 'reupload', 'reupload-shared', 'rollback', 'sendemail', 'suppressionlog', 'suppressredirect', 'suppressrevision', 'unblockself', 'undelete', 'unwatchedpages', 'upload', 'userrights', 'viewmyprivateinfo', 'viewmywatchlist', 'viewsuppressed' ]
- set with
# configure OATH (2FA) requirements grep 'wgOATHAuthWindowRadius' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e "s%wfLoadExtension\( 'OATHAuth' \);%wfLoadExtension( 'OATHAuth' );\n\n# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely\n# The security consequences are small. The usability benefits are huge.\n\\\$wgOATHAuthWindowRadius = 8;\n\n# make admins require 2FA\n\\\$wgOATHRequiredForGroups = ['sysop', 'interface-admin', 'bureaucrat', 'suppress', 'widgeteditor' ];\n\n# make 'powerful' rights require 2FA\n\\\$wgOATHExclusiveRights = [ 'apihighlimits', 'applychangetags', 'autoconfirmed', 'autopatrol', 'bigdelete', 'block', 'blockemail', 'bot', 'changetags', 'createaccount', 'createtalk', 'delete', 'deletechangetags', 'deletedhistory', 'deletedtext', 'deletelogentry', 'deleterevision', 'editcontentmodel', 'editinterface', 'editprotected', 'editsemiprotected', 'editsitecss', 'editsitejs', 'editsitejson', 'editusercss', 'edituserjs', 'edituserjson', 'hideuser', 'import', 'importupload', 'ipblock-exempt', 'managechangetags', 'markbotedits', 'mergehistory', 'move-categorypages', 'move-rootuserpages', 'move-subpages', 'nominornewtalk', 'noratelimit', 'patrol', 'protect', 'renameuser', 'reupload-shared', 'sendemail', 'suppressionlog', 'suppressredirect', 'suppressrevision', 'unblockself', 'unwatchedpages', 'userrights', ];\n\n# full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration\n#\\\$wgOATHExclusiveRights = [ 'apihighlimits', 'applychangetags', 'autoconfirmed', 'autopatrol', 'bigdelete', 'block', 'blockemail', 'bot', 'browsearchive', 'changetags', 'createaccount', 'createpage', 'createtalk', 'delete', 'deletechangetags', 'deletedhistory', 'deletedtext', 'deletelogentry', 'deleterevision', 'edit', 'editcontentmodel', 'editinterface', 'editmyoptions', 'editmyprivateinfo', 'editmyusercss', 'editmyuserjs', 'editmyuserjson', 'editmyuserjsredirect', 'editmywatchlist', 'editprotected', 'editsemiprotected', 'editsitecss', 'editsitejs', 'editsitejson', 'editusercss', 'edituserjs', 'edituserjson', 'hideuser', 'import', 'importupload', 'ipblock-exempt', 'managechangetags', 'markbotedits', 'mergehistory', 'minoredit', 'move', 'move-categorypages', 'movefile', 'move-rootuserpages', 'move-subpages', 'nominornewtalk', 'noratelimit', 'patrol', 'protect', 'read', 'renameuser', 'reupload', 'reupload-shared', 'rollback', 'sendemail', 'suppressionlog', 'suppressredirect', 'suppressrevision', 'unblockself', 'undelete', 'unwatchedpages', 'upload', 'userrights', 'viewmyprivateinfo', 'viewmywatchlist', 'viewsuppressed' ];\n%igs" ${vhostDir}/LocalSettings.php
- I also wanted to understand why I keep getting de-auth'd (it appears to have happened both on hetzner2 and on hetzner3). There's a million reasons this could be
- I confirmed that session cookies are set to not expire on the server's php.ini config (session.cookie_lifetime = 0)
- I realized there's a "keep me logged in" checkbox on the login page. Miraculously, I never noticed this. I logged-out and logged-in again, this time with that set. It still might de-auth me, but we'll see if I'm still logged-in tomorrow.
- according to this doc, if the user does *not* check that "keep me logged-in" box, then they're de-auth'd after 1 hour of inactivity (by default). This can be changed by updating wgObjectCacheSessionExpiry https://www.mediawiki.org/wiki/Manual:$wgObjectCacheSessionExpiry
- see also https://www.mediawiki.org/wiki/Manual:$wgExtendedLoginCookieExpiration
- see also https://www.mediawiki.org/wiki/Manual:How_to_debug/Login_problems#For_site_administrators/2
- I tried to edit a page, but I got an error :(
[Z6k4RyT2KExyu6R5tRR07QAAAAc] 2025-02-09 23:20:39: Fatal exception of type "Error"
- there's no errors emitted to the apache error logs, but this was in the wiki-error.log
[exception] [Z6k4dcI43HtXVYKRFwoLbAAAAAY] /index.php?title=File:Altfield_michael_2011_ohio1.jpg&action=submit Error: Call to undefined function Wikimedia\RequestTimeout\Detail\set_time_limit()
- damn, that's another bug. I fixed it by updating the bugfix lines at the top of LocalSettings.php with this
if( ! function_exists("putenv") ){ function putenv(){ return; } }
- ok, that fixed the edit issue
- I also confirmed a successful edit of the home page
- I then tried to signup for a new account, and it failed
[Z6k8FtBARKwS5eO0NyyQSwAAAAI] 2025-02-09 23:36:54: Fatal exception of type "RuntimeException"
- I got a ton of error in the apache error log. oh, actually it's just one long line (with 7,382 chars)
root@hetzner3 /var/log/apache2 # tail -n1 wiki.opensourceecology.org/error.log | wc -m 7382 root@hetzner3 /var/log/apache2 # root@hetzner3 /var/log/apache2 # tail -n1 wiki.opensourceecology.org/error.log | head -c4096 [Sun Feb 09 23:37:53.959463 2025] [proxy_fcgi:error] [pid 2315303:tid 2315303] [client 127.0.0.1:0] AH01071: Got error 'firmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find theroot@hetzner3 /var/log/apache2 # root@hetzner3 /var/log/apache2 # tail -n1 wiki.opensourceecology.org/error.log | tail -c4096 mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30; PHP message: PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to enable it when you configured PHP? in /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php on line 30', referer: https://wiki.opensourceecology.org/ root@hetzner3 /var/log/apache2 #
- some discussion here suggets its a filesystem permission issue, but it would be nice if I knew where it was trying to read/write https://www.mediawiki.org/wiki/Extension_talk:ConfirmAccount/archive_3
- ah man, that's 11 years old those comments
- mwstore is apparently a reference to an internal URI "mwstore://", but I still don't know what it resolves-to https://www.mediawiki.org/wiki/Mwstore
- the wiki-error.log file has more info
[error] [Z6k8UdkIYao5-602-ohiTQAAAAE] /wiki/Special:RequestAccount PHP Warning: file_exists(): Unable to find the wrapper "mwstore" - did you forget to en able it when you configured PHP? #0 [internal function]: MWExceptionHandler::handleError() #1 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/backend/ConfirmAccount.class.php(30): file_exists() #2 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/business/AccountRequestSubmission.php(75): ConfirmAccount::runAutoMaintenance() #3 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/frontend/specialpages/actions/RequestAccount_body.php(352): AccountRequestSubmis sion->submit() #4 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmAccount/includes/frontend/specialpages/actions/RequestAccount_body.php(92): RequestAccountPage->d oSubmit() #5 /var/www/html/wiki.opensourceecology.org/htdocs/includes/specialpage/SpecialPage.php(728): RequestAccountPage->execute() #6 /var/www/html/wiki.opensourceecology.org/htdocs/includes/specialpage/SpecialPageFactory.php(1724): MediaWiki\SpecialPage\SpecialPage->run() #7 /var/www/html/wiki.opensourceecology.org/htdocs/includes/actions/ActionEntryPoint.php(504): MediaWiki\SpecialPage\SpecialPageFactory->executePath() #8 /var/www/html/wiki.opensourceecology.org/htdocs/includes/actions/ActionEntryPoint.php(146): MediaWiki\Actions\ActionEntryPoint->performRequest() #9 /var/www/html/wiki.opensourceecology.org/htdocs/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint->execute() #10 /var/www/html/wiki.opensourceecology.org/htdocs/index.php(58): MediaWiki\MediaWikiEntryPoint->run() #11 {main} [rdbms] ConfirmAccount::runAutoMaintenance [0.132ms] localhost: DELETE FROM `wiki_account_requests` WHERE acr_id = '634' [rdbms] ConfirmAccount::runAutoMaintenance [0.614ms] localhost: UPDATE `wiki_account_requests` SET acr_rejected = '20250209233753',acr_user = 0,acr_comment = '(this request has automatically been discarded due to inactivity)',acr_deleted = 1 WHERE (acr_rejected IS NULL) AND (acr_registration < '20250110233753') AND (acr_held < '20250110233753' OR acr_held IS NULL) [BlockManager] Create account block cache hit with key BlockCacheKey{request=#262,user=#372,replica} [rdbms] MWExceptionHandler::rollbackPrimaryChanges [0.559ms] localhost: ROLLBACK [exception] [Z6k8UdkIYao5-602-ohiTQAAAAE] /wiki/Special:RequestAccount RuntimeException: GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.
- GuzzleHTTP appears to be this php library, which I guess MediaWiki uses https://docs.guzzlephp.org/en/stable/overview.html
- It says PHP 7.2.5 is a min req, so I guess they didn't use it on the version we have installed on MediaWiki; it's new
- It says either it needs allow_url_fopen (which we disable for security reasons) or "a recent version of cURL >= 7.19.4 compiled with OpenSSL and zlib"
- well, we have curl 7.88 installed
root@hetzner3 /var/www/html/wiki.opensourceecology.org # dpkg -l | grep -i curl ii curl 7.88.1-10+deb12u6 amd64 command line tool for transferring data with URL syntax ii libcurl3-gnutls:amd64 7.88.1-10+deb12u6 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) ii libcurl4:amd64 7.88.1-10+deb12u6 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour) ii python3-pycurl 7.45.2-3 amd64 Python bindings to libcurl (Python 3) root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- but I guess we don't have the php bindings for it
root@hetzner3 /var/www/html/wiki.opensourceecology.org # apt-cache search php | grep -i curl php-curl - CURL module for PHP [default] php8.2-curl - CURL module for PHP root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- I remembered encountering this issue recently, but I realized it was when I was doing the mitm on wordpress in a DispVM. I had to install 'php-curl' for wordpress https://wiki.opensourceecology.org/wiki/Maltfield_Log/2024_Q4#Tue_Dec_31.2C_2024
- I updated the php role in ansible to install 'php-curl' as a depend
- cool, now it's installed
root@hetzner3 /var/www/html/wiki.opensourceecology.org # dpkg -l | grep -i curl ii curl 7.88.1-10+deb12u6 amd64 command line tool for transferring data with URL syntax ii libcurl3-gnutls:amd64 7.88.1-10+deb12u6 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) ii libcurl4:amd64 7.88.1-10+deb12u6 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour) ii php-curl 2:8.2+93 all CURL module for PHP [default] ii php8.2-curl 8.2.26-1~deb12u1 amd64 CURL module for PHP ii python3-pycurl 7.45.2-3 amd64 Python bindings to libcurl (Python 3) root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- I restarted apache and php and refreshed the POST in the browser, but I'm still getting the error
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # systemctl restart php8.2-fpm apache2 root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- there's some more notes here suggesting that this mwstore error message is a warning, so it might be a red herring https://www.edegan.com/mediawiki/index.php?title=Research_Computing_Configuration&mobileaction=toggle_view_desktop
- yeah, it's a known/open bug since 2019 https://phabricator.wikimedia.org/T219859
- so I do think the issue is GuzzleHttp, but why doesn't it see that php-curl is available now?
- perhaps I have to enable it
- I see the mod files are present
root@hetzner3 /etc/php/8.2 # ls mods-available/ apcu.ini curl.ini ffi.ini gd.ini intl.ini mysqlnd.ini pdo_mysql.ini readline.ini sockets.ini sysvshm.ini xml.ini xsl.ini calendar.ini dom.ini fileinfo.ini gettext.ini mbstring.ini opcache.ini phar.ini shmop.ini sysvmsg.ini tideways.ini xmlreader.ini ctype.ini exif.ini ftp.ini iconv.ini mysqli.ini pdo.ini posix.ini simplexml.ini sysvsem.ini tokenizer.ini xmlwriter.ini root@hetzner3 /etc/php/8.2 # cat mods-available/curl.ini ; configuration for php curl module ; priority=20 extension=curl.so root@hetzner3 /etc/php/8.2 #
- perhaps this "extension=curl" line needs to be uncommented
root@hetzner3 /etc/php/8.2 # grep -ir curl apache2/php.ini disable_functions = ini_set,php_uname,getmyuid,getmypid,passthru,leak,listen,diskfreespace,tmpfile,link,ignore_user_abord,shell_exec,dl,set_time_limit,exec,system,highlight_file,source,show_source,fpaththru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,phpinfo,popen,curl_exec,curl_multi_exec,parse_ini_file,allow_url_fopen,allow_url_include,pcntl_exec,chgrp,chmod,chown,lchgrp,lchown,putenv ; The ldap extension must be before curl if OpenSSL 1.0.2 and OpenLDAP is used ;extension=curl [curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ;curl.cainfo = You have mail in /var/mail/root root@hetzner3 /etc/php/8.2 # grep -ir curl fpm/php.ini disable_functions = ini_set,php_uname,getmyuid,getmypid,passthru,leak,listen,diskfreespace,tmpfile,link,ignore_user_abord,shell_exec,dl,set_time_limit,exec,system,highlight_file,source,show_source,fpaththru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,phpinfo,popen,curl_exec,curl_multi_exec,parse_ini_file,allow_url_fopen,allow_url_include,pcntl_exec,chgrp,chmod,chown,lchgrp,lchown,putenv ; The ldap extension must be before curl if OpenSSL 1.0.2 and OpenLDAP is used ;extension=curl [curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ;curl.cainfo = root@hetzner3 /etc/php/8.2 #
- well I guess we have to choose if we want to expose either curl or allow_url_fopen
- the OWASP php hardening guide says to disable allow_url_fopen, but it does not say to disable curl https://cheatsheetseries.owasp.org/cheatsheets/PHP_Configuration_Cheat_Sheet.html
- import to note that we already have a firewall that prevents the web server from initiating public web requests, so even if we allow curl functions to run, it still *shouldn't* permit malicious code from downloading (and running) malicious assets (or uploading for exfiltration)
- that said, layered security is good. I found a bug at some point where ipset caused my firewall rules to get cleared, so that protection could disappear at some point. layered security is good.
- alright, I'm going to remove the curl functions from the disabled_functions list
- yeah, that worked
- I removed them from the fpm php.ini file, restarted fpm & apache, and refreshed the page. Now it tells me the hCaptcha is expired (yeah it is), but at least the error is gone.
- let's try to fix this in ansbile https://github.com/OpenSourceEcology/ansible/commit/8259a838b21a10e08db1130da60f9b0a05b43d39
- I pushed that out with ansible and tried again
- this time I solved the CAPTCHA and submitted it; I got an error again complaining about the CAPTCHA
Incorrect or missing CAPTCHA.
- I thought maybe it was stale since I first loaded the page, so I solved it again. I got the same error.
- god damn it, now the hCaptcha wants to make server-side queries using cURL (taken from wiki-errro.log)
[http] POST https://hcaptcha.com/siteverify HTTP/1.1 - NULL cURL error 28: Failed to connect to hcaptcha.com port 443 after 5001 ms: Timeout was reached (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://hcaptcha.com/siteverify [captcha] Unable to validate response: http-timed-out
- well, I was thinking I might switch from a math CAPTCHA to a self-hosted image of characters (FancyCaptcha), but they both have the same "Low" efficacy rating on the docs https://www.mediawiki.org/wiki/Extension:ConfirmEdit#FancyCaptcha
- FancyCAPTCHA requires more depends and load on the server. If it's not more effective, then let's just switch back to SimpleCaptcha
- In the future, hopefully MediaWiki will support a self-hosted mCaptcha option. I left my $0.02 on both project's issues
- crap, changing back from "hCaptcha" to "SimpleCaptcha" lead to an error
MediaWiki SimpleCaptcha configuration error MediaWiki is unable to load the extension SimpleCaptcha. Please check that the extension's name is correct and all of its files are properly installed. Details: Error reading /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmEdit/SimpleCaptcha/extension.json. filemtime(): stat failed for /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmEdit/SimpleCaptcha/extension.json. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(77): MediaWiki\Registration\ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(283): wfLoadExtensions() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/includes/WebStart.php(85): require_once('...') #5 /var/www/html/wiki.opensourceecology.org/htdocs/index.php(50): require('...') #6 {main}
- is there supposed to be some sort of extension.json file here?
root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls htdocs/extensions/ConfirmEdit/ AUTHORS.txt captcha.py ConfirmEdit.alias.php FancyCaptcha includes README.md SimpleCaptcha Turnstile badwordlist CODE_OF_CONDUCT.md COPYING hCaptcha maintenance ReCaptchaNoCaptcha tests captcha-old.py composer.json extension.json i18n QuestyCaptcha resources tox.ini root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls htdocs/extensions/ConfirmEdit/SimpleCaptcha/ resources SimpleCaptcha.php root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls htdocs/extensions/ConfirmEdit/hCaptcha/ COPYING extension.json i18n includes resources root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- if that's the case, then I guess these are our only options
root@hetzner3 /var/www/html/wiki.opensourceecology.org # find htdocs/extensions/ConfirmEdit/ | grep -i extension.json htdocs/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json htdocs/extensions/ConfirmEdit/extension.json htdocs/extensions/ConfirmEdit/QuestyCaptcha/extension.json htdocs/extensions/ConfirmEdit/FancyCaptcha/extension.json htdocs/extensions/ConfirmEdit/Turnstile/extension.json htdocs/extensions/ConfirmEdit/hCaptcha/extension.json root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- well, then I guess the only self-hosted options are "QuestyCaptcha" and "FancyCaptcha"
- refresh of Specail:RequestAccount has error
[Z6lQ8xfDLrGT7Qv2czN2UwAAAAE] 2025-02-10 01:05:55: Fatal exception of type "UnderflowException"
- and this from wiki-error.log
[captcha] ConfirmEdit: new captcha session; [Null] [rdbms] Wikimedia\Rdbms\LoadBalancer::reuseOrOpenConnectionForNewRef: reusing connection for 0/osewiki_db-wiki_ [rdbms] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0.051ms] localhost: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,p age_links_updated,page_latest,page_len,page_content_model FROM `wiki_page` WHERE page_namespace = 8 AND page_title = 'Requestaccount-page' LIMIT 1 [rdbms] Wikimedia\Rdbms\LoadBalancer::reuseOrOpenConnectionForNewRef: reusing connection for 0/osewiki_db-wiki_ [rdbms] MediaWiki\Parser\LinkHolderArray::replaceInternal [0.059ms] localhost: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_latest,page _touched,page_len,page_content_model FROM `wiki_page` WHERE ((page_namespace = 4 AND page_title = 'Terms_of_Service')) Cache miss for mwstore://captcha-backend/captcha-render captcha listing. [silenced-error] [Z6lQ8xfDLrGT7Qv2czN2UwAAAAE] /wiki/Special:RequestAccount PHP Warning: rmdir(/var/www/html/wiki.opensourceecology.org/htdocs/images/captcha): No s uch file or directory
- yeah, there is no images/captcha/ dir. And, wtf, it's owned by root:root; that's not going to work
root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls -lah htdocs/images/ total 356K drwxr-xr-x 29 root root 4,0K Dec 29 18:14 . drwxr-xr-x 14 root root 4,0K Dec 29 18:14 .. drwxrwx--- 18 www-data www-data 4,0K Sep 18 2010 0 drwxrwx--- 18 www-data www-data 4,0K Sep 18 2010 1 drwxrwx--- 18 www-data www-data 4,0K Sep 18 2010 2 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 3 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 4 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 5 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 6 drwxrwx--- 18 www-data www-data 4,0K Sep 25 2010 7 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 8 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 9 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 a drwxrwx--- 19 www-data www-data 4,0K Jun 21 2017 accountcreds drwxrwx--- 18 www-data www-data 4,0K Jun 20 2017 accountreqs drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 archive drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 b drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 c drwxrwx--- 2 www-data www-data 4,0K Jun 19 2015 ConfirmAccount -rw-rw---- 1 www-data www-data 56K Jan 13 2010 cycle.jpg drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 d drwxrwx--- 33 www-data www-data 4,0K May 14 2019 deleted drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 e drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 f -rw-r--r-- 1 501 staff 232 Dec 5 15:41 .htaccess drwxrwx--- 2 www-data www-data 4,0K Dec 22 06:54 lockdir drwxrwx--- 12 www-data www-data 4,0K Jun 3 2011 math -rw-rw---- 1 www-data www-data 23K Oct 4 2010 ose-logo.png -rw-rw---- 1 www-data www-data 84K Jan 13 2010 products.jpg drwxrwx--- 2 www-data www-data 4,0K Sep 19 2010 proposal -rw-r--r-- 1 501 staff 84 Dec 5 15:41 README drwxrwx--- 18 www-data www-data 4,0K May 24 2018 temp drwxrwx--- 19 www-data www-data 4,0K Sep 20 2010 thumb drwxrwx--- 2 www-data www-data 68K Dec 23 2012 tmp root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- I can't see why that would happen, considering our permissions script
root@hetzner3 /var/www/html/wiki.opensourceecology.org # grep -A40 MediaWiki /usr/local/bin/fix_web_permissions.sh # MediaWiki # ############# vhost_dir="/var/www/html/wiki.opensourceecology.org" mw_docroot="${vhost_dir}/htdocs" chown -R not-apache:www-data "${vhost_dir}" find "${vhost_dir}" -type d -exec chmod 0050 {} \; find "${vhost_dir}" -type f -exec chmod 0040 {} \; chown not-apache:apache-admins "${vhost_dir}/LocalSettings.php" chmod 0040 "${vhost_dir}/LocalSettings.php" [ -d "${mw_docroot}/images" ] || mkdir "${mw_docroot}/images" chown -R www-data:www-data "${mw_docroot}/images" find "${mw_docroot}/images" -type f -exec chmod 0660 {} \; find "${mw_docroot}/images" -type d -exec chmod 0770 {} \; [ -d "${vhost_dir}/cache" ] || mkdir "${vhost_dir}/cache" chown -R www-data:www-data "${vhost_dir}/cache" find "${vhost_dir}/cache" -type f -exec chmod 0660 {} \; find "${vhost_dir}/cache" -type d -exec chmod 0770 {} \; exit 0 root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- I gave it a manual try
root@hetzner3 /var/www/html/wiki.opensourceecology.org # vhost_dir="/var/www/html/wiki.opensourceecology.org" mw_docroot="${vhost_dir}/htdocs" root@hetzner3 /var/www/html/wiki.opensourceecology.org # root@hetzner3 /var/www/html/wiki.opensourceecology.org # echo $mw_docroot /var/www/html/wiki.opensourceecology.org/htdocs root@hetzner3 /var/www/html/wiki.opensourceecology.org # root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls $mw_docroot api.php composer.json docker-compose.yml HISTORY index.php load.php opensearch_desc.php rest.php thumb_handler.php autoload.php composer.local.json-sample docs images INSTALL LocalSettings.php README.md SECURITY thumb.php cache COPYING extensions img_auth.php jsdoc.json maintenance RELEASE-NOTES-1.43 skins UPGRADE CODE_OF_CONDUCT.md CREDITS FAQ includes languages mw-config resources tests vendor root@hetzner3 /var/www/html/wiki.opensourceecology.org # [ -d "${mw_docroot}/images" ] || mkdir "${mw_docroot}/images" chown -R www-data:www-data "${mw_docroot}/images" find "${mw_docroot}/images" -type f -exec chmod 0660 {} \; find "${mw_docroot}/images" -type d -exec chmod 0770 {} \; root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- the results are the same; wtf
root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls -lah htdocs/images/ total 356K drwxr-xr-x 29 root root 4,0K Dec 29 18:14 . drwxr-xr-x 14 root root 4,0K Dec 29 18:14 .. drwxrwx--- 18 www-data www-data 4,0K Sep 18 2010 0 drwxrwx--- 18 www-data www-data 4,0K Sep 18 2010 1 drwxrwx--- 18 www-data www-data 4,0K Sep 18 2010 2 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 3 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 4 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 5 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 6 drwxrwx--- 18 www-data www-data 4,0K Sep 25 2010 7 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 8 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 9 drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 a drwxrwx--- 19 www-data www-data 4,0K Jun 21 2017 accountcreds drwxrwx--- 18 www-data www-data 4,0K Jun 20 2017 accountreqs drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 archive drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 b drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 c drwxrwx--- 2 www-data www-data 4,0K Jun 19 2015 ConfirmAccount -rw-rw---- 1 www-data www-data 56K Jan 13 2010 cycle.jpg drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 d drwxrwx--- 33 www-data www-data 4,0K May 14 2019 deleted drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 e drwxrwx--- 18 www-data www-data 4,0K Sep 19 2010 f -rw-r--r-- 1 501 staff 232 Dec 5 15:41 .htaccess drwxrwx--- 2 www-data www-data 4,0K Dec 22 06:54 lockdir drwxrwx--- 12 www-data www-data 4,0K Jun 3 2011 math -rw-rw---- 1 www-data www-data 23K Oct 4 2010 ose-logo.png -rw-rw---- 1 www-data www-data 84K Jan 13 2010 products.jpg drwxrwx--- 2 www-data www-data 4,0K Sep 19 2010 proposal -rw-r--r-- 1 501 staff 84 Dec 5 15:41 README drwxrwx--- 18 www-data www-data 4,0K May 24 2018 temp drwxrwx--- 19 www-data www-data 4,0K Sep 20 2010 thumb drwxrwx--- 2 www-data www-data 68K Dec 23 2012 tmp root@hetzner3 /var/www/html/wiki.opensourceecology.org #
Sat Feb 08, 2025
- here's tofu 3/3 (ISP, exit in Ecuador)
Ecuador 2025-02-08 INFO: Determining Latest Version of Wordpress Core INFO: Determining Latest Version of Wordpress Plugins . . . . INFO: Determining Latest Version of Wordpress Themes . . https://downloads.wordpress.org/release/wordpress-6.7.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/polylang.3.6.6.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/translatepress-multilingual.2.9.4.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/google-language-translator.6.0.20.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/gtranslate.3.0.7.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/hestia.3.2.8.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/neve.4.0.1.zip ######################################################################### 100.0% 2025-02-08 296K google-language-translator.6.0.20.zip 700K gtranslate.3.0.7.zip 8.0M hestia.3.2.8.zip 7.1M neve.4.0.1.zip 64K plugin.json 592K polylang.3.6.6.zip 2.1M translatepress-multilingual.2.9.4.zip 28M wordpress-6.7.1.zip 01246c9c90f1373ee83d8e5884e5abba264c62e7301d99a468fd8eb95144be05 google-language-translator.6.0.20.zip 171eb362801ea28e74b302cd0fee472dbd5025a89f6c1634b5ca1029362a678c gtranslate.3.0.7.zip 241b8c804ed1af72b1c9aa52f603730a52ebf7850383ac2e4d9dd163f6cfc3ca hestia.3.2.8.zip 2b51e758d61b9d78ebd57d2afd9a967335bcb6866c5bff5a0d7157eecb6ec8cb neve.4.0.1.zip 553e0118251211ef13964a88562bc6b859885f886811164d4a2751d9fe66f5e2 plugin.json 3a4a7f8872d16cb3538e948b4f85acee7d823c04fe8c820259ef6e2735093bbb polylang.3.6.6.zip 16f2e24d14af341c6208fb9cc08d0c4db33bf813a5b1668930e30c6179a1111c translatepress-multilingual.2.9.4.zip 75f4e9cb71e583ca3f8b19691b5754adb9c981580762137f82443e1eec468f9c wordpress-6.7.1.zip user@disp8537:/tmp/tmp.bSWwWjZNTu$
- cool, all of these files match across all 3 TOFUs this time; I copied them to hetzer3
- ...
- back on the wiki, it seems that we need to update LocalSettings.php such that:
- the following skins are enabled: Cologne Blue, Modern, MonoBook, Vector
- and the following extensions are enabled: CategoryTree, ConfirmEdit, Confirm User Accounts, ReCaptcha, UserMerge, Widgets
- I used this command to add the skins
# add skins (with wfLoadSkin() instead of require_once) grep 'wfSkinLoad' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e "s/$wgDefaultSkin = 'Vector';/\$wgDefaultSkin = 'Vector';\n\nwfLoadSkin( 'CologneBlue' );\nwfLoadSkin( 'Modern' );\nwfLoadSkin( 'MonoBook' );\nwfLoadSkin( 'Vector' );/igs" ${vhostDir}/LocalSettings.php | grep -C4 wfLoadSkin
- and this for the extensions
# re-enable CategoryTree extension grep 'wfLoadExtension.*CategoryTree' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e 's%#require_once\("{\$IP}/extensions/CategoryTree/CategoryTree.php"\);%#require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");\n\nwfLoadExtension( "CategoryTree" );\n%igs' ${vhostDir}/LocalSettings.php # re-enable ConfirmEdit and switch to hCaptcha grep 'hCaptcha' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e "s%\\\$wgCaptchaClass = 'SimpleCaptcha';%\#\\\$wgCaptchaClass = 'SimpleCaptcha';\n\nwfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/hCaptcha' ]);\n\\\$wgHCaptchaSiteKey = 'your public/site key here';\n\\\$wgHCaptchaSecretKey = 'your private key here';\n%igs" ${vhostDir}/LocalSettings.php # re-enable ConfirmAccount extension grep 'wfLoadExtension.*ConfirmAccount' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e 's%#require_once "\$IP/extensions/ConfirmAccount/ConfirmAccount.php";%#require_once "$IP/extensions/ConfirmAccount/ConfirmAccount.php";\n\nwfLoadExtension( "ConfirmAccount" );\n%igs' ${vhostDir}/LocalSettings.php # re-enable UserMerge extension sed -i 's%^\(\s*\)#wfLoadExtension\(.*\)UserMerge\(.*\)%\1wfLoadExtension\2UserMerge\3%' ${vhostDir}/LocalSettings.php # re-enable Widgets extension grep 'wfLoadExtension.*Widgets' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e 's%#require_once\("\$IP/extensions/Widgets/Widgets.php"\);%#require_once("$IP/extensions/Widgets/Widgets.php");\n\nwfLoadExtension( "Widgets" );\n%igs' ${vhostDir}/LocalSettings.php
- I also had an issue with the script to rsync over the extensions, but I fixed that in the CHG commands for migrating the wiki
- curiously the definition for ConfirmEdit also specifies a captcha
root@hetzner3 /var/www/html/wiki.opensourceecology.org # grep -iC2 confirmedit LocalSettings.php # ConfirmEdit # reCaptcha settings and keys #wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/ReCaptcha' ]); #$wgCaptchaClass = 'ReCaptcha'; $wgCaptchaClass = 'SimpleCaptcha'; root@hetzner3 /var/www/html/wiki.opensourceecology.org # <pre> # looks like we disabled ReCaptcha and swiched to SimpleCaptcha ## the wiki article for this plugin says SimpleCaptcha presents a simple math challenge and isn't very effective https://www.mediawiki.org/wiki/Extension:ConfirmEdit#SimpleCaptcha_(calculation) <pre> Note that the display of a trivial maths problem as plaintext yields a captcha which can be trivially solved by automated means; as of 2012, sites using SimpleCaptcha are receiving significant amounts of spam and many automated registrations of spurious new accounts. Wikis currently using this as the default should therefore migrate to one of the other CAPTCHAs.
- we should probably switch to hCaptcha, if anything https://www.mediawiki.org/wiki/Extension:ConfirmEdit#hCaptcha
- it does not support mCaptcha
- it does not support friendly captcha
- we do need an API key for hCAPTCHA, but (as far as I can tell) it's free https://www.hcaptcha.com/plans
- I created a new google account for this new service, and added its creds to our ose shared keepass
- I created a new account on the hcaptcha website using ^ that gapps account, and added its creds to our ose shared keepass
- I generated a new set of API keys (niknamed "wiki") and added the public "Site Key" and "Secret Key" to the notes section of the hcaptcha entry of our ose shared keepass
- I granted michael and marcin gapps accounts access to the new hcaptcha-service-specific gapps gmail account, and I set it to forward all its emails to our shared ops google group list per https://wiki.opensourceecology.org/wiki/Google_Workspace#Google_Groups
- ok, after enabling the skins & extensions && adding the hCaptcha creds to LocalSettings && clearing cache, I refreshed the Special:Version page Special:Version
Installed software Product Version MediaWiki 1.43.0 PHP 8.2.26 (fpm-fcgi) ICU 72.1 MariaDB 10.11.6-MariaDB-0+deb12u1 Entry point URLs Entry point URL Article path /wiki/$1 Script path / index.php /index.php api.php /api.php rest.php /rest.php Installed skins Skin Version License Description Authors Cologne Blue – (9134d2e) 06:04, 24 December 2024 GPL-2.0-or-later A lightweight skin with minimal formatting Lee Daniel Crocker and others Modern – (5597681) 12:21, 14 December 2024 GPL-2.0-or-later A blue/gray skin with sidebar and top bar. Derived from MonoBook River Tarnell and others MonoBook – GPL-2.0-or-later The classic MediaWiki skin since 2004, named after the black-and-white photo of a book in the page background Gabriel Wicke, Isarra Yos and others Vector 1.0.0 GPL-2.0-or-later Provides 2 Vector skins: 2011 - The Modern version of MonoBook with fresh look and many usability improvements. 2022 - The Vector built as part of the WMF Desktop Improvements project. Readers Web Team, Trevor Parscal, Roan Kattouw, Alex Hollender, Bernard Wang, Clare Ming, Jan Drewniak, Jon Robson, Nick Ray, Sam Smith, Stephen Niedzielski and Volker E. Installed extensions Special pagesExtension Version License Description Authors Confirm User Accounts – (bb470fd) 05:57, 31 December 2024 GPL-2.0-or-later Gives bureaucrats the ability to confirm account requests Aaron Schulz Interwiki 3.2 GPL-2.0-or-later Adds a special page to view and edit the interwiki table Stephanie Amanda Stevens, Alexandre Emsenhuber, Robin Pepermans, Siebrand Mazeland, Platonides, Raimond Spekking, Sam Reed, Jack Phoenix, Calimonius the Estrange and others Nuke – GPL-2.0-or-later Gives administrators the ability to mass delete pages Brion Vibber and Jeroen De Dauw Replace Text 1.8 GPL-2.0-or-later Provides a special page to allow administrators to do a global string find-and-replace on all the content pages of a wiki Yaron Koren, Niklas Laxström and others UserMerge 1.10.2 (f9d2664) 06:00, 31 December 2024 GPL-2.0-or-later Merges references from one user to another user in the wiki database - will also delete old users following merge. Requires usermerge privileges Tim Laqua, Thomas Gries and Matthew April Parser hooksExtension Version License Description Authors CategoryTree – GPL-2.0-or-later Dynamically navigate the category structure Daniel Kinzler Cite – GPL-2.0-or-later Adds <ref> and <references> tags for citations Ævar Arnfjörð Bjarmason, Andrew Garrett, Brion Vibber, Ed Sanders, Marius Hoch, Steve Sanbeg, Trevor Parscal and others Widgets 1.6.0 (50da5c6) 06:09, 26 November 2024 GPL-2.0-or-later Allows wiki administrators to add free-form widgets to the wiki by editing pages within the Widget namespace. Community-contributed widgets can be found on MediaWikiWidgets.org Sergey Chernyshev, Yaron Koren and others Spam preventionExtension Version License Description Authors ConfirmEdit 1.6.0 GPL-2.0-or-later Provides CAPTCHA techniques to protect against spam and password-guessing Brion Vibber, Florian Schmidt, Sam Reed and others hCaptcha – GPL-2.0-or-later hCaptcha module for Confirm Edit Sam Reed and others OtherExtension Version License Description Authors Gadgets – GPL-2.0-or-later Lets users select custom CSS and JavaScript gadgets in their preferences Daniel Kinzler, Max Semenik, Timo Tijhof and Siddharth VP OATHAuth 0.5.0 GPL-2.0-or-later AND GPL-3.0-or-later Provides authentication support using HMAC based one-time passwords Ryan Lane, Robert Vogel <vogel@hallowelt.com>, Dejan Savuljesku <savuljesku@hallowelt.com> and Taavi Väänänen Installed libraries Installed server-side libraries Library Version License Description Authors bacon/bacon-qr-code 2.0.8 BSD-2-Clause BaconQrCode is a QR code generator for PHP. Ben Scholzen 'DASPRiD' christian-riesen/base32 1.6.0 MIT Base32 encoder/decoder according to RFC 4648 Christian Riesen composer/semver 3.4.3 MIT Semver library that offers utilities, version constraint parsing and validation. Nils Adermann, Jordi Boggiano and Rob Bast cssjanus/cssjanus 2.3.0 Apache-2.0 Convert CSS stylesheets between left-to-right and right-to-left. Roan Kattouw, Trevor Parscal and Timo Tijhof dasprid/enum 1.0.5 BSD-2-Clause PHP 7.1 enum implementation Ben Scholzen 'DASPRiD' endroid/qr-code 4.6.1 MIT Endroid QR Code Jeroen van den Enden guzzlehttp/guzzle 7.9.2 MIT Guzzle is a PHP HTTP client library Graham Campbell, Michael Dowling, Jeremy Lindblom, George Mponos, Tobias Nyholm, Márk Sági-Kazár and Tobias Schultze guzzlehttp/promises 2.0.4 MIT Guzzle promises library Graham Campbell, Michael Dowling, Tobias Nyholm and Tobias Schultze guzzlehttp/psr7 2.7.0 MIT PSR-7 message implementation that also provides common utility methods Graham Campbell, Michael Dowling, George Mponos, Tobias Nyholm, Márk Sági-Kazár, Tobias Schultze and Márk Sági-Kazár jakobo/hotp-php 2.0.0 BSD-3-Clause HOTP simplifies One Time Password systems for PHP Authentication Jakob Heuser justinrainbow/json-schema 5.3.0 MIT A library to validate a json schema. Bruno Prieto Reis, Justin Rainbow, Igor Wiedler and Robert Schönthal liuggio/statsd-php-client 1.0.18 MIT Statsd (Object Oriented) client library for PHP Giulio De Donato mck89/peast 1.16.3 BSD-3-Clause Peast is PHP library that generates AST for JavaScript code Marco Marchiò monolog/monolog 2.9.3 MIT Sends your logs to files, sockets, inboxes, databases and various web services Jordi Boggiano oojs/oojs-ui 0.51.2 MIT Provides library of common widgets, layouts, and windows. Bartosz Dziewoński, Ed Sanders, James D. Forrester, Kirsten Menger-Anderson, Kunal Mehta, Moriel Schottlender, Prateek Saxena, Roan Kattouw, Thiemo Kreuz, Timo Tijhof, Trevor Parscal and Volker E. pear/console_getopt 1.4.3 BSD-2-Clause More info available on: http://pear.php.net/package/Console_Getopt Andrei Zmievski, Stig Bakken and Greg Beaver pear/mail 2.0.0 BSD-3-Clause Class that provides multiple interfaces for sending emails. Chuck Hagenbuch, Armin Graefe, Richard Heyes and Aleksander Machniak pear/mail_mime 1.10.12 BSD-3-Clause Mail_Mime provides classes to create MIME messages Cipriano Groenendal and Aleksander Machniak pear/net_smtp 1.12.1 BSD-2-Clause An implementation of the SMTP protocol Jon Parise, Chuck Hagenbuch and Armin Graefe pear/net_socket 1.2.2 PHP License More info available on: http://pear.php.net/package/Net_Socket Chuck Hagenbuch, Aleksander Machniak and Stig Bakken pear/net_url2 2.2.2 BSD-3-Clause Class for parsing and handling URL. Provides parsing of URLs into their constituent parts (scheme, host, path etc.), URL generation, and resolving of relative URLs. David Coallier, Tom Klingenberg and Christian Schmidt pear/pear-core-minimal 1.10.15 BSD-3-Clause Minimal set of PEAR core files to be used as composer dependency Christian Weiske pear/pear_exception 1.0.2 BSD-2-Clause The PEAR Exception base class. Helgi Thormar and Greg Beaver psr/container 1.1.2 MIT Common Container Interface (PHP FIG PSR-11) PHP-FIG psr/http-client 1.0.3 MIT Common interface for HTTP clients PHP-FIG psr/http-factory 1.1.0 MIT PSR-17: Common interfaces for PSR-7 HTTP message factories PHP-FIG psr/http-message 1.1 MIT Common interface for HTTP messages PHP-FIG psr/log 1.1.4 MIT Common interface for logging libraries PHP-FIG ralouphie/getallheaders 3.0.3 MIT A polyfill for getallheaders. Ralph Khattar smarty/smarty 4.5.5 LGPL-3.0 Smarty - the compiling PHP template engine Monte Ohrt, Uwe Tews, Rodney Rehm and Simon Wisselink symfony/deprecation-contracts 2.5.3 MIT A generic function and convention to trigger deprecation notices Nicolas Grekas and Symfony Community symfony/polyfill-php80 1.31.0 MIT Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions Ion Bazan, Nicolas Grekas and Symfony Community symfony/polyfill-php81 1.31.0 MIT Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions Nicolas Grekas and Symfony Community symfony/polyfill-php82 1.31.0 MIT Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions Nicolas Grekas and Symfony Community symfony/polyfill-php83 1.31.0 MIT Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions Nicolas Grekas and Symfony Community symfony/yaml 5.4.45 MIT Loads and dumps YAML files Fabien Potencier and Symfony Community wikimedia/assert 0.5.1 MIT Provides runtime assertions Daniel Kinzler and Thiemo Kreuz wikimedia/at-ease 3.0.0 GPL-2.0-or-later Safe replacement to @ for suppressing warnings. Tim Starling and MediaWiki developers wikimedia/base-convert 2.0.2 GPL-2.0-or-later Convert an arbitrarily-long string from one numeric base to another, optionally zero-padding to a minimum column width. Brion Vibber and Tyler Romeo wikimedia/bcp-47-code 2.0.0 GPL-2.0-or-later Simple interface representing languages which have a BCP 47 code C. Scott Ananian wikimedia/cdb 3.0.0 GPL-2.0-or-later Constant Database (CDB) wrapper library for PHP. Provides pure-PHP fallback when dba_* functions are absent. Tim Starling, Chad Horohoe, Ori Livneh and Daniel Kinzler wikimedia/cldr-plural-rule-parser 2.0.0 GPL-2.0-or-later Evaluates plural rules specified in the CLDR project notation. Tim Starling and Niklas Laxström wikimedia/common-passwords 0.5.0 MIT List of the 100,000 most commonly used passwords Sam Reed wikimedia/composer-merge-plugin 2.1.0 MIT Composer plugin to merge multiple composer.json files Bryan Davis wikimedia/equivset 1.7.0 GPL-2.0-or-later Visually Equivalent Set of UTF-8 Characters Brooke Vibber, David Barratt, Thiemo Kreuz and Umherirrender wikimedia/html-formatter 4.1.0 GPL-2.0-or-later Performs transformations of HTML by wrapping around libxml2 and working around its countless bugs. MediaWiki contributors wikimedia/idle-dom 1.0.0 MIT DOM interfaces automatically generated from WebIDL C. Scott Ananian wikimedia/ip-utils 5.0.0 GPL-2.0-or-later Parse, match, and analyze IP addresses and CIDR ranges MediaWiki developers wikimedia/json-codec 3.0.3 GPL-2.0-or-later Interfaces to serialize and deserialize PHP objects to/from JSON Petr Pchelko, Daniel Kinzler and C. Scott Ananian wikimedia/less.php 5.1.2 Apache-2.0 PHP port of the LESS processor Timo Tijhof, Josh Schmidt, Matt Agar and Martin Jantošovič wikimedia/minify 2.8.0 Apache-2.0 Minification of JavaScript code and CSS stylesheets. Paul Copperman, Trevor Parscal, Timo Tijhof and Roan Kattouw wikimedia/normalized-exception 2.0.0 MIT A helper for making exceptions play nice with PSR-3 logging Gergő Tisza wikimedia/object-factory 5.0.1 GPL-2.0-or-later Construct objects from configuration instructions Bryan Davis wikimedia/parsoid 0.20.1 GPL-2.0-or-later Parsoid, a bidirectional parser between wikitext and HTML5 Wikimedia Content Transform Team and the broader MediaWiki community wikimedia/php-session-serializer 3.0.0 GPL-2.0-or-later Provides methods like PHP's session_encode and session_decode that don't mess with $_SESSION Brad Jorsch wikimedia/purtle 2.0.0 GPL-2.0-or-later Fast streaming RDF serializer Daniel Kinzler, Stanislav Malyshev, Thiemo Kreuz and C. Scott Ananian wikimedia/relpath 4.0.1 MIT Work with file paths to join or find the relative path Ori Livneh wikimedia/remex-html 4.1.1 MIT Fast HTML 5 parser Tim Starling wikimedia/request-timeout 2.0.0 MIT Request timeout library for Excimer with plain PHP fallback Tim Starling wikimedia/running-stat 2.1.0 GPL-2.0-or-later PHP implementations of online statistical algorithms Ori Livneh wikimedia/scoped-callback 5.0.0 GPL-2.0-or-later Make a callback run when a dummy object leaves the scope. Aaron Schulz wikimedia/services 4.0.0 GPL-2.0-or-later Generic service to manage named services using lazy instantiation based on instantiator callback functions Daniel Kinzler wikimedia/shellbox 4.1.1 MIT Library and server for containerized shell execution Tim Starling, Kunal Mehta and Max Semenik wikimedia/timestamp 4.1.1 GPL-2.0-or-later Creation, parsing, and conversion of timestamps Tyler Romeo wikimedia/utfnormal 4.0.0 GPL-2.0-or-later Contains Unicode normalization routines, including both pure PHP implementations and automatic use of the 'intl' PHP extension when present Brion Vibber wikimedia/wait-condition-loop 2.0.2 GPL-2.0-or-later Wait loop that reaches a condition or times out Aaron Schulz wikimedia/wikipeg 4.0.0 MIT Parser generator for JavaScript and PHP wikimedia/wrappedstring 4.0.1 MIT Automatically compact sequentially-outputted strings that share a common prefix / suffix pair. Timo Tijhof wikimedia/xmp-reader 0.9.4 GPL-2.0-or-later Reader for XMP data containing properties relevant to images Brian Wolff wikimedia/zest-css 3.0.1 MIT Fast, lightweight, extensible CSS selector engine for PHP Christopher Jeffrey and C. Scott Ananian zordius/lightncandy 1.2.6 MIT An extremely fast PHP implementation of handlebars ( http://handlebarsjs.com/ ) and mustache ( http://mustache.github.io/ ). Zordius Chen Installed client-side libraries Library Version License Authors Source CLDRPluralRuleParser 1.3.1-0dda851 MIT Santhosh Thottingal MediaWiki codex-design-tokens 1.14.0 GPL-2.0+ Design System team, Wikimedia Foundation MediaWiki codex-icons 1.14.0 MIT Design System team, Wikimedia Foundation MediaWiki codex 1.14.0 GPL-2.0+ Design System team, Wikimedia Foundation MediaWiki fetch-polyfill 3.6.2 MIT GitHub, Inc. MediaWiki intersection-observer 0.12.0 Apache-2.0 Philip Walton MediaWiki jquery.chosen 1.8.2 MIT Patrick Filler for Harvest, Matthew Lettini, Patrick Filler, Ken Earley, Christophe Coevoet, Koen Punt, and T.J. Schuck. MediaWiki jquery.client 3.0.0 MIT Trevor Parscal, Timo Tijhof, and Roan Kattouw MediaWiki jquery.i18n 1.0.10 MIT OR GPL-2.0-or-later Language Engineering team, Wikimedia Foundation MediaWiki jquery.ui 1.9.2 MIT OpenJS Foundation and other contributors MediaWiki jquery 3.7.1 MIT OpenJS Foundation and other contributors MediaWiki moment 2.25.2 MIT JS Foundation and other contributors MediaWiki mustache 4.2.0 MIT Michael Jackson, Jan Lehnardt, Phillip Johnsen, and other contributors MediaWiki oojs 7.0.1 MIT OOjs Team and other contributors MediaWiki ooui 0.51.2 MIT OOUI Team and other contributors MediaWiki pako 2.1.0 MIT AND Zlib Andrei Tuputcyn, Vitaly Puzrin, Friedel Ziegelmayer, Kirill Efimov, Jean-loup Gailly, and Mark Adler MediaWiki pinia 2.0.16 MIT Eduardo San Martin Morote MediaWiki qunitjs 2.20.0 MIT OpenJS Foundation and other contributors MediaWiki sinonjs 1.17.7 BSD-3-Clause Christian Johansen and other contributors MediaWiki swagger-ui 4.15.5 Apache-2.0 Kyle Shockey, Tony Tam, Vladimír Gorej, and others MediaWiki url 3.111.0-0ece79ce32 MIT Financial Times MediaWiki vue-demi 0.14.7 MIT Anthony Fu MediaWiki vue 3.4.27 MIT Yuxi (Evan) You MediaWiki vuex 4.0.2 MIT Yuxi (Evan) You MediaWiki Parser extension tags <categorytree>, <gallery>, <html>, <indicator>, <langconvert>, <nowiki>, <pre>, <ref> and <references> Parser function hooks {{anchorencode}}, {{BASEPAGENAME}}, {{BASEPAGENAMEE}}, {{#bcp47}}, {{bidi}}, {{canonicalurl}}, {{canonicalurle}}, {{CASCADINGSOURCES}}, {{#categorytree}}, {{DEFAULTSORT}}, {{#dir}}, {{DISPLAYTITLE}}, {{filepath}}, {{#FORMAL}}, {{#formatdate}}, {{formatnum}}, {{FULLPAGENAME}}, {{FULLPAGENAMEE}}, {{fullurl}}, {{fullurle}}, {{gender}}, {{grammar}}, {{int}}, {{#language}}, {{lc}}, {{lcfirst}}, {{localurl}}, {{localurle}}, {{NAMESPACE}}, {{NAMESPACEE}}, {{NAMESPACENUMBER}}, {{ns}}, {{nse}}, {{NUMBERINGROUP}}, {{NUMBEROFACTIVEUSERS}}, {{NUMBEROFADMINS}}, {{NUMBEROFARTICLES}}, {{NUMBEROFEDITS}}, {{NUMBEROFFILES}}, {{NUMBEROFPAGES}}, {{NUMBEROFUSERS}}, {{padleft}}, {{padright}}, {{pageid}}, {{PAGENAME}}, {{PAGENAMEE}}, {{PAGESINCATEGORY}}, {{PAGESIZE}}, {{plural}}, {{PROTECTIONEXPIRY}}, {{PROTECTIONLEVEL}}, {{REVISIONDAY}}, {{REVISIONDAY2}}, {{REVISIONID}}, {{REVISIONMONTH}}, {{REVISIONMONTH1}}, {{REVISIONTIMESTAMP}}, {{REVISIONUSER}}, {{REVISIONYEAR}}, {{ROOTPAGENAME}}, {{ROOTPAGENAMEE}}, {{#special}}, {{#speciale}}, {{SUBJECTPAGENAME}}, {{SUBJECTPAGENAMEE}}, {{SUBJECTSPACE}}, {{SUBJECTSPACEE}}, {{SUBPAGENAME}}, {{SUBPAGENAMEE}}, {{#tag}}, {{TALKPAGENAME}}, {{TALKPAGENAMEE}}, {{TALKSPACE}}, {{TALKSPACEE}}, {{uc}}, {{ucfirst}}, {{urlencode}} and {{#widget}}
- side-note: the wiki actually looks nice now that the skins are fixed; and there's no error at the top of every page
- diffing that with hetzner2, and looks like we're still missing
- extension: Renameuser
- extension: ParserFunctions
- according to this page, ParserFunctions should be included with MediaWiki core. I guess it just doesn't show up as an "extension" anymore like some of the others that were merged with core https://www.mediawiki.org/wiki/Extension:ParserFunctions
This extension comes with MediaWiki 1.18 and above. Thus you do not have to download it again. However, you still need to follow the other instructions provided.
- oh, I think I need to activate it with
wfLoadExtension( 'ParserFunctions' );
- yeah, I'm missing this
root@hetzner3 /var/www/html/wiki.opensourceecology.org # grep -i parser LocalSettings.php # ParserFunctions #require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" ); # Parser Cache should still use the DB per Aaron Schulz $wgParserCacheType = CACHE_DB; root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- I added it with
# re-enable ParserFunctions extension grep 'wfLoadExtension.*ParserFunctions' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e 's%#require_once\( "\$IP/extensions/ParserFunctions/ParserFunctions.php" \);%#require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );\n\nwfLoadExtension( "ParserFunctions" );\n%igs' ${vhostDir}/LocalSettings.php
- it looks like RenameUser was also merged to core https://www.mediawiki.org/wiki/Manual:Renameuser
- it's not clear if this one requires activation with wfLoadExtension() or not
- the way to check would be to login and go to Special:Renameuser
- well, it looks like the wiki is more broken than I realized
- clicking "Login" redirects to the osemain site for some reason
- and loading the frontpage has an error
[Z6gB-0saz-Rit8IwiiNJYQAAAAk] 2025-02-09 01:16:44: Fatal exception of type "RuntimeException"
- at the same time, this got spat-out to the apache error log
[Sun Feb 09 01:17:04.465571 2025] [proxy_fcgi:error] [pid 2169915:tid 2169915] [client 127.0.0.1:0] AH01071: Got error 'PHP message: PHP Warning: fopen(): open_basedir restriction in effect. File(/var/lib/php/tmp_upload/mw-GlobalIdGenerator-UUID-128) is not within the allowed path(s): (/home/wp/.wp-cli:/usr/share/pear:/var/lib/php/tmp:/var/lib/php/sessions:/var/www/html/www.openbuildinginstitute.org:/var/www/html/staging.openbuildinginstitute.org/:/var/www/html/staging.opensourceecology.org/:/var/www/html/www.opensourceecology.org/:/var/www/html/fef.opensourceecology.org/:/var/www/html/seedhome.openbuildinginstitute.org:/var/www/html/oswh.opensourceecology.org/:/var/www/html/wiki.opensourceecology.org/:/var/www/html/cacti.opensourceecology.org/:/var/www/html/store.opensourceecology.org:/var/www/html/microfactory.opensourceecology.org:/var/www/html/phplist.opensourceecology.org) in /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/uuid/GlobalIdGenerator.php on line 451; PHP message: PHP Warning: fopen(/var/lib/php/tmp_upload/mw-GlobalIdGenerator-UUID-128): Failed to open stream: Operation not permitted in /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/uuid/GlobalIdGenerator.php on line 451', referer: https://wiki.opensourceecology.org/
- yeah, this looks like an error in my php.ini config
- on one hand, I defined 'upload_tmp_dir' to be '/var/lib/php/tmp_upload'
user@personal:~/sandbox_local/ansible/hetzner3$ grep upload_tmp_dir roles/maltfield.php/templates/php_8.2.ini.j2 ;upload_tmp_dir = upload_tmp_dir = /var/lib/php/tmp_upload user@personal:~/sandbox_local/ansible/hetzner3$ grep basedir roles/maltfield.php/templates/php_8.2.ini.j2 ; open_basedir, if set, limits all file operations to the defined directory ; https://php.net/open-basedir open_basedir = "/home/wp/.wp-cli:/usr/share/pear:/var/lib/php/tmp:/var/lib/php/sessions:/var/www/html/www.openbuildinginstitute.org:/var/www/html/staging.openbuildinginstitute.org/:/var/www/html/staging.opensourceecology.org/:/var/www/html/www.opensourceecology.org/:/var/www/html/fef.opensourceecology.org/:/var/www/html/seedhome.openbuildinginstitute.org:/var/www/html/oswh.opensourceecology.org/:/var/www/html/wiki.opensourceecology.org/:/var/www/html/cacti.opensourceecology.org/:/var/www/html/store.opensourceecology.org:/var/www/html/microfactory.opensourceecology.org:/var/www/html/phplist.opensourceecology.org" ; Note: if open_basedir is set, the cache is disabled user@personal:~/sandbox_local/ansible/hetzner3$
- but on another hand, that's not included in the open_basedir var
- I fixed this in ansible https://github.com/OpenSourceEcology/ansible/commit/01d8dd8ea0a49a4306c22d96eb5878907196f3f4
- I pushed it with ansible and restarted both php and apache
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # systemctl restart php8.2-fpm apache2 root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # varnishadm 'ban req.http.host ~ "wiki.opensourceecology.org"' root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- but I'm still getting an error
[Sun Feb 09 07:15:57.201538 2025] [proxy_fcgi:error] [pid 2310677:tid 2310677] [client 127.0.0.1:0] AH01071: Got error 'PHP message: PHP Warning: fopen(): open_basedir restriction in effect. File(/var/lib/php/tmp_upload/mw-GlobalIdGenerator-UUID-128) is not within the allowed path(s): (/home/wp/.wp-cli:/usr/share/pear:/var/lib/php/tmp:/var/lib/php/tmp_upload:/var/lib/php/sessions:/var/www/html/www.openbuildinginstitute.org:/var/www/html/staging.openbuildinginstitute.org/:/var/www/html/staging.opensourceecology.org/:/var/www/html/www.opensourceecology.org/:/var/www/html/fef.opensourceecology.org/:/var/www/html/seedhome.openbuildinginstitute.org:/var/www/html/oswh.opensourceecology.org/:/var/www/html/wiki.opensourceecology.org/:/var/www/html/cacti.opensourceecology.org/:/var/www/html/store.opensourceecology.org:/var/www/html/microfactory.opensourceecology.org:/var/www/html/phplist.opensourceecology.org) in /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/uuid/GlobalIdGenerator.php on line 451; PHP message: PHP Warning: fopen(/var/lib/php/tmp_upload/mw-GlobalIdGenerator-UUID-128): Failed to open stream: Operation not permitted in /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/uuid/GlobalIdGenerator.php on line 451'
- it's curious that the diff between those last two error messages now shows that the relevant dir is, in fact, in the open_basedir list. what gives?
- oh, the dir doesn't exist!
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # ls -lah /var/lib/php total 24K drwxr-xr-x 6 root root 4,0K Sep 25 01:23 . drwxr-xr-x 36 root root 4,0K Oct 3 04:29 .. drwxr-xr-x 3 root root 4,0K Sep 25 01:23 modules drwx-wx-wt 2 root root 4,0K Feb 8 23:39 sessions drwx------ 2 www-data root 4,0K Sep 25 01:23 soap_cache drwx------ 2 www-data root 4,0K Jan 30 22:26 tmp root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- I updated the php role in ansible to create this dir https://github.com/OpenSourceEcology/ansible/commit/66cdaec9f5fcd716f6d97295c946ce90dfb85f1c
- I pushed ansible, restarted apache & php, and cleared varnish
- this time the front page loads. horray!
- I clicked the "login" button, but I'm still being redirected to www.opensourceecology.org for some reason
- yeah, for some reason attempting to load the login page just 301 redirects to osemain
user@disp1568:~$ curl -IL "https://opensourceecology.org/index.php?title=Special:UserLogin" HTTP/1.1 301 Moved Permanently Server: nginx Date: Sun, 09 Feb 2025 07:26:09 GMT Content-Type: text/html Content-Length: 162 Connection: keep-alive Location: https://www.opensourceecology.org/index.php Strict-Transport-Security: max-age=15552001 Public-Key-Pins: pin-sha256="UbSbHFsFhuCrSv9GNsqnGv4CbaVh5UV5/zzgjLgHh9c="; pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; pin-sha256="C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M="; pin-sha256="Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys="; pin-sha256="lCppFqbkrlJ3EcVFAkeip0+44VaoJUymbnOaEUk7tEU="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="Y9mvm0exBk1JoQ57f9Vm28jKo5lFm/woKcVxrYxu80o="; pin-sha256="EGn6R6CqT4z3ERscrqNl7q7RC//zJmDe9uBhS/rnCHU="; pin-sha256="NIdnza073SiyuN1TUa7DDGjOxc1p0nbfOCfbxPWAZGQ="; pin-sha256="fNZ8JI9p2D/C+bsB3LH3rWejY9BGBDeW0JhMOiMfa7A="; pin-sha256="oyD01TTXvpfBro3QSZc1vIlcMjrdLTiL/M9mLCPX+Zo="; pin-sha256="0cRTd+vc1hjNFlHcLgLCHXUeWqn80bNDH/bs9qMTSPo="; pin-sha256="MDhNnV1cmaPdDDONbiVionUHH2QIf2aHJwq/lshMWfA="; pin-sha256="OIZP7FgTBf7hUpWHIA7OaPVO2WrsGzTl9vdOHLPZmJU="; max-age=3600; includeSubDomains; report-uri="http://opensourceecology.org/hpkp-report" HTTP/1.1 301 Moved Permanently Server: nginx Date: Sun, 09 Feb 2025 07:25:09 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Connection: keep-alive Location: https://www.opensourceecology.org/ X-XSS-Protection: 1; mode=block X-Varnish: 16885187 3647332 Age: 7994 Via: 1.1 varnish-v4 Strict-Transport-Security: max-age=15552001 Public-Key-Pins: pin-sha256="UbSbHFsFhuCrSv9GNsqnGv4CbaVh5UV5/zzgjLgHh9c="; pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; pin-sha256="C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M="; pin-sha256="Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys="; pin-sha256="lCppFqbkrlJ3EcVFAkeip0+44VaoJUymbnOaEUk7tEU="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="Y9mvm0exBk1JoQ57f9Vm28jKo5lFm/woKcVxrYxu80o="; pin-sha256="EGn6R6CqT4z3ERscrqNl7q7RC//zJmDe9uBhS/rnCHU="; pin-sha256="NIdnza073SiyuN1TUa7DDGjOxc1p0nbfOCfbxPWAZGQ="; pin-sha256="fNZ8JI9p2D/C+bsB3LH3rWejY9BGBDeW0JhMOiMfa7A="; pin-sha256="oyD01TTXvpfBro3QSZc1vIlcMjrdLTiL/M9mLCPX+Zo="; pin-sha256="0cRTd+vc1hjNFlHcLgLCHXUeWqn80bNDH/bs9qMTSPo="; pin-sha256="MDhNnV1cmaPdDDONbiVionUHH2QIf2aHJwq/lshMWfA="; pin-sha256="OIZP7FgTBf7hUpWHIA7OaPVO2WrsGzTl9vdOHLPZmJU="; max-age=3600; includeSubDomains; report-uri="http://opensourceecology.org/hpkp-report" HTTP/1.1 200 OK Server: nginx Date: Sun, 09 Feb 2025 07:25:09 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 56627 Connection: keep-alive Link: <https://www.opensourceecology.org/wp-json/>; rel="https://api.w.org/" Link: <https://www.opensourceecology.org/>; rel=shortlink X-XSS-Protection: 1; mode=block X-Varnish: 16885189 15314564 Age: 7994 Via: 1.1 varnish-v4 Strict-Transport-Security: max-age=15552001 Public-Key-Pins: pin-sha256="UbSbHFsFhuCrSv9GNsqnGv4CbaVh5UV5/zzgjLgHh9c="; pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; pin-sha256="C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M="; pin-sha256="Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys="; pin-sha256="lCppFqbkrlJ3EcVFAkeip0+44VaoJUymbnOaEUk7tEU="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="Y9mvm0exBk1JoQ57f9Vm28jKo5lFm/woKcVxrYxu80o="; pin-sha256="EGn6R6CqT4z3ERscrqNl7q7RC//zJmDe9uBhS/rnCHU="; pin-sha256="NIdnza073SiyuN1TUa7DDGjOxc1p0nbfOCfbxPWAZGQ="; pin-sha256="fNZ8JI9p2D/C+bsB3LH3rWejY9BGBDeW0JhMOiMfa7A="; pin-sha256="oyD01TTXvpfBro3QSZc1vIlcMjrdLTiL/M9mLCPX+Zo="; pin-sha256="0cRTd+vc1hjNFlHcLgLCHXUeWqn80bNDH/bs9qMTSPo="; pin-sha256="MDhNnV1cmaPdDDONbiVionUHH2QIf2aHJwq/lshMWfA="; pin-sha256="OIZP7FgTBf7hUpWHIA7OaPVO2WrsGzTl9vdOHLPZmJU="; max-age=3600; includeSubDomains; report-uri="http://opensourceecology.org/hpkp-report" user@disp1568:~$
- I tried the "Request Account" page instead. This one works.
- It also has the hCaptcha at the bottom of the page, which is working great too ☺
- wtf, I found that if I click the "login" link on the "register" page, then I can get the login page! https://wiki.opensourceecology.org/wiki/Special:UserLogin
- ah, duh, I just realized from the curl above that I was loading the naked domain. For some reason the big "log in" link on the top-right of the site is missing the 'wiki.' subdomain. That's the problem.
- when I search the LocalSettings.php file for 'Login', this looks suspicious
################### # FUNCTION HOOKDS # ################### # See http://www.mediawiki.org/wiki/Manual:Hooks/GetLocalURL function fnMakeAbsoluteURL( &$title, &$url, $query ) { global $wgServer; $indexRe = "/title=Special:.*Login|\/Special:Contact/"; if ( preg_match( $indexRe, $url ) ) # $url = preg_replace( $indexRe, "", $url ); $url = $wgServer . $url; return true; } $wgHooks['GetLocalURL'][] = 'fnMakeAbsoluteURL';
- yeah, if I comment-out that block, then the issue goes away.
- ah, I think the issue here is that $wgServer is actually the naked domain
root@hetzner3 /var/www/html/wiki.opensourceecology.org # grep wgServer LocalSettings.php $wgServer = "http://opensourceecology.org"; #$wgScriptPath = "$wgServer/w"; # global $wgServer; # $url = $wgServer . $url; root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- oh, looks like I introduced this bug because the wiki was totally broken if wgServer wasn't defined, so I had added to the CHG process to uncomment this line
# uncomment wgServer (now defaults to 'false') https://www.mediawiki.org/wiki/Manual:$wgServer#Default_value sed -i 's%^\(\s*\)#$wgServer\(.*\)%\1$wgServer\2%' ${vhostDir}/LocalSettings.php
- but that defined it with http and the old naked domain, so I follow that up with this
# fix $wgServer grep '#$wgServer' ${vhostDir}/LocalSettings.php || perl -0777 -pi -e 's%\$wgServer = "http://opensourceecology.org"; %#\$wgServer = "http://opensourceecology.org";\n\$wgServer = "https://wiki.opensourceecology.org";\n%igs' ${vhostDir}/LocalSettings.php
- now I can load the login page. Yay!
Fri Feb 07, 2025
- here's tofu 2/3 (VPN, exit in Hungary)
Hungary 2025-02-07 INFO: Determining Latest Version of Wordpress Core INFO: Determining Latest Version of Wordpress Plugins . . . . INFO: Determining Latest Version of Wordpress Themes . . https://downloads.wordpress.org/release/wordpress-6.7.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/polylang.3.6.6.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/translatepress-multilingual.2.9.4.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/google-language-translator.6.0.20.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/gtranslate.3.0.7.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/hestia.3.2.8.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/neve.4.0.1.zip ######################################################################### 100.0% 2025-02-07 296K google-language-translator.6.0.20.zip 700K gtranslate.3.0.7.zip 8.0M hestia.3.2.8.zip 7.1M neve.4.0.1.zip 64K plugin.json 592K polylang.3.6.6.zip 2.1M translatepress-multilingual.2.9.4.zip 28M wordpress-6.7.1.zip 01246c9c90f1373ee83d8e5884e5abba264c62e7301d99a468fd8eb95144be05 google-language-translator.6.0.20.zip 171eb362801ea28e74b302cd0fee472dbd5025a89f6c1634b5ca1029362a678c gtranslate.3.0.7.zip 241b8c804ed1af72b1c9aa52f603730a52ebf7850383ac2e4d9dd163f6cfc3ca hestia.3.2.8.zip 2b51e758d61b9d78ebd57d2afd9a967335bcb6866c5bff5a0d7157eecb6ec8cb neve.4.0.1.zip 002bb1e14326a02cf2a8e06a0f3e0ca2326256fd9a5941a659b5f4bf9341ed78 plugin.json 3a4a7f8872d16cb3538e948b4f85acee7d823c04fe8c820259ef6e2735093bbb polylang.3.6.6.zip 16f2e24d14af341c6208fb9cc08d0c4db33bf813a5b1668930e30c6179a1111c translatepress-multilingual.2.9.4.zip 75f4e9cb71e583ca3f8b19691b5754adb9c981580762137f82443e1eec468f9c wordpress-6.7.1.zip user@disp8772:/tmp/tmp.7XNQH4tjs9$
- ...
- back to the wiki
- yesterday I was finally able to confirm the upgrade to 1.35.0 on Special:Version https://wiki.opensourceecology.org/wiki/Special:Version
- the fix was to do a double-tap: first run the update script, then run the populateContentTables script, then run the update script again
- today I'll try to see if I can finally do the second upgrade from 1.35 to 1.43
- well, after installing the files and fixing permissions, second upgrade fails with error
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # cat /var/tmp/CHG_20241228_wiki_1.35-to-1.43/update-to-v1.43.log PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 Error: The Cite extension cannot be loaded. Check that all of its files are installed properly. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(57): MediaWiki\Registration\ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(282): wfLoadExtension() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once('...') #5 {main} PHP Fatal error: Error Loading extension. Unable to open file /Cite/extension.json: filemtime(): stat failed for /Cite/extension.json in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/MissingExtensionException.php on line 102 root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- yeah, I think somehow I copied-in an old LocalSettings.php file, but I don't understand how. I'll have to investigate this further with a future/fresh snapshot.
- For now I'm just going to manually copy these
root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls /var/tmp/CHG_20241228_wiki_1.35-to-1.43/pre/wiki.opensourceecology.org.20241228 cache htdocs LocalSettings.php wiki.opensourceecology.org root@hetzner3 /var/www/html/wiki.opensourceecology.org # root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls /var/tmp/CHG_20241228_wiki_1.35-to-1.43/pre/wiki.opensourceecology.org.20241228/wiki.opensourceecology.org/ cache htdocs LocalSettings.20250206_220118.php LocalSettings.php root@hetzner3 /var/www/html/wiki.opensourceecology.org # root@hetzner3 /var/www/html/wiki.opensourceecology.org # rsync -av --progress /var/tmp/CHG_20241228_wiki_1.35-to-1.43/pre/wiki.opensourceecology.org.20241228/wiki.opensourceecology.org/LocalSettings.* /var/www/html/wiki.opensourceecology.org/ sending incremental file list LocalSettings.20250206_220118.php 17.440 100% 0,00kB/s 0:00:00 (xfr#1, to-chk=1/2) LocalSettings.php 17.946 100% 17,11MB/s 0:00:00 (xfr#2, to-chk=0/2) sent 35.604 bytes received 54 bytes 71.316,00 bytes/sec total size is 35.386 speedup is 0,99 root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- ok, that fixed that error
- after this upgrade is finished, I need to enumerate all of the skins and extensions that are currently active, diff that with the same output from hetzner2, and then update the LocalSettings.php file as-needed
- geez, it took 52 minutes for that upgrade to run, and it exited with an error
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" &> ${chg_dir}/update-to-v1.43.log real 52m7,118s user 0m0,004s sys 0m0,004s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # <pre> # here's the tail of the update log <pre> root@hetzner3 /var/www/html/wiki.opensourceecology.org # tail -n30 /var/tmp/CHG_20241228_wiki_1.35-to-1.43/update-to-v1.43.log Table pagelinks contains pl_title field. Dropping...done. Modifying page_links_updated field of table page...done. Changing table options of 'searchindex'. ...migrating searchindex table...done. Running MediaWiki\Extension\OATHAuth\Maintenance\UpdateTOTPScratchTokensToArray... Done. done. Running MediaWiki\Extension\OATHAuth\Maintenance\UpdateForMultipleDevicesSupport... Wikimedia\Rdbms\DBQueryError from line 1198 of /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php: Error 1146: Table 'osewiki_db.wiki_oathauth_types' doesn't exist Function: MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry::getModuleIdsFromDatabase Query: SELECT oat_id,oat_name FROM `wiki_oathauth_types` #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database->getQueryException() #1 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database->getQueryExceptionAndLog() #2 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database->reportQueryError() #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php(1345): Wikimedia\Rdbms\Database->query() #4 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database->select() #5 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/DBConnRef.php(351): Wikimedia\Rdbms\DBConnRef->__call() #6 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/querybuilder/SelectQueryBuilder.php(744): Wikimedia\Rdbms\DBConnRef->select() #7 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/OATHAuth/src/OATHAuthModuleRegistry.php(132): Wikimedia\Rdbms\SelectQueryBuilder->fetchResultSet() #8 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/OATHAuth/src/OATHAuthModuleRegistry.php(93): MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry->getModuleIdsFromDatabase() #9 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/OATHAuth/maintenance/UpdateForMultipleDevicesSupport.php(56): MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry->getModuleIds() #10 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/includes/LoggedUpdateMaintenance.php(51): MediaWiki\Extension\OATHAuth\Maintenance\UpdateForMultipleDevicesSupport->doDBUpdates() #11 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(1140): MediaWiki\Maintenance\LoggedUpdateMaintenance->execute() #12 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater->runMaintenance() #13 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(552): MediaWiki\Installer\DatabaseUpdater->runUpdates() #14 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater->doUpdates() #15 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki->execute() #16 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner->run() #17 {main} root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- The internet suggests that we should disable the 'oatuh' extension, but apparently that's required for 2fa – which we want https://www.mediawiki.org/wiki/Topic:Yakailc03f0u43c0
- looks like this OATHAuth is part of core
root@hetzner3 /var/tmp/mediawiki # ls mediawiki-1.43.0/extensions/ AbuseFilter CodeEditor Gadgets Linter Nuke PdfHandler Scribunto TemplateData VisualEditor CategoryTree ConfirmEdit ImageMap LoginNotify OATHAuth Poem SecureLinkFixer TextExtracts WikiEditor Cite DiscussionTools InputBox Math PageImages README SpamBlacklist Thanks CiteThisPage Echo Interwiki MultimediaViewer ParserFunctions ReplaceText SyntaxHighlight_GeSHi TitleBlacklist root@hetzner3 /var/tmp/mediawiki # root@hetzner3 /var/tmp/mediawiki # ls mediawiki-1.43.0/extensions/OATHAuth/ CODE_OF_CONDUCT.md composer.json COPYING extension.json i18n maintenance modules OATHAuth.alias.php ServiceWiring.php sql src tests root@hetzner3 /var/tmp/mediawiki #
- one person in ^ that thread suggests they had to update to v1.41 before upgrading to 1.43. So I may have to do three updates :(
- actually, it reads like you can just do the second upgrade with the version of this one extension from 1.41 and then run the update script. So core doesn't need to be updated with 3 different versions, at least
- a couple people said you can get around this by running "(wiki folder)/extensions/OATHAuth/sql/sqlite/tables-generated.sql"
- this isn't a script; it's just an sql file
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # cat $docrootDir/extensions/OATHAuth/sql/sqlite/tables-generated.sql -- This file is automatically generated using maintenance/generateSchemaSql.php. -- Source: sql/tables.json -- Do not modify this file directly. -- See https://www.mediawiki.org/wiki/Manual:Schema_changes CREATE TABLE /*_*/oathauth_types ( oat_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, oat_name BLOB NOT NULL ); CREATE UNIQUE INDEX oat_name ON /*_*/oathauth_types (oat_name); CREATE TABLE /*_*/oathauth_devices ( oad_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, oad_user INTEGER NOT NULL, oad_type INTEGER NOT NULL, oad_name BLOB DEFAULT NULL, oad_created BLOB DEFAULT NULL, oad_data BLOB DEFAULT NULL ); CREATE INDEX oad_user ON /*_*/oathauth_devices (oad_user); root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- I tried running this using `mysql`, but it failed
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # mysql -u $dbUser -p${dbPass} $dbName < ${docrootDir}/extensions/OATHAuth/sql/sqlite/tables-generated.sql ERROR 1064 (42000) at line 5: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NOT NULL, oat_name BLOB NOT NULL )' at line 2 root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # cat ${docrootDir}/extensions/OATHAuth/sql/sqlite/tables-generated.sql | mysql -u $dbUser -p${dbPass} $dbName ERROR 1064 (42000) at line 5: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NOT NULL, oat_name BLOB NOT NULL )' at line 2 root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- I tried pasting it manually into the command-line, and I got the same result
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 1081219 Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [osewiki_db]> CREATE TABLE /*_*/oathauth_types ( -> oat_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -> oat_name BLOB NOT NULL -> ); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NOT NULL, oat_name BLOB NOT NULL )' at line 2 MariaDB [osewiki_db]>
- after several trial-and-errors, I got this to work
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # mysql -u $dbUser -p${dbPass} $dbName Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 1081332 Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [osewiki_db]> CREATE TABLE wiki_oathauth_types ( -> oat_id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, -> oat_name BLOB NOT NULL -> ); Query OK, 0 rows affected (0,028 sec) MariaDB [osewiki_db]>
- I tried many things, but I think what worked was changing AUTOINCREMENT to AUTO_INCREMENT, per https://mariadb.com/kb/en/create-table/#column-definitions
- I tried again, this time doing a sed substitue for AUTOINCREMENT to AUTO_INCREMENT, and this time I had no errors
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # cat $docrootDir/extensions/OATHAuth/sql/sqlite/tables-generated.sql | sed 's/AUTOINCREMENT/AUTO_INCREMENT/g' | mysql -u $dbUser -p${dbPass} $dbName root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- after this, I tried to run the upgrade scripts again, but it failed in 5 seconds with this error
root@hetzner3 /var/www/html/wiki.opensourceecology.org # tail -n30 /var/tmp/CHG_20241228_wiki_1.35-to-1.43/update-to-v1.43.log ...ipblocks doesn't exist. ...pagelinks table does not contain pl_title field. ...page_links_updated in table page already modified by patch patch-page-page_links_updated-noinfinite.sql. ...searchindex table has already been migrated. Running MediaWiki\Extension\OATHAuth\Maintenance\UpdateTOTPScratchTokensToArray... ...Update 'MediaWiki\Extension\OATHAuth\Maintenance\UpdateTOTPScratchTokensToArray' already logged as completed. Use --force to run it again. done. Running MediaWiki\Extension\OATHAuth\Maintenance\UpdateForMultipleDevicesSupport... Wikimedia\Rdbms\DBQueryError from line 1198 of /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php: Error 1146: Table 'osewiki_db.wiki_oathauth_types' doesn't exist Function: MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry::getModuleIdsFromDatabase Query: SELECT oat_id,oat_name FROM `wiki_oathauth_types` #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database->getQueryException() #1 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database->getQueryExceptionAndLog() #2 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database->reportQueryError() #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/Database.php(1345): Wikimedia\Rdbms\Database->query() #4 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database->select() #5 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/database/DBConnRef.php(351): Wikimedia\Rdbms\DBConnRef->__call() #6 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/rdbms/querybuilder/SelectQueryBuilder.php(744): Wikimedia\Rdbms\DBConnRef->select() #7 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/OATHAuth/src/OATHAuthModuleRegistry.php(132): Wikimedia\Rdbms\SelectQueryBuilder->fetchResultSet() #8 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/OATHAuth/src/OATHAuthModuleRegistry.php(93): MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry->getModuleIdsFromDatabase() #9 /var/www/html/wiki.opensourceecology.org/htdocs/extensions/OATHAuth/maintenance/UpdateForMultipleDevicesSupport.php(56): MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry->getModuleIds() #10 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/includes/LoggedUpdateMaintenance.php(51): MediaWiki\Extension\OATHAuth\Maintenance\UpdateForMultipleDevicesSupport->doDBUpdates() #11 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(1140): MediaWiki\Maintenance\LoggedUpdateMaintenance->execute() #12 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater->runMaintenance() #13 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(552): MediaWiki\Installer\DatabaseUpdater->runUpdates() #14 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater->doUpdates() #15 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki->execute() #16 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner->run() #17 {main} root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- I checked the db, and I see the tables it created are missing the 'wiki_' prefix. I guess that's what the '/*_*/' was for? not sure how that's *supposed* to work
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # mysql -u $dbUser -p${dbPass} $dbName Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 1081392 Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [osewiki_db]> show tables limit 5; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'limit 5' at line 1 MariaDB [osewiki_db]> show tables; +-----------------------------+ | Tables_in_osewiki_db | +-----------------------------+ | oathauth_devices | | oathauth_types | | wiki_account_credentials | | wiki_account_requests | ...
- a second sed to fix that
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # cat $docrootDir/extensions/OATHAuth/sql/sqlite/tables-generated.sql | sed 's/AUTOINCREMENT/AUTO_INCREMENT/g' | sed 's%/\*_\*/%wiki_%g' -- This file is automatically generated using maintenance/generateSchemaSql.php. -- Source: sql/tables.json -- Do not modify this file directly. -- See https://www.mediawiki.org/wiki/Manual:Schema_changes CREATE TABLE wiki_oathauth_types ( oat_id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, oat_name BLOB NOT NULL ); CREATE UNIQUE INDEX oat_name ON wiki_oathauth_types (oat_name); CREATE TABLE wiki_oathauth_devices ( oad_id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, oad_user INTEGER NOT NULL, oad_type INTEGER NOT NULL, oad_name BLOB DEFAULT NULL, oad_created BLOB DEFAULT NULL, oad_data BLOB DEFAULT NULL ); CREATE INDEX oad_user ON wiki_oathauth_devices (oad_user); root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- and we run it to add the DBs
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # cat $docrootDir/extensions/OATHAuth/sql/sqlite/tables-generated.sql | sed 's/AUTOINCREMENT/AUTO_INCREMENT/g' | sed 's%/\*_\*/%wiki_%g' | mysql -u $dbUser -p${dbPass} $dbName root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- it ran in 5 seconds again, but this time it exited with "Done" – no errors
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" &> ${chg_dir}/update-to-v1.43.log real 0m5,290s user 0m0,005s sys 0m0,004s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- here's the run log output
root@hetzner3 /var/www/html/wiki.opensourceecology.org # tail -n30 /var/tmp/CHG_20241228_wiki_1.35-to-1.43/update-to-v1.43.log done. ...ipblocks doesn't exist. ...pagelinks table does not contain pl_title field. ...page_links_updated in table page already modified by patch patch-page-page_links_updated-noinfinite.sql. ...searchindex table has already been migrated. Running MediaWiki\Extension\OATHAuth\Maintenance\UpdateTOTPScratchTokensToArray... ...Update 'MediaWiki\Extension\OATHAuth\Maintenance\UpdateTOTPScratchTokensToArray' already logged as completed. Use --force to run it again. done. Running MediaWiki\Extension\OATHAuth\Maintenance\UpdateForMultipleDevicesSupport... Now processing rows with id between 0 and 500... (updated 0 users so far) Now processing rows with id between 500 and 1000... (updated 0 users so far) Now processing rows with id between 1000 and 1500... (updated 0 users so far) Now processing rows with id between 1500 and 2000... (updated 0 users so far) Now processing rows with id between 2000 and 2500... (updated 0 users so far) Now processing rows with id between 2500 and 3000... (updated 0 users so far) Now processing rows with id between 3000 and 3500... (updated 0 users so far) Now processing rows with id between 3500 and 4000... (updated 0 users so far) Done, updated data for 1 users. done. ...oathauth_types table already exists. Dropping table oathauth_users ...done. ...site_stats is populated...done. ...Update 'cleanup empty categories' already logged as completed. Use --force to run it again. Fixing log entries with log_title starting with 'User:#' ...Processing unblock rows with IDs 16061 to 110080 done. Set the local repo temp zone container to be private. Purging caches...done. Done in 0.1 s. root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- I tried to update the thread with this https://www.mediawiki.org/wiki/Topic:Yakailc03f0u43c0
> I've probably found solution about this. (maybe?) Before run update.php, run <code>(wiki folder)/extensions/OATHAuth/sql/sqlite/tables-generated.sql</code> manually fwiw, we found that the sql file had errors <pre> ERROR 1064 (42000) at line 5: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NOT NULL, oat_name BLOB NOT NULL )' at line 2
The solution was to replace "AUTOINCREMENT" with "AUTO_INCREMENT".
And we also had to replace "/*_*/" with our actual table prefix "wiki_".
Running this command before the upgrade works for us
cat $docrootDir/extensions/OATHAuth/sql/sqlite/tables-generated.sql | sed 's/AUTOINCREMENT/AUTO_INCREMENT/g' | sed 's%/\*_\*/%wiki_%g' | mysql -u $dbUser -p${dbPass} $dbName
- ...but I got an error
'Your IP address is in a range that has been [[m:Special:MyLanguage/Global blocks|blocked on all Wikimedia Foundation wikis]].' The block was made by JJMC89. The reason given is [[m:Special:MyLanguage/NOP|Open proxy/Webhost]]: See the [[m:WM:OP/H|help page]] if you are affected . * Start of block: 01:01, 3 July 2024 * Expiry of block: 01:01, 3 July 2027 Your current IP address is REDACTED. The blocked range is REDACTED/20. Please include all above details in any queries you make. If you believe you were blocked by mistake, you can find additional information and instructions in the No open proxies global policy. Otherwise, to discuss the block please post a request for review on Meta-Wiki. You could also send an email to the stewards VRT queue at "stewards@wikimedia.org" including all above details.
- I tried to load the Special:Version, but it still says it's running v1.35.0 https://wiki.opensourceecology.org/wiki/Special:Version
- oh, I cleared the varnish cache, refreshed, and now it's saying it's v1.43.0. Great!
- ok, here's the contents of the version page now
Installed software Product Version MediaWiki 1.43.0 PHP 8.2.26 (fpm-fcgi) ICU 72.1 MariaDB 10.11.6-MariaDB-0+deb12u1 Entry point URLs Entry point URL Article path /wiki/$1 Script path / index.php /index.php api.php /api.php rest.php /rest.php Installed skins No skins currently installed. Installed extensions Special pagesExtension Version License Description Authors Interwiki 3.2 GPL-2.0-or-later Adds a special page to view and edit the interwiki table Stephanie Amanda Stevens, Alexandre Emsenhuber, Robin Pepermans, Siebrand Mazeland, Platonides, Raimond Spekking, Sam Reed, Jack Phoenix, Calimonius the Estrange and others Nuke – GPL-2.0-or-later Gives administrators the ability to mass delete pages Brion Vibber and Jeroen De Dauw Replace Text 1.8 GPL-2.0-or-later Provides a special page to allow administrators to do a global string find-and-replace on all the content pages of a wiki Yaron Koren, Niklas Laxström and others Parser hooksExtension Version License Description Authors Cite – GPL-2.0-or-later Adds <ref> and <references> tags for citations Ævar Arnfjörð Bjarmason, Andrew Garrett, Brion Vibber, Ed Sanders, Marius Hoch, Steve Sanbeg, Trevor Parscal and others OtherExtension Version License Description Authors Gadgets – GPL-2.0-or-later Lets users select custom CSS and JavaScript gadgets in their preferences Daniel Kinzler, Max Semenik, Timo Tijhof and Siddharth VP OATHAuth 0.5.0 GPL-2.0-or-later AND GPL-3.0-or-later Provides authentication support using HMAC based one-time passwords Ryan Lane, Robert Vogel <vogel@hallowelt.com>, Dejan Savuljesku <savuljesku@hallowelt.com> and Taavi Väänänen Installed libraries Installed server-side libraries Library Version License Description Authors bacon/bacon-qr-code 2.0.8 BSD-2-Clause BaconQrCode is a QR code generator for PHP. Ben Scholzen 'DASPRiD' christian-riesen/base32 1.6.0 MIT Base32 encoder/decoder according to RFC 4648 Christian Riesen composer/semver 3.4.3 MIT Semver library that offers utilities, version constraint parsing and validation. Nils Adermann, Jordi Boggiano and Rob Bast cssjanus/cssjanus 2.3.0 Apache-2.0 Convert CSS stylesheets between left-to-right and right-to-left. Roan Kattouw, Trevor Parscal and Timo Tijhof dasprid/enum 1.0.5 BSD-2-Clause PHP 7.1 enum implementation Ben Scholzen 'DASPRiD' endroid/qr-code 4.6.1 MIT Endroid QR Code Jeroen van den Enden guzzlehttp/guzzle 7.9.2 MIT Guzzle is a PHP HTTP client library Graham Campbell, Michael Dowling, Jeremy Lindblom, George Mponos, Tobias Nyholm, Márk Sági-Kazár and Tobias Schultze guzzlehttp/promises 2.0.4 MIT Guzzle promises library Graham Campbell, Michael Dowling, Tobias Nyholm and Tobias Schultze guzzlehttp/psr7 2.7.0 MIT PSR-7 message implementation that also provides common utility methods Graham Campbell, Michael Dowling, George Mponos, Tobias Nyholm, Márk Sági-Kazár, Tobias Schultze and Márk Sági-Kazár jakobo/hotp-php 2.0.0 BSD-3-Clause HOTP simplifies One Time Password systems for PHP Authentication Jakob Heuser justinrainbow/json-schema 5.3.0 MIT A library to validate a json schema. Bruno Prieto Reis, Justin Rainbow, Igor Wiedler and Robert Schönthal liuggio/statsd-php-client 1.0.18 MIT Statsd (Object Oriented) client library for PHP Giulio De Donato mck89/peast 1.16.3 BSD-3-Clause Peast is PHP library that generates AST for JavaScript code Marco Marchiò monolog/monolog 2.9.3 MIT Sends your logs to files, sockets, inboxes, databases and various web services Jordi Boggiano oojs/oojs-ui 0.51.2 MIT Provides library of common widgets, layouts, and windows. Bartosz Dziewoński, Ed Sanders, James D. Forrester, Kirsten Menger-Anderson, Kunal Mehta, Moriel Schottlender, Prateek Saxena, Roan Kattouw, Thiemo Kreuz, Timo Tijhof, Trevor Parscal and Volker E. pear/console_getopt 1.4.3 BSD-2-Clause More info available on: http://pear.php.net/package/Console_Getopt Andrei Zmievski, Stig Bakken and Greg Beaver pear/mail 2.0.0 BSD-3-Clause Class that provides multiple interfaces for sending emails. Chuck Hagenbuch, Armin Graefe, Richard Heyes and Aleksander Machniak pear/mail_mime 1.10.12 BSD-3-Clause Mail_Mime provides classes to create MIME messages Cipriano Groenendal and Aleksander Machniak pear/net_smtp 1.12.1 BSD-2-Clause An implementation of the SMTP protocol Jon Parise, Chuck Hagenbuch and Armin Graefe pear/net_socket 1.2.2 PHP License More info available on: http://pear.php.net/package/Net_Socket Chuck Hagenbuch, Aleksander Machniak and Stig Bakken pear/net_url2 2.2.2 BSD-3-Clause Class for parsing and handling URL. Provides parsing of URLs into their constituent parts (scheme, host, path etc.), URL generation, and resolving of relative URLs. David Coallier, Tom Klingenberg and Christian Schmidt pear/pear-core-minimal 1.10.15 BSD-3-Clause Minimal set of PEAR core files to be used as composer dependency Christian Weiske pear/pear_exception 1.0.2 BSD-2-Clause The PEAR Exception base class. Helgi Thormar and Greg Beaver psr/container 1.1.2 MIT Common Container Interface (PHP FIG PSR-11) PHP-FIG psr/http-client 1.0.3 MIT Common interface for HTTP clients PHP-FIG psr/http-factory 1.1.0 MIT PSR-17: Common interfaces for PSR-7 HTTP message factories PHP-FIG psr/http-message 1.1 MIT Common interface for HTTP messages PHP-FIG psr/log 1.1.4 MIT Common interface for logging libraries PHP-FIG ralouphie/getallheaders 3.0.3 MIT A polyfill for getallheaders. Ralph Khattar symfony/deprecation-contracts 2.5.3 MIT A generic function and convention to trigger deprecation notices Nicolas Grekas and Symfony Community symfony/polyfill-php80 1.31.0 MIT Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions Ion Bazan, Nicolas Grekas and Symfony Community symfony/polyfill-php81 1.31.0 MIT Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions Nicolas Grekas and Symfony Community symfony/polyfill-php82 1.31.0 MIT Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions Nicolas Grekas and Symfony Community symfony/polyfill-php83 1.31.0 MIT Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions Nicolas Grekas and Symfony Community symfony/yaml 5.4.45 MIT Loads and dumps YAML files Fabien Potencier and Symfony Community wikimedia/assert 0.5.1 MIT Provides runtime assertions Daniel Kinzler and Thiemo Kreuz wikimedia/at-ease 3.0.0 GPL-2.0-or-later Safe replacement to @ for suppressing warnings. Tim Starling and MediaWiki developers wikimedia/base-convert 2.0.2 GPL-2.0-or-later Convert an arbitrarily-long string from one numeric base to another, optionally zero-padding to a minimum column width. Brion Vibber and Tyler Romeo wikimedia/bcp-47-code 2.0.0 GPL-2.0-or-later Simple interface representing languages which have a BCP 47 code C. Scott Ananian wikimedia/cdb 3.0.0 GPL-2.0-or-later Constant Database (CDB) wrapper library for PHP. Provides pure-PHP fallback when dba_* functions are absent. Tim Starling, Chad Horohoe, Ori Livneh and Daniel Kinzler wikimedia/cldr-plural-rule-parser 2.0.0 GPL-2.0-or-later Evaluates plural rules specified in the CLDR project notation. Tim Starling and Niklas Laxström wikimedia/common-passwords 0.5.0 MIT List of the 100,000 most commonly used passwords Sam Reed wikimedia/composer-merge-plugin 2.1.0 MIT Composer plugin to merge multiple composer.json files Bryan Davis wikimedia/equivset 1.7.0 GPL-2.0-or-later Visually Equivalent Set of UTF-8 Characters Brooke Vibber, David Barratt, Thiemo Kreuz and Umherirrender wikimedia/html-formatter 4.1.0 GPL-2.0-or-later Performs transformations of HTML by wrapping around libxml2 and working around its countless bugs. MediaWiki contributors wikimedia/idle-dom 1.0.0 MIT DOM interfaces automatically generated from WebIDL C. Scott Ananian wikimedia/ip-utils 5.0.0 GPL-2.0-or-later Parse, match, and analyze IP addresses and CIDR ranges MediaWiki developers wikimedia/json-codec 3.0.3 GPL-2.0-or-later Interfaces to serialize and deserialize PHP objects to/from JSON Petr Pchelko, Daniel Kinzler and C. Scott Ananian wikimedia/less.php 5.1.2 Apache-2.0 PHP port of the LESS processor Timo Tijhof, Josh Schmidt, Matt Agar and Martin Jantošovič wikimedia/minify 2.8.0 Apache-2.0 Minification of JavaScript code and CSS stylesheets. Paul Copperman, Trevor Parscal, Timo Tijhof and Roan Kattouw wikimedia/normalized-exception 2.0.0 MIT A helper for making exceptions play nice with PSR-3 logging Gergő Tisza wikimedia/object-factory 5.0.1 GPL-2.0-or-later Construct objects from configuration instructions Bryan Davis wikimedia/parsoid 0.20.1 GPL-2.0-or-later Parsoid, a bidirectional parser between wikitext and HTML5 Wikimedia Content Transform Team and the broader MediaWiki community wikimedia/php-session-serializer 3.0.0 GPL-2.0-or-later Provides methods like PHP's session_encode and session_decode that don't mess with $_SESSION Brad Jorsch wikimedia/purtle 2.0.0 GPL-2.0-or-later Fast streaming RDF serializer Daniel Kinzler, Stanislav Malyshev, Thiemo Kreuz and C. Scott Ananian wikimedia/relpath 4.0.1 MIT Work with file paths to join or find the relative path Ori Livneh wikimedia/remex-html 4.1.1 MIT Fast HTML 5 parser Tim Starling wikimedia/request-timeout 2.0.0 MIT Request timeout library for Excimer with plain PHP fallback Tim Starling wikimedia/running-stat 2.1.0 GPL-2.0-or-later PHP implementations of online statistical algorithms Ori Livneh wikimedia/scoped-callback 5.0.0 GPL-2.0-or-later Make a callback run when a dummy object leaves the scope. Aaron Schulz wikimedia/services 4.0.0 GPL-2.0-or-later Generic service to manage named services using lazy instantiation based on instantiator callback functions Daniel Kinzler wikimedia/shellbox 4.1.1 MIT Library and server for containerized shell execution Tim Starling, Kunal Mehta and Max Semenik wikimedia/timestamp 4.1.1 GPL-2.0-or-later Creation, parsing, and conversion of timestamps Tyler Romeo wikimedia/utfnormal 4.0.0 GPL-2.0-or-later Contains Unicode normalization routines, including both pure PHP implementations and automatic use of the 'intl' PHP extension when present Brion Vibber wikimedia/wait-condition-loop 2.0.2 GPL-2.0-or-later Wait loop that reaches a condition or times out Aaron Schulz wikimedia/wikipeg 4.0.0 MIT Parser generator for JavaScript and PHP wikimedia/wrappedstring 4.0.1 MIT Automatically compact sequentially-outputted strings that share a common prefix / suffix pair. Timo Tijhof wikimedia/xmp-reader 0.9.4 GPL-2.0-or-later Reader for XMP data containing properties relevant to images Brian Wolff wikimedia/zest-css 3.0.1 MIT Fast, lightweight, extensible CSS selector engine for PHP Christopher Jeffrey and C. Scott Ananian zordius/lightncandy 1.2.6 MIT An extremely fast PHP implementation of handlebars ( http://handlebarsjs.com/ ) and mustache ( http://mustache.github.io/ ). Zordius Chen Installed client-side libraries Library Version License Authors Source CLDRPluralRuleParser 1.3.1-0dda851 MIT Santhosh Thottingal MediaWiki codex-design-tokens 1.14.0 GPL-2.0+ Design System team, Wikimedia Foundation MediaWiki codex-icons 1.14.0 MIT Design System team, Wikimedia Foundation MediaWiki codex 1.14.0 GPL-2.0+ Design System team, Wikimedia Foundation MediaWiki fetch-polyfill 3.6.2 MIT GitHub, Inc. MediaWiki intersection-observer 0.12.0 Apache-2.0 Philip Walton MediaWiki jquery.chosen 1.8.2 MIT Patrick Filler for Harvest, Matthew Lettini, Patrick Filler, Ken Earley, Christophe Coevoet, Koen Punt, and T.J. Schuck. MediaWiki jquery.client 3.0.0 MIT Trevor Parscal, Timo Tijhof, and Roan Kattouw MediaWiki jquery.i18n 1.0.10 MIT OR GPL-2.0-or-later Language Engineering team, Wikimedia Foundation MediaWiki jquery.ui 1.9.2 MIT OpenJS Foundation and other contributors MediaWiki jquery 3.7.1 MIT OpenJS Foundation and other contributors MediaWiki moment 2.25.2 MIT JS Foundation and other contributors MediaWiki mustache 4.2.0 MIT Michael Jackson, Jan Lehnardt, Phillip Johnsen, and other contributors MediaWiki oojs 7.0.1 MIT OOjs Team and other contributors MediaWiki ooui 0.51.2 MIT OOUI Team and other contributors MediaWiki pako 2.1.0 MIT AND Zlib Andrei Tuputcyn, Vitaly Puzrin, Friedel Ziegelmayer, Kirill Efimov, Jean-loup Gailly, and Mark Adler MediaWiki pinia 2.0.16 MIT Eduardo San Martin Morote MediaWiki qunitjs 2.20.0 MIT OpenJS Foundation and other contributors MediaWiki sinonjs 1.17.7 BSD-3-Clause Christian Johansen and other contributors MediaWiki swagger-ui 4.15.5 Apache-2.0 Kyle Shockey, Tony Tam, Vladimír Gorej, and others MediaWiki url 3.111.0-0ece79ce32 MIT Financial Times MediaWiki vue-demi 0.14.7 MIT Anthony Fu MediaWiki vue 3.4.27 MIT Yuxi (Evan) You MediaWiki vuex 4.0.2 MIT Yuxi (Evan) You MediaWiki Parser extension tags <gallery>, <html>, <indicator>, <langconvert>, <nowiki>, <pre>, <ref> and <references> Parser function hooks {{anchorencode}}, {{BASEPAGENAME}}, {{BASEPAGENAMEE}}, {{#bcp47}}, {{bidi}}, {{canonicalurl}}, {{canonicalurle}}, {{CASCADINGSOURCES}}, {{DEFAULTSORT}}, {{#dir}}, {{DISPLAYTITLE}}, {{filepath}}, {{#FORMAL}}, {{#formatdate}}, {{formatnum}}, {{FULLPAGENAME}}, {{FULLPAGENAMEE}}, {{fullurl}}, {{fullurle}}, {{gender}}, {{grammar}}, {{int}}, {{#language}}, {{lc}}, {{lcfirst}}, {{localurl}}, {{localurle}}, {{NAMESPACE}}, {{NAMESPACEE}}, {{NAMESPACENUMBER}}, {{ns}}, {{nse}}, {{NUMBERINGROUP}}, {{NUMBEROFACTIVEUSERS}}, {{NUMBEROFADMINS}}, {{NUMBEROFARTICLES}}, {{NUMBEROFEDITS}}, {{NUMBEROFFILES}}, {{NUMBEROFPAGES}}, {{NUMBEROFUSERS}}, {{padleft}}, {{padright}}, {{pageid}}, {{PAGENAME}}, {{PAGENAMEE}}, {{PAGESINCATEGORY}}, {{PAGESIZE}}, {{plural}}, {{PROTECTIONEXPIRY}}, {{PROTECTIONLEVEL}}, {{REVISIONDAY}}, {{REVISIONDAY2}}, {{REVISIONID}}, {{REVISIONMONTH}}, {{REVISIONMONTH1}}, {{REVISIONTIMESTAMP}}, {{REVISIONUSER}}, {{REVISIONYEAR}}, {{ROOTPAGENAME}}, {{ROOTPAGENAMEE}}, {{#special}}, {{#speciale}}, {{SUBJECTPAGENAME}}, {{SUBJECTPAGENAMEE}}, {{SUBJECTSPACE}}, {{SUBJECTSPACEE}}, {{SUBPAGENAME}}, {{SUBPAGENAMEE}}, {{#tag}}, {{TALKPAGENAME}}, {{TALKPAGENAMEE}}, {{TALKSPACE}}, {{TALKSPACEE}}, {{uc}}, {{ucfirst}} and {{urlencode}}
- important differences from above:
- skins
- hetzner2 lists the following skins: Cologne Blue, Modern, MonoBook, Vector
- hetzner3 lists 0 skins
- extensions
- hetzner2 lists CategoryTree, Cite, ConfirmEdit, Confirm User Accounts, Gadgets, Interwiki, Nuke, OATHAuth, ReCaptcha, Replace Text, UserMerge, Widgets
- hetzner3 lists Cite, Gadgets, Interwiki, Nuke, OATHAuth, and Replace Text
- therefore, we need to add the following missing extensions to hetzner3: CategoryTree, ConfirmEdit, Confirm User Accounts, ReCaptcha, UserMerge, Widgets
- but I also might want to look into seeing if I can find some extension that serves as a replacement for ReCaptcha, such as hCaptcha or mCaptcha or friendlycaptcha
- skins
- I still get an error at the top of the page complaining about the skin "Vector" not being installed; let's do that
# UPDATE SKINS rsync -av --progress /var/tmp/mediawiki/themes/CologneBlue ${docrootDir}/skins/ rsync -av --progress /var/tmp/mediawiki/themes/Modern ${docrootDir}/skins/ # UPDATE EXTENSIONS extensions="ConfirmAccount UserMerge Widgets" for extension in ${extensions}; do extension_path="${docrootDir}/extensions/${extension}" source_path="/var/tmp/wordpress/extensions/${extensions}" if [ -d "${source_path}" ]; then echo "${extension}" rsync -a ${source_path}/ "${extension_path}/" fi done # FIX PERMISSIONS time /usr/local/bin/fix_web_permissions.sh # clear varnish cache again varnishadm 'ban req.http.host ~ "wiki.opensourceecology.org"'
- after that, I refreshed the wiki and I still have the error.
- here's the error
Whoops! The default skin for your wiki, defined in $wgDefaultSkin as Vector, is not available. Your installation seems to include the following skins. See Manual: Skin configuration for information how to enable them and choose the default. cologneblue / CologneBlue (disabled) minervaneue / MinervaNeue (disabled) modern / Modern (disabled) monobook / MonoBook (disabled) timeless / Timeless (disabled) vector / Vector (disabled) If you have just installed MediaWiki You probably installed from git, or directly from the source code using some other method. This is expected. Try installing some skins from mediawiki.org's skin directory, by: Downloading the tarball installer, which comes with several skins and extensions. You can copy and paste the skins/ directory from it. Downloading individual skin tarballs from mediawiki.org. Using Git to download skins. Doing this should not interfere with your git repository if you're a MediaWiki developer. If you have just upgraded MediaWiki MediaWiki 1.24 and newer no longer automatically enables installed skins (see Manual: Skin autodiscovery). You can paste the following lines into LocalSettings.php to enable all installed skins: wfLoadSkin( 'CologneBlue' ); wfLoadSkin( 'MinervaNeue' ); wfLoadSkin( 'Modern' ); wfLoadSkin( 'MonoBook' ); wfLoadSkin( 'Timeless' ); wfLoadSkin( 'Vector' ); If you have just modified LocalSettings.php Double-check the skin names for typos.
- so it looks like installing the theme isn't enough, I have to activate it in LocalSettings.php
Thr Feb 06, 2025
- Here's TOFU 3/3 (ISP, exit in Ecuador)
Ecuador 2025-02-06 INFO: Determining Latest Version of Wordpress Core INFO: Determining Latest Version of Wordpress Plugins . INFO: Determining Latest Version of Wordpress Themes . . . . . https://altushost-swe.dl.sourceforge.net/project/phplist/phplist/3.6.15/phplist-3.6.15.tgz ######################################################################### 100.0%######################################################################### 100.0% https://netix.dl.sourceforge.net/project/phplist/phplist/3.6.15/phplist-3.6.15.zip ######################################################################### 100.0%######################################################################### 100.0% https://github.com/phpList/phplist3/archive/refs/tags/v3.6.15.zip -=O=- # # ## https://github.com/phpList/phplist3/archive/refs/tags/v3.6.15.tar.gz -=O=- # # # # https://downloads.wordpress.org/release/wordpress-6.7.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/woocommerce-gateway-stripe.9.1.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/astra.4.8.11.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/generatepress.3.5.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/hestia.3.2.8.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/neve.4.0.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/oceanwp.4.0.5.zip ######################################################################### 100.0% 2025-02-06 5.9M astra.4.8.11.zip 1.1M generatepress.3.5.1.zip 8.0M hestia.3.2.8.zip 7.1M neve.4.0.1.zip 6.0M oceanwp.4.0.5.zip 21M phplist-3.6.15.tgz 29M phplist-3.6.15.zip 32K plugin.json 4.6M v3.6.15.tar.gz 5.0M v3.6.15.zip 1.4M woocommerce-gateway-stripe.9.1.1.zip 28M wordpress-6.7.1.zip 0e106338e48c9d4d023a46a368f0069b807ce2118a9bf51ddf04c76070867aba astra.4.8.11.zip a5e1d7478cce21b7bbef511bbea44156f59acd40cc7e51ad469c403013ba29f5 generatepress.3.5.1.zip 241b8c804ed1af72b1c9aa52f603730a52ebf7850383ac2e4d9dd163f6cfc3ca hestia.3.2.8.zip 2b51e758d61b9d78ebd57d2afd9a967335bcb6866c5bff5a0d7157eecb6ec8cb neve.4.0.1.zip d1392dbe5f729178c968f5551855a412b41866e876dcf2a79ffd4e07298c4d13 oceanwp.4.0.5.zip dfe441583f7f72b116c2f7db24821259df4fdc991ab52a7078ba3293729d71b9 phplist-3.6.15.tgz fcbe14b2770832d2788f3a8a5c9c6c18b178bf069559ca30c947bac78ca51e19 phplist-3.6.15.zip 69708af323f3bad6654dd7b52bd385df4f0fa600d79261b608626ce7109136ef plugin.json 31e4a733aa481fe483f5513931d04607b14243b7f2cc2c3c210a6abe508e3265 v3.6.15.tar.gz 16c3bc98c6d4acd52478042b733c90ac8d64d31762b884856e6cf3c620b4b82e v3.6.15.zip 2a958f50e458b900d8cd2d7b980e93e37ca720eebf3c7b4a5f94ed5d9d167079 woocommerce-gateway-stripe.9.1.1.zip 75f4e9cb71e583ca3f8b19691b5754adb9c981580762137f82443e1eec468f9c wordpress-6.7.1.zip user@disp4288:/tmp/tmp.aqIzX10FIC$
- meld diff of these 3 TOFUs had two issues
- hestia changed from v3.2.7 to v3.2.8
- neve changed from v4.0.0 to v4.0.1
- well that sucks; neve was the most important reason we were doing this.
- so let's do this again. And this time I'm adding some translation plugins.
- I recently did a ton of research (for my personal sites) for the best free wordpress i18nl plugins, and narrowed it down to 4, which I need to play-with
- so I'm mostly doing this TOFU for my own benefit, but I'll do the comparison for free and I'll probably install the winner (but not activate it) on all of OSE's wordpress sites, in-case they want to have posts or pages in >1 language in the future (useful when doing collaboration with German, Italian, Spanish, etc-speaking orgs)
- the most important result of this last 3TOFU is that we now finally have our phpList releases
- unfortunately, there's 4 files and they all differ
user@ose:~/tmp/hetzner3/3tofu3$ sha256sum */*.zip fcbe14b2770832d2788f3a8a5c9c6c18b178bf069559ca30c947bac78ca51e19 phplist-3.6.15-zip/phplist-3.6.15.zip 16c3bc98c6d4acd52478042b733c90ac8d64d31762b884856e6cf3c620b4b82e v3.6.15-zip/v3.6.15.zip user@ose:~/tmp/hetzner3/3tofu3$ sha256sum */*.tar.gz 31e4a733aa481fe483f5513931d04607b14243b7f2cc2c3c210a6abe508e3265 v3.6.15-tar-gz/v3.6.15.tar.gz user@ose:~/tmp/hetzner3/3tofu3$ sha256sum */*.tgz dfe441583f7f72b116c2f7db24821259df4fdc991ab52a7078ba3293729d71b9 phplist-3.6.15-tgz/phplist-3.6.15.tgz user@ose:~/tmp/hetzner3/3tofu3$
- this is somewhat expected, especially from the compression algorithms of the archives being totally distinct
- I confirmed that he actual contents of phplist-3.6.15.zip and phplist-3.6.15.tgz are identical
user@ose:~/tmp/hetzner3/3tofu3$ diff -r phplist-3.6.15-zip/phplist-3.6.15 phplist-3.6.15-tgz/phplist-3.6.15 user@ose:~/tmp/hetzner3/3tofu3$
- and I also confirmed that the contents of the other set of files (I think these ones came from github -- as opposed to sourceforge) were also identical
user@ose:~/tmp/hetzner3/3tofu3$ diff -r v3.6.15-zip/phplist3-3.6.15/ v3.6.15-tar-gz/phplist3-3.6.15/ user@ose:~/tmp/hetzner3/3tofu3$
- but it looks like there's lots of differences between the ones named 'phplist-3.6.15' and the ones named 'v3.6.15'
user@ose:~/tmp/hetzner3/3tofu3$ diff -r phplist-3.6.15-zip/phplist-3.6.15 v3.6.15-zip/phplist3-3.6.15/ Only in v3.6.15-zip/phplist3-3.6.15/bin: fake-sendmail.sh Only in v3.6.15-zip/phplist3-3.6.15/bin: imgur-uploader.sh Only in v3.6.15-zip/phplist3-3.6.15/bin: start-selenium Only in v3.6.15-zip/phplist3-3.6.15/: composer.json Only in v3.6.15-zip/phplist3-3.6.15/: composer.lock Only in v3.6.15-zip/phplist3-3.6.15/: default.behat.yml Only in v3.6.15-zip/phplist3-3.6.15/: .dotgitlab-ci.yml Only in v3.6.15-zip/phplist3-3.6.15/: .github Only in v3.6.15-zip/phplist3-3.6.15/: .gitignore Only in v3.6.15-zip/phplist3-3.6.15/: .gitmodules Only in v3.6.15-zip/phplist3-3.6.15/: .gitsvnextmodules Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin: help Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin: info diff -r phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/init.php v3.6.15-zip/phplist3-3.6.15/public_html/lists/admin/init.php 11c11,44 < define("VERSION","3.6.15"); --- > //## remove on rollout ### > if (is_file(dirname(__FILE__).'/../../../VERSION')) { > $fd = fopen(dirname(__FILE__).'/../../../VERSION', 'r'); > while ($line = fscanf($fd, '%[a-zA-Z0-9,. ]=%[a-zA-Z0-9,. ]')) { > list($key, $val) = $line; > if ($key == 'VERSION') { > $version = $val; > } > } > fclose($fd); > } else { > $version = 'dev'; > } > > if (!defined('VERSION')) { > if (!ini_get('open_basedir') && is_dir(dirname(__FILE__).'/../../../.git')) { > define('VERSION', $version.'-dev'); > define('DEVVERSION', true); > } else { > define('VERSION', $version); > define('DEVVERSION', false); > } > } else { > define('DEVVERSION', false); > } > > if (empty($GLOBALS['commandline']) && isset($GLOBALS['developer_email']) && $_SERVER['HTTP_HOST'] != 'dev.phplist.com' && !empty($GLOBALS['show_dev_errors'])) { > error_reporting(E_ALL); > ini_set('display_errors', 1); > foreach ($_REQUEST as $key => $val) { > unset($$key); > } > } > //## end remove on rollout ### Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: campaignslicer.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: CaptchaPlugin Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: CaptchaPlugin.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: CKEditorPlugin Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: CKEditorPlugin.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: Common Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: CommonPlugin Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: CommonPlugin.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: COPYING.txt Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: dateplaceholder.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: disposablemailblock.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: domainthrottlemap.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: embedremoteimages.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: inviteplugin.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: SegmentPlugin Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: SegmentPlugin.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: subjectLinePlaceholdersPlugin.php Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: UpdaterPlugin Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/plugins: UpdaterPlugin.php diff -r phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/structure.php v3.6.15-zip/phplist3-3.6.15/public_html/lists/admin/structure.php 16c16 < define('STRUCTUREVERSION',"3.6.15"); --- > define('STRUCTUREVERSION', 'dev'); Only in v3.6.15-zip/phplist3-3.6.15/public_html/lists/admin: tests Only in v3.6.15-zip/phplist3-3.6.15/public_html/lists/admin/ui: default Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/admin/ui: phplist-ui-bootlist Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists: base diff -r phplist-3.6.15-zip/phplist-3.6.15/public_html/lists/config/config.php v3.6.15-zip/phplist3-3.6.15/public_html/lists/config/config.php 35,38c35 < define('PHPMAILERHOST', 'localhost'); < define('PHPMAILERPORT',2500); < define('PHPMAILER_SECURE',false); < --- > define('PHPMAILERHOST', ''); 44c41 < define('TEST', 0); --- > define('TEST', 1); Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists: texts Only in phplist-3.6.15-zip/phplist-3.6.15/public_html/lists: updater Only in v3.6.15-zip/phplist3-3.6.15/: scripts Only in v3.6.15-zip/phplist3-3.6.15/: TESTING.md Only in v3.6.15-zip/phplist3-3.6.15/: tests Only in v3.6.15-zip/phplist3-3.6.15/: Vagrantfile user@ose:~/tmp/hetzner3/3tofu3$
- I asked the community which release we should use. I'm thinking sourceforge, but I want to be sure
- at first I'd think "don't use the one that has 'TEST' set to '1'), which is the sourceforge one
- but then there's the code block that says "remove on rollout", which also is in the sourceforge one.
- so basically there's a couple signs that say I should use one instead of the other and other signs that say I should use the other instead of one
- I'll wait to hear back from the phpList team before proceeding
- anyway, we do have all the files we need. 3TOFU is done for phpList
- ...
- here's our new 3TOFU script
################################################################################ # File: 3tofu.sh # Purpose: Execute these commands on 3 distinct machines (or VMs) on 3 distinct # days using 3 distinct networks exiting from 3 distinct countries # # For more info on 3TOFU (and why this is important), see: # * https://tech.michaelaltfied.net/3tofu # # Authors: Michael Altfield <michael@michaelaltfield.net> # Created: 2025-01-01 21:21:18+00:00 ################################################################################ JQ=$(which jq) || (echo "ERROR: Cannot find 'jq'"; exit 1) CURL="$(which curl) --location --retry 5 --retry-all-errors" || (echo "ERROR: Cannot find 'curl'"; exit 1) GREP=$(which grep) || (echo "ERROR: Cannot find 'grep'"; exit 1) REMOTE_FILES="" WARNINGS="" # in tails, we must torify if [[ "`whoami`" == "amnesia" ]] ; then CURL="/usr/bin/torify ${CURL}" PYTHON="/usr/bin/torify ${PYTHON}" fi tmpDir=`mktemp -d` pushd "${tmpDir}" # first get some info about our internet connection ${CURL} -s https://ifconfig.co/country | head -n1 ${CURL} -s https://check.torproject.org | grep Congratulations | head -n1 # and today's date date -u +"%Y-%m-%d" echo "INFO: Determining Latest Version of Wordpress Core" json=$($CURL -s "https://api.wordpress.org/core/version-check/1.7/") REMOTE_FILES="${REMOTE_FILES} $(echo "${json}" | $JQ -r '[.offers[]|select(.response=="upgrade")][0].download')" plugins='polylang translatepress-multilingual google-language-translator gtranslate' echo -ne "INFO: Determining Latest Version of Wordpress Plugins \n\t" for plugin in $plugins; do echo -n '. ' json=$(curl -so plugin.json https://api.wordpress.org/plugins/info/1.0/${plugin}.json) latest_version=$(cat plugin.json | jq -r .version) url=$(cat plugin.json | jq -r ".versions.\"${latest_version}\"") if [ "${url}" = "null" ]; then error=$(cat plugin.json | jq -r .error); description=$(cat plugin.json | jq -r .description); WARNINGS="${WARNINGS}\n\nWARNING: Failed to download plugin ${plugin}" WARNINGS="${WARNINGS}\n\t$error" WARNINGS="${WARNINGS}\n\t$description" else REMOTE_FILES="${REMOTE_FILES} ${url}" fi done echo themes='hestia neve' echo -ne "INFO: Determining Latest Version of Wordpress Themes \n\t" for theme in $themes; do echo -n '. ' json=$($CURL -s "https://api.wordpress.org/themes/info/1.2/?action=theme_information&slug=${theme}") latest_version=$(echo $json | $JQ -r .version) if [ "${latest_version}" = "null" ]; then error=$(echo $json | $JQ -r .error); description=$(echo $json | $JQ -r .description); WARNINGS="${WARNINGS}\n\nWARNING: Failed to download theme ${theme}" WARNINGS="${WARNINGS}\n\t$error" WARNINGS="${WARNINGS}\n\t$description" else REMOTE_FILES="${REMOTE_FILES} $(echo $json | $JQ -r ".download_link")" fi done echo echo -e "${WARNINGS}" echo # get the file for file in ${REMOTE_FILES}; do echo "${file}" ${CURL} --progress-bar -O "${file}" done # checksum date -u +"%Y-%m-%d" du -sh * sha256sum *
- and here's TOFU 1/3 (Tor, exit in Poland)
Congratulations. This browser is configured to use Tor. 2025-02-06 INFO: Determining Latest Version of Wordpress Core INFO: Determining Latest Version of Wordpress Plugins . . . . INFO: Determining Latest Version of Wordpress Themes . . https://downloads.wordpress.org/release/wordpress-6.7.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/polylang.3.6.6.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/translatepress-multilingual.2.9.4.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/google-language-translator.6.0.20.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/gtranslate.3.0.7.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/hestia.3.2.8.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/neve.4.0.1.zip ######################################################################### 100.0% 2025-02-06 296K google-language-translator.6.0.20.zip 700K gtranslate.3.0.7.zip 8.0M hestia.3.2.8.zip 7.1M neve.4.0.1.zip 64K plugin.json 592K polylang.3.6.6.zip 2.1M translatepress-multilingual.2.9.4.zip 28M wordpress-6.7.1.zip 01246c9c90f1373ee83d8e5884e5abba264c62e7301d99a468fd8eb95144be05 google-language-translator.6.0.20.zip 171eb362801ea28e74b302cd0fee472dbd5025a89f6c1634b5ca1029362a678c gtranslate.3.0.7.zip 241b8c804ed1af72b1c9aa52f603730a52ebf7850383ac2e4d9dd163f6cfc3ca hestia.3.2.8.zip 2b51e758d61b9d78ebd57d2afd9a967335bcb6866c5bff5a0d7157eecb6ec8cb neve.4.0.1.zip 4a87243dd3afb7c15bc8e1c51df6f63604996110691caa0d80d2119ccc59057a plugin.json 3a4a7f8872d16cb3538e948b4f85acee7d823c04fe8c820259ef6e2735093bbb polylang.3.6.6.zip 16f2e24d14af341c6208fb9cc08d0c4db33bf813a5b1668930e30c6179a1111c translatepress-multilingual.2.9.4.zip 75f4e9cb71e583ca3f8b19691b5754adb9c981580762137f82443e1eec468f9c wordpress-6.7.1.zip user@host:/tmp/user/1000/tmp.JC5exXrKLS$
- ...
- I was supposed to have a meeting with Marcin & Catarina today, but they asked to reschedule
- so I'm blocked on phplist, obi, and osemain
- let's continue with the wiki!
- ok, here's the last error we got (when trying to do the second upgrade)
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 Error: The Cite extension cannot be loaded. Check that all of its files are installed properly. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(57): MediaWiki\Registration\ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(282): wfLoadExtension() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once('...') #5 {main} PHP Fatal error: Error Loading extension. Unable to open file /Cite/extension.json: filemtime(): stat failed for /Cite/extension.json in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/MissingExtensionException.php on line 102 real 0m0,077s user 0m0,002s sys 0m0,005s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- I fixed this with
# don't yet load Cite (until after upgrades) sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)Cite\(.*\)%\1#wfLoadExtension\2Cite\3%' ${vhostDir}/LocalSettings.php
- subsequent upgrade attempts resulted in an error with the interwiki extension
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 Error: The Interwiki extension cannot be loaded. Check that all of its files are installed properly. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(57): MediaWiki\Registration\ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(289): wfLoadExtension() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once('...') #5 {main} PHP Fatal error: Error Loading extension. Unable to open file /Interwiki/extension.json: filemtime(): stat failed for /Interwiki/extension.json in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/MissingExtensionException.php on line 102 real 0m0,052s user 0m0,008s sys 0m0,000s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- fixed with
# don't yet load Interwiki (until after upgrades) sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)Interwiki\(.*\)%\1#wfLoadExtension\2Interwiki\3%' ${vhostDir}/LocalSettings.php
- then it complains about Gadgets
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 Error: The Gadgets extension cannot be loaded. Check that all of its files are installed properly. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(57): MediaWiki\Registration\ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(308): wfLoadExtension() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once('...') #5 {main} PHP Fatal error: Error Loading extension. Unable to open file /Gadgets/extension.json: filemtime(): stat failed for /Gadgets/extension.json in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/MissingExtensionException.php on line 102 real 0m0,051s user 0m0,004s sys 0m0,004s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- fixed with
# don't yet load Gadgets (until after upgrades) sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)Gadgets\(.*\)%\1#wfLoadExtension\2Gadgets\3%' ${vhostDir}/LocalSettings.php
- then ReplaceText
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 Error: The ReplaceText extension cannot be loaded. Check that all of its files are installed properly. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(57): MediaWiki\Registration\ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(311): wfLoadExtension() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once('...') #5 {main} PHP Fatal error: Error Loading extension. Unable to open file /ReplaceText/extension.json: filemtime(): stat failed for /ReplaceText/extension.json in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/MissingExtensionException.php on line 102 real 0m0,053s user 0m0,002s sys 0m0,007s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- fixed with
# don't yet load ReplaceText (until after upgrades) sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)ReplaceText\(.*\)%\1#wfLoadExtension\2ReplaceText\3%' ${vhostDir}/LocalSettings.php
- then RenameUser
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 Error: The Renameuser extension cannot be loaded. Check that all of its files are installed properly. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(57): MediaWiki\Registration\ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(314): wfLoadExtension() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once('...') #5 {main} PHP Fatal error: Error Loading extension. Unable to open file /Renameuser/extension.json: filemtime(): stat failed for /Renameuser/extension.json in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/MissingExtensionException.php on line 102 real 0m0,052s user 0m0,004s sys 0m0,004s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- fixed with
# don't yet load Renameuser (until after upgrades) sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)Renameuser\(.*\)%\1#wfLoadExtension\2Renameuser\3%' ${vhostDir}/LocalSettings.php
- tried again, and it complained about Nuke
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 Error: The Nuke extension cannot be loaded. Check that all of its files are installed properly. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(57): MediaWiki\Registration\ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(326): wfLoadExtension() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once('...') #5 {main} PHP Fatal error: Error Loading extension. Unable to open file /Nuke/extension.json: filemtime(): stat failed for /Nuke/extension.json in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/MissingExtensionException.php on line 102 real 0m0,053s user 0m0,003s sys 0m0,005s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- this seems a bit excessive; these dirs are in-place
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # ls -lah ${vhostDir}/htdocs/extensions total 144K d---r-x--- 35 not-apache www-data 4,0K Dec 29 18:14 . d---r-x--- 14 not-apache www-data 4,0K Feb 2 00:39 .. d---r-x--- 8 not-apache www-data 4,0K Dec 29 18:14 AbuseFilter d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 CategoryTree d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 Cite d---r-x--- 5 not-apache www-data 4,0K Dec 29 18:14 CiteThisPage d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 CodeEditor d---r-x--- 13 not-apache www-data 4,0K Dec 29 18:14 ConfirmEdit d---r-x--- 9 not-apache www-data 4,0K Dec 29 18:14 DiscussionTools d---r-x--- 10 not-apache www-data 4,0K Dec 29 18:14 Echo d---r-x--- 5 not-apache www-data 4,0K Dec 29 18:14 Gadgets d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 ImageMap d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 InputBox d---r-x--- 5 not-apache www-data 4,0K Dec 29 18:14 Interwiki d---r-x--- 8 not-apache www-data 4,0K Dec 29 18:14 Linter d---r-x--- 7 not-apache www-data 4,0K Dec 29 18:14 LoginNotify d---r-x--- 8 not-apache www-data 4,0K Dec 29 18:14 Math d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 MultimediaViewer d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 Nuke d---r-x--- 8 not-apache www-data 4,0K Dec 29 18:14 OATHAuth d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 PageImages d---r-x--- 5 not-apache www-data 4,0K Dec 29 18:14 ParserFunctions d---r-x--- 5 not-apache www-data 4,0K Dec 29 18:14 PdfHandler d---r-x--- 5 not-apache www-data 4,0K Dec 29 18:14 Poem ----r----- 1 not-apache www-data 1,1K Dec 5 15:41 README d---r-x--- 7 not-apache www-data 4,0K Dec 29 18:14 ReplaceText d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 Scribunto d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 SecureLinkFixer d---r-x--- 7 not-apache www-data 4,0K Dec 29 18:14 SpamBlacklist d---r-x--- 8 not-apache www-data 4,0K Dec 29 18:14 SyntaxHighlight_GeSHi d---r-x--- 8 not-apache www-data 4,0K Dec 29 18:14 TemplateData d---r-x--- 5 not-apache www-data 4,0K Dec 29 18:14 TextExtracts d---r-x--- 7 not-apache www-data 4,0K Dec 29 18:14 Thanks d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 TitleBlacklist d---r-x--- 12 not-apache www-data 4,0K Dec 29 18:14 VisualEditor d---r-x--- 6 not-apache www-data 4,0K Dec 29 18:14 WikiEditor root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- I thought maybe there was another issue with the path to the 'extensions' dir itself, but that looks like I put that in-place already
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # grep wgExtensionsDirectory ${vhostDir}/LocalSettings.php $wgExtensionsDirectory = "$IP/extensions"; root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- ah, crap, I just realized the var name according to the wiki is wgExtensionDirectory, not wgExtensionsDirectory https://www.mediawiki.org/wiki/Manual:$wgExtensionDirectory
- I updated this, and now I get a new error
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 PHP Fatal error: Uncaught FatalError: $wgBaseDirectory must not be modified in settings files! Use the MW_INSTALL_PATH environment variable to override the installation root directory. in /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php:274 Stack trace: #0 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once() #1 {main} thrown in /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php on line 274 real 0m0,053s user 0m0,008s sys 0m0,000s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- ok, I don't understand this error; we are *not* using that var
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # grep wgBaseDirectory ${vhostDir}/LocalSettings.php root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- here's where the error came-from
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # grep -C4 wgBaseDirectory ${vhostDir}/htdocs/includes/Setup.php * from executing. * * This file does: * - run-time environment checks, * - define MW_INSTALL_PATH, $IP, and $wgBaseDirectory, * - load autoloaders, constants, default settings, and global functions, * - load the site configuration (e.g. LocalSettings.php), * - load the enabled extensions (via ExtensionRegistry), * - trivial expansion of site configuration defaults and shortcuts -- if ( defined( 'MW_AUTOLOAD_TEST_CLASSES' ) ) { require_once __DIR__ . '/../tests/common/TestsAutoLoader.php'; } if ( $wgBaseDirectory !== MW_INSTALL_PATH ) { throw new FatalError( '$wgBaseDirectory must not be modified in settings files! ' . 'Use the MW_INSTALL_PATH environment variable to override the installation root directory.' ); } root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- we didn't modify that file; it's identical to the file as included in the release of mediawiki-1.43.0
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # diff ${vhostDir}/htdocs/includes/Setup.php /var/tmp/mediawiki/mediawiki-1.43.0/includes/Setup.php root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- ok, looks like we do try to set the "IP" dir
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # grep -C4 MW_INSTALL_PATH ${vhostDir}/LocalSettings.php # http://www.mediawiki.org/wiki/Manual:Configuration_settings # If you customize your file layout, set $IP to the directory that contains # the other MediaWiki files. It will be used as a base to locate files. if( defined( 'MW_INSTALL_PATH' ) ) { $IP = MW_INSTALL_PATH; } else { $IP = dirname( __FILE__ ) . "/htdocs" ; } root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- the docs on the IP var suggest that you used to be able to update it, but that won't work since Mediawiki >=v1.18
- let's see what happens if we comment-out all these lines. if it still has issues, I guess we should set 'MW_INSTALL_PATH' to `dirname( __FILE__ ) . "/htdocs"` instead
- well, after commenting them out, I *still* have an error complaining about this setting
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Deprecated: DefaultSettings.php is deprecated and will be removed. Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead. [Called from require_once in /var/www/html/wiki.opensourceecology.org/LocalSettings.php at line 49] in /var/www/html/wiki.opensourceecology.org/htdocs/includes/debug/MWDebug.php on line 385 PHP Fatal error: Uncaught FatalError: $wgBaseDirectory must not be modified in settings files! Use the MW_INSTALL_PATH environment variable to override the installation root directory. in /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php:274 Stack trace: #0 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once() #1 {main} thrown in /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php on line 274 real 0m0,055s user 0m0,004s sys 0m0,004s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- looking at the error above it, I wonder if it's possible that the issue is coming from here
root@hetzner3 /var/www/html/wiki.opensourceecology.org # grep 'DefaultSettings.php' LocalSettings.php # See includes/DefaultSettings.php for all configurable settings require_once( "$IP/includes/DefaultSettings.php" ); root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- nah, looks like this file is present both in our docroot *and* in the release dir. And they're identical
root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls htdocs/includes/DefaultSettings.php htdocs/includes/DefaultSettings.php root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls /var/tmp/mediawiki/mediawiki-1.43.0/includes/DefaultSettings.php /var/tmp/mediawiki/mediawiki-1.43.0/includes/DefaultSettings.php root@hetzner3 /var/www/html/wiki.opensourceecology.org # diff htdocs/includes/DefaultSettings.php /var/tmp/mediawiki/mediawiki-1.43.0/includes/DefaultSettings.php root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- ok, yeah, the only thing in this file is the error about using this file
root@hetzner3 /var/www/html/wiki.opensourceecology.org # cat htdocs/includes/DefaultSettings.php <?php /** * THIS IS A DEPRECATED STUB FILE! * * Default settings are now defined in the MainConfigSchema class. * * To get default values for configuration variables, use MainConfigSchema::listDefaultValues() * or MainConfigSchema::getDefaultValue(). * * @file * @deprecated since 1.39 */ use MediaWiki\MainConfigSchema; if ( function_exists( 'wfDeprecatedMsg' ) ) { wfDeprecatedMsg( 'DefaultSettings.php is deprecated and will be removed. ' . 'Use MainConfigSchema::listDefaultValues() or MainConfigSchema::getDefaultValue() instead.', '1.39' ); } // Extract the defaults into the current scope foreach ( MainConfigSchema::listDefaultValues( 'wg' ) as $defaultSettingsVar => $defaultSettingsValue ) { $$defaultSettingsVar = $defaultSettingsValue; } unset( $defaultSettingsVar ); unset( $defaultSettingsValue ); root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- oh, actually there is some stuff at the end
- yeah, that *was* it. If I comment-out that line, then it continues
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/run.php" "${docrootDir}/maintenance/update.php" PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 MediaWiki 1.43.0 Updater Your composer.lock file is up to date with current dependencies! Going to run database updates for osewiki_db-wiki_ Depending on the size of your database this may take a while! Abort with control-c in the next five seconds (skip this countdown with --quick) ...0 Can not upgrade from versions older than 1.35, please upgrade to that version or later first. real 0m5,144s user 0m0,004s sys 0m0,004s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- but, crap, this is the same problem we had before. It claims we didn't upgrade yet. Even though we did!
- maybe the update failed somewhere in the middle because of this same error about DefaultSettings.php
- I updated the wiki CHG to store all the output from the upgrade runs to log files in the $chg_dir so we can review it after it runs
- I'm also pretty annoyed about these huge permissions commands being stored in all the CHG files separately; I'm just going to create a script in /usr/local/bin/ for this
- ok, let's restore to our snapshot and try the whole process again
- ugh, for some reason I got a new error this time
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # cat $chg_dir/update-to-v1.35.log PHP Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 PHP Fatal error: Uncaught Exception: Unable to open file /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmEdit/ReCaptcha/extension.json: filemtime(): stat failed for /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmEdit/ReCaptcha/extension.json in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/ExtensionRegistry.php:177 Stack trace: #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/GlobalFunctions.php(71): ExtensionRegistry->queue() #1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php(257): wfLoadExtensions() #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(143): require_once('...') #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/doMaintenance.php(91): require_once('...') #5 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/update.php(253): require_once('...') #6 {main} thrown in /var/www/html/wiki.opensourceecology.org/htdocs/includes/registration/ExtensionRegistry.php on line 177 PHP Fatal error: Uncaught Error: Class "WebRequest" not found in /var/www/html/wiki.opensourceecology.org/htdocs/includes/HeaderCallback.php:63 Stack trace: #0 [internal function]: MediaWiki\HeaderCallback::callback() #1 {main} thrown in /var/www/html/wiki.opensourceecology.org/htdocs/includes/HeaderCallback.php on line 63 root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- curiously, the path to the ReCaptcha plugin is present; just the ReCaptcha dir is missing
- I hate ReCaptcha, and I noticed there's a dir for hCaptcha instead
root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls -lah /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmEdit/ReCaptcha ls: cannot access '/var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmEdit/ReCaptcha': No such file or directory root@hetzner3 /var/www/html/wiki.opensourceecology.org # ls -lah /var/www/html/wiki.opensourceecology.org/htdocs/extensions/ConfirmEdit total 140K d---r-x--- 13 not-apache www-data 4,0K Dec 26 23:53 . d---r-x--- 30 not-apache www-data 4,0K Dec 26 23:53 .. ----r----- 1 not-apache www-data 3,1K Jun 7 2019 AUTHORS.txt ----r----- 1 not-apache www-data 510 Sep 25 2020 blacklist ----r----- 1 not-apache www-data 9,8K Sep 24 2020 captcha-old.py ----r----- 1 not-apache www-data 11K Sep 24 2020 captcha.py ----r----- 1 not-apache www-data 135 Sep 25 2020 CODE_OF_CONDUCT.md ----r----- 1 not-apache www-data 439 Sep 25 2020 composer.json ----r----- 1 not-apache www-data 2,7K Sep 25 2020 ConfirmEdit.alias.php ----r----- 1 not-apache www-data 18K Dec 12 2018 COPYING ----r----- 1 not-apache www-data 4,4K Sep 25 2020 extension.json d---r-x--- 5 not-apache www-data 4,0K Dec 26 23:53 FancyCaptcha d---r-x--- 4 not-apache www-data 4,0K Dec 26 23:53 hCaptcha d---r-x--- 3 not-apache www-data 12K Dec 26 23:53 i18n d---r-x--- 5 not-apache www-data 4,0K Dec 26 23:53 includes d---r-x--- 2 not-apache www-data 4,0K Dec 26 23:53 maintenance d---r-x--- 4 not-apache www-data 4,0K Dec 26 23:53 MathCaptcha d---r-x--- 4 not-apache www-data 4,0K Dec 26 23:53 QuestyCaptcha ----r----- 1 not-apache www-data 5,1K Sep 25 2020 README.md d---r-x--- 5 not-apache www-data 4,0K Dec 26 23:53 ReCaptchaNoCaptcha d---r-x--- 4 not-apache www-data 4,0K Dec 26 23:53 resources d---r-x--- 3 not-apache www-data 4,0K Dec 26 23:53 SimpleCaptcha d---r-x--- 3 not-apache www-data 4,0K Dec 26 23:53 tests root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- whatever, I'm going to disable this pesky extension again during our upgrades
- ok, the upgrade appears to have exited with an error 27 minutes-in
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/update.php" &> ${chg_dir}/update-to-v1.35.log real 27m59,071s user 0m0,008s sys 0m0,000s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- here's the error log
root@hetzner3 /var/www/html/wiki.opensourceecology.org # tail -n40 /var/tmp/CHG_20241228_wiki_1.35-to-1.43/update-to-v1.35.log Completed migration, inserted 1 row(s) with 0 new actor(s), 0 error(s) errors were encountered. Modifying rev_text_id field of table revision ...done. Modifying table site_stats ...done. Populating ar_rev_id. Populating ar_rev_id... MediaWiki\Revision\RevisionAccessException from line 1296 of /var/www/html/wiki.opensourceecology.org/htdocs/includes/Revision/RevisionStore.php: Main slot of revision not found in database. See T212428. #0 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Revision/RevisionStore.php(1224): MediaWiki\Revision\RevisionStore->constructSlotRecords() #1 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Revision/RevisionStore.php(1217): MediaWiki\Revision\RevisionStore->loadSlotRecords() #2 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Revision/RevisionStore.php(1335): MediaWiki\Revision\RevisionStore->loadSlotRecords() #3 [internal function]: MediaWiki\Revision\RevisionStore->MediaWiki\Revision\{closure}() #4 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Revision/RevisionSlots.php(175): call_user_func() #5 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Revision/RevisionSlots.php(117): MediaWiki\Revision\RevisionSlots->getSlots() #6 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Revision/RevisionRecord.php(192): MediaWiki\Revision\RevisionSlots->getSlot() #7 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Revision/RevisionRecord.php(175): MediaWiki\Revision\RevisionRecord->getSlot() #8 /var/www/html/wiki.opensourceecology.org/htdocs/includes/cache/MessageCache.php(1185): MediaWiki\Revision\RevisionRecord->getContent() #9 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/objectcache/wancache/WANObjectCache.php(1528): MessageCache->{closure}() #10 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/objectcache/wancache/WANObjectCache.php(1376): WANObjectCache->fetchOrRegenerate() #11 /var/www/html/wiki.opensourceecology.org/htdocs/includes/cache/MessageCache.php(1167): WANObjectCache->getWithSetCallback() #12 /var/www/html/wiki.opensourceecology.org/htdocs/includes/libs/objectcache/BagOStuff.php(149): MessageCache->{closure}() #13 /var/www/html/wiki.opensourceecology.org/htdocs/includes/cache/MessageCache.php(1163): BagOStuff->getWithSetCallback() #14 /var/www/html/wiki.opensourceecology.org/htdocs/includes/cache/MessageCache.php(1106): MessageCache->loadCachedMessagePageEntry() #15 /var/www/html/wiki.opensourceecology.org/htdocs/includes/cache/MessageCache.php(1016): MessageCache->getMsgFromNamespace() #16 /var/www/html/wiki.opensourceecology.org/htdocs/includes/cache/MessageCache.php(988): MessageCache->getMessageForLang() #17 /var/www/html/wiki.opensourceecology.org/htdocs/includes/cache/MessageCache.php(927): MessageCache->getMessageFromFallbackChain() #18 /var/www/html/wiki.opensourceecology.org/htdocs/includes/language/Message.php(1304): MessageCache->get() #19 /var/www/html/wiki.opensourceecology.org/htdocs/includes/language/Message.php(862): Message->fetchMessage() #20 /var/www/html/wiki.opensourceecology.org/htdocs/includes/language/Message.php(954): Message->toString() #21 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Title.php(661): Message->text() #22 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/populateArchiveRevId.php(213): Title::newMainPage() #23 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/populateArchiveRevId.php(118): PopulateArchiveRevId::makeDummyRevisionRow() #24 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/populateArchiveRevId.php(63): PopulateArchiveRevId::checkMysqlAutoIncrementBug() #25 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/includes/LoggedUpdateMaintenance.php(45): PopulateArchiveRevId->doDBUpdates() #26 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(1377): LoggedUpdateMaintenance->execute() #27 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(512): DatabaseUpdater->populateArchiveRevId() #28 /var/www/html/wiki.opensourceecology.org/htdocs/includes/installer/DatabaseUpdater.php(475): DatabaseUpdater->runUpdates() #29 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/update.php(181): DatabaseUpdater->doUpdates() #30 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/doMaintenance.php(107): UpdateMediaWiki->execute() #31 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/update.php(253): require_once('...') #32 {main} root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- I believe this is why we had the second upgrade command; let's try that and then maybe try the first command again
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/populateContentTables.php" &> ${chg_dir}/populateContentTables-to-v1.35.log real 0m13,673s user 0m0,004s sys 0m0,004s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- that only took 13 seconds; let's do the first command again
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/update.php" &> ${chg_dir}/update-to-v1.35b.log real 1m52,641s user 0m0,004s sys 0m0,005s root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current #
- cool, on double-tap it finished in less than 2 minutes, and this time it ended with a "Done" message instead of an error
root@hetzner3 /var/www/html/wiki.opensourceecology.org # tail /var/tmp/CHG_20241228_wiki_1.35-to-1.43/update-to-v1.35b.log el_id 30000 - 40000 of 76644 el_id 40000 - 50000 of 76644 el_id 50000 - 60000 of 76644 el_id 60000 - 70000 of 76644 el_id 70000 - 76644 of 76644 Done, 689 rows updated, 2 deleted. Set the local repo temp zone container to be private. Purging caches...done. Done in 1 min 48 s. root@hetzner3 /var/www/html/wiki.opensourceecology.org #
- now I went to the version page, and I confirmed that it lists the MediaWiki version as "1.35.0". Perfect! https://wiki.opensourceecology.org/wiki/Special:Version
Installed software Product Version MediaWiki 1.35.0 PHP 8.2.26 (fpm-fcgi) MariaDB 10.11.6-MariaDB-0+deb12u1 ICU 72.1
Sun Feb 02, 2025
- Here's TOFU 2/3 (VPN, exit in US)
United States 2025-02-03 INFO: Determining Latest Version of Wordpress Core INFO: Determining Latest Version of Wordpress Plugins . INFO: Determining Latest Version of Wordpress Themes . . . . . https://altushost-swe.dl.sourceforge.net/project/phplist/phplist/3.6.15/phplist-3.6.15.tgz ######################################################################### 100.0%######################################################################### 100.0% https://netix.dl.sourceforge.net/project/phplist/phplist/3.6.15/phplist-3.6.15.zip ######################################################################### 100.0%######################################################################### 100.0% https://github.com/phpList/phplist3/archive/refs/tags/v3.6.15.zip -=O=- # # # # https://github.com/phpList/phplist3/archive/refs/tags/v3.6.15.tar.gz -=O=- # # # # https://downloads.wordpress.org/release/wordpress-6.7.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/plugin/woocommerce-gateway-stripe.9.1.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/astra.4.8.11.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/generatepress.3.5.1.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/hestia.3.2.7.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/neve.4.0.0.zip ######################################################################### 100.0% https://downloads.wordpress.org/theme/oceanwp.4.0.5.zip ######################################################################### 100.0% 2025-02-03 5.9M astra.4.8.11.zip 1.1M generatepress.3.5.1.zip 8.0M hestia.3.2.7.zip 7.1M neve.4.0.0.zip 6.0M oceanwp.4.0.5.zip 21M phplist-3.6.15.tgz 29M phplist-3.6.15.zip 32K plugin.json 4.6M v3.6.15.tar.gz 5.0M v3.6.15.zip 1.4M woocommerce-gateway-stripe.9.1.1.zip 28M wordpress-6.7.1.zip 0e106338e48c9d4d023a46a368f0069b807ce2118a9bf51ddf04c76070867aba astra.4.8.11.zip a5e1d7478cce21b7bbef511bbea44156f59acd40cc7e51ad469c403013ba29f5 generatepress.3.5.1.zip cf89c4f50301f2d030ae3662d4c8b4359445b8ee31fcdd5f67cb0c2c1c50adf8 hestia.3.2.7.zip cb4cee1ad2cdd020729884d3bd97ecabd16194f3388e301bc9164c3f980d10a3 neve.4.0.0.zip d1392dbe5f729178c968f5551855a412b41866e876dcf2a79ffd4e07298c4d13 oceanwp.4.0.5.zip dfe441583f7f72b116c2f7db24821259df4fdc991ab52a7078ba3293729d71b9 phplist-3.6.15.tgz fcbe14b2770832d2788f3a8a5c9c6c18b178bf069559ca30c947bac78ca51e19 phplist-3.6.15.zip c0a5eabed1f1317a58dcaeff254865764c071eb03aa670c0084b3dc6767de489 plugin.json 31e4a733aa481fe483f5513931d04607b14243b7f2cc2c3c210a6abe508e3265 v3.6.15.tar.gz 16c3bc98c6d4acd52478042b733c90ac8d64d31762b884856e6cf3c620b4b82e v3.6.15.zip 2a958f50e458b900d8cd2d7b980e93e37ca720eebf3c7b4a5f94ed5d9d167079 woocommerce-gateway-stripe.9.1.1.zip 75f4e9cb71e583ca3f8b19691b5754adb9c981580762137f82443e1eec468f9c wordpress-6.7.1.zip user@disp2327:/tmp/tmp.0MQDfRxGyc$
Sat Feb 01, 2025
- Catarina responded to my email.
- It sounds like she doesn't want to pay someone to convert the existing osemain to a new theme because she wants to do a complete rela