Maltfield Log/2025 Q1: Difference between revisions
Jump to navigation
Jump to search
(Feb 06) |
(Feb 07) |
||
Line 8: | Line 8: | ||
# [[Special:Contributions/Maltfield]] | # [[Special:Contributions/Maltfield]] | ||
= | =Fri Feb 07, 2025= | ||
# | # here's tofu 2/3 (VPN, exit in Hungary) | ||
<pre> | <pre> | ||
Hungary | |||
2025-02- | 2025-02-07 | ||
INFO: Determining Latest Version of Wordpress Core | INFO: Determining Latest Version of Wordpress Core | ||
INFO: Determining Latest Version of Wordpress Plugins | INFO: Determining Latest Version of Wordpress Plugins | ||
. | . . . . | ||
INFO: Determining Latest Version of Wordpress Themes | INFO: Determining Latest Version of Wordpress Themes | ||
. . | |||
https://downloads.wordpress.org/release/wordpress-6.7.1.zip | https://downloads.wordpress.org/release/wordpress-6.7.1.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/plugin/ | 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% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/ | https://downloads.wordpress.org/plugin/google-language-translator.6.0.20.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/ | https://downloads.wordpress.org/plugin/gtranslate.3.0.7.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/theme/hestia.3.2.8.zip | https://downloads.wordpress.org/theme/hestia.3.2.8.zip | ||
Line 41: | Line 35: | ||
https://downloads.wordpress.org/theme/neve.4.0.1.zip | https://downloads.wordpress.org/theme/neve.4.0.1.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
2025-02-07 | |||
296K google-language-translator.6.0.20.zip | |||
2025-02- | 700K gtranslate.3.0.7.zip | ||
8.0M hestia.3.2.8.zip | 8.0M hestia.3.2.8.zip | ||
7.1M neve.4.0.1.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 | 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 | 241b8c804ed1af72b1c9aa52f603730a52ebf7850383ac2e4d9dd163f6cfc3ca hestia.3.2.8.zip | ||
2b51e758d61b9d78ebd57d2afd9a967335bcb6866c5bff5a0d7157eecb6ec8cb neve.4.0.1.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 | 75f4e9cb71e583ca3f8b19691b5754adb9c981580762137f82443e1eec468f9c wordpress-6.7.1.zip | ||
user@ | user@disp8772:/tmp/tmp.7XNQH4tjs9$ | ||
</pre> | </pre> | ||
# | # ... | ||
# 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 | ||
# | |||
# the | |||
<pre> | <pre> | ||
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 # | |||
</pre> | </pre> | ||
# | # 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 | |||
<pre> | <pre> | ||
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 # | |||
</pre> | </pre> | ||
# and | # 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 | |||
<pre> | |||
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> | <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 # | |||
</pre> | </pre> | ||
# | # 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 | |||
<pre> | <pre> | ||
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 # | |||
</pre> | |||
## 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 | |||
<pre> | |||
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 # | ||
</pre> | |||
> | # I tried running this using `mysql`, but it failed | ||
> | <pre> | ||
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 # | ||
</pre> | |||
# I tried pasting it manually into the command-line, and I got the same result | |||
<pre> | |||
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]> | |||
</pre> | |||
> | # after several trial-and-errors, I got this to work | ||
<pre> | |||
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]> | |||
</pre> | |||
#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 | |||
<pre> | |||
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 # | |||
</pre> | |||
# after this, I tried to run the upgrade scripts again, but it failed in 5 seconds with this error | |||
<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 | |||
...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 # | |||
</pre> | |||
# 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 | |||
<pre> | |||
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 | | |||
... | |||
</pre> | |||
# a second sed to fix that | |||
<pre> | |||
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 # | |||
</pre> | |||
# and we run it to add the DBs | |||
<pre> | |||
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 # | |||
</pre> | |||
# it ran in 5 seconds again, but this time it exited with "Done" – no errors | |||
<pre> | |||
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 # | |||
</pre> | |||
# here's the run log output | |||
<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 | |||
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 # | |||
</pre> | |||
# I tried to update the thread with this https://www.mediawiki.org/wiki/Topic:Yakailc03f0u43c0 | |||
<pre> | |||
> 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 | |||
</pre> | |||
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 | |||
<pre> | |||
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 | |||
</pre> | |||
</pre> | </pre> | ||
# | # ...but I got an error | ||
<pre> | |||
'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. | |||
</pre> | |||
# I | # 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 | |||
# here's | |||
<pre> | <pre> | ||
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}} | |||
</pre> | |||
# 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 | |||
# I still get an error at the top of the page complaining about the skin "Vector" not being installed; let's do that | |||
<pre> | |||
# 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}" | |||
fi | 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"' | |||
$ | </pre> | ||
# after that, I refreshed the wiki and I still have the error. | |||
# here's the error | |||
<pre> | |||
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. | |||
for | </pre> | ||
# 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) | |||
<pre> | |||
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 | |||
. . . . . | |||
<pre> | |||
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 | https://downloads.wordpress.org/release/wordpress-6.7.1.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/plugin/ | https://downloads.wordpress.org/plugin/woocommerce-gateway-stripe.9.1.1.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/ | https://downloads.wordpress.org/theme/astra.4.8.11.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/ | https://downloads.wordpress.org/theme/generatepress.3.5.1.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/theme/hestia.3.2.8.zip | https://downloads.wordpress.org/theme/hestia.3.2.8.zip | ||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/theme/neve.4.0.1.zip | https://downloads.wordpress.org/theme/neve.4.0.1.zip | ||
######################################################################### 100.0% | |||
https://downloads.wordpress.org/theme/oceanwp.4.0.5.zip | |||
######################################################################### 100.0% | ######################################################################### 100.0% | ||
2025-02-06 | 2025-02-06 | ||
5.9M astra.4.8.11.zip | |||
1.1M generatepress.3.5.1.zip | |||
8.0M hestia.3.2.8.zip | 8.0M hestia.3.2.8.zip | ||
7.1M neve.4.0.1.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 | 28M wordpress-6.7.1.zip | ||
0e106338e48c9d4d023a46a368f0069b807ce2118a9bf51ddf04c76070867aba astra.4.8.11.zip | |||
a5e1d7478cce21b7bbef511bbea44156f59acd40cc7e51ad469c403013ba29f5 generatepress.3.5.1.zip | |||
241b8c804ed1af72b1c9aa52f603730a52ebf7850383ac2e4d9dd163f6cfc3ca hestia.3.2.8.zip | 241b8c804ed1af72b1c9aa52f603730a52ebf7850383ac2e4d9dd163f6cfc3ca hestia.3.2.8.zip | ||
2b51e758d61b9d78ebd57d2afd9a967335bcb6866c5bff5a0d7157eecb6ec8cb neve.4.0.1.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 | 75f4e9cb71e583ca3f8b19691b5754adb9c981580762137f82443e1eec468f9c wordpress-6.7.1.zip | ||
user@ | user@disp4288:/tmp/tmp.aqIzX10FIC$ | ||
</pre> | </pre> | ||
# ... | # meld diff of these 3 TOFUs had two issues | ||
# I | ## hestia changed from v3.2.7 to v3.2.8 | ||
# so I'm | ## 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 | |||
<pre> | <pre> | ||
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$ | |||
user | |||
</pre> | </pre> | ||
# I | # 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 | |||
<pre> | <pre> | ||
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$ | |||
</pre> | </pre> | ||
# | # 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 | ||
<pre> | <pre> | ||
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$ | |||
user | |||
</pre> | </pre> | ||
# | # but it looks like there's lots of differences between the ones named 'phplist-3.6.15' and the ones named 'v3.6.15' | ||
<pre> | <pre> | ||
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 | |||
user | 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 | |||
</pre> | 16c16 | ||
# | < define('STRUCTUREVERSION',"3.6.15"); | ||
--- | |||
# don't | > 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$ | |||
</pre> | |||
# 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 | |||
<pre> | <pre> | ||
################################################################################ | |||
# 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 | |||
d | ${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' | |||
d | 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}") | |||
} | |||
if | 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 * | |||
</pre> | </pre> | ||
# | # and here's TOFU 1/3 (Tor, exit in Poland) | ||
<pre> | <pre> | ||
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 | |||
</pre> | ######################################################################### 100.0% | ||
# | https://downloads.wordpress.org/theme/hestia.3.2.8.zip | ||
# let's | ######################################################################### 100.0% | ||
https://downloads.wordpress.org/theme/neve.4.0.1.zip | |||
<pre> | ######################################################################### 100.0% | ||
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" | 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$ | |||
</pre> | |||
# ... | |||
# 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) | |||
<pre> | |||
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 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 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, | real 0m0,077s | ||
user 0m0, | user 0m0,002s | ||
sys 0m0, | sys 0m0,005s | ||
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 # | ||
</pre> | </pre> | ||
# | # I fixed this with | ||
<pre> | <pre> | ||
# don't yet load Cite (until after upgrades) | |||
# | sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)Cite\(.*\)%\1#wfLoadExtension\2Cite\3%' ${vhostDir}/LocalSettings.php | ||
</pre> | </pre> | ||
# | # subsequent upgrade attempts resulted in an error with the interwiki extension | ||
<pre> | <pre> | ||
root@hetzner3 /var/www/html/wiki.opensourceecology.org | 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" | ||
htdocs/includes/ | 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 | |||
/var/ | Error: The Interwiki extension cannot be loaded. Check that all of its files are installed properly. | ||
root@hetzner3 /var/ | #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 # | |||
</pre> | </pre> | ||
# | # fixed with | ||
<pre> | <pre> | ||
root@hetzner3 /var/ | # don't yet load Interwiki (until after upgrades) | ||
sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)Interwiki\(.*\)%\1#wfLoadExtension\2Interwiki\3%' ${vhostDir}/LocalSettings.php | |||
</pre> | |||
# then it complains about Gadgets | |||
<pre> | |||
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 # | |||
root@hetzner3 /var/ | |||
</pre> | </pre> | ||
# | # fixed with | ||
# | <pre> | ||
# don't yet load Gadgets (until after upgrades) | |||
sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)Gadgets\(.*\)%\1#wfLoadExtension\2Gadgets\3%' ${vhostDir}/LocalSettings.php | |||
</pre> | |||
# then ReplaceText | |||
<pre> | <pre> | ||
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" | 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 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 | real 0m0,053s | ||
user 0m0, | user 0m0,002s | ||
sys 0m0, | sys 0m0,007s | ||
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 # | ||
</pre> | </pre> | ||
# | # fixed with | ||
# | <pre> | ||
# | # don't yet load ReplaceText (until after upgrades) | ||
sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)ReplaceText\(.*\)%\1#wfLoadExtension\2ReplaceText\3%' ${vhostDir}/LocalSettings.php | |||
</pre> | |||
# | # then RenameUser | ||
<pre> | <pre> | ||
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 # 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 Warning: Undefined array key "HTTP_USER_AGENT" in /var/www/html/wiki.opensourceecology.org/LocalSettings.php on line 23 | ||
PHP | 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( | |||
#1 /var/www/html/wiki.opensourceecology.org/LocalSettings.php( | #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('...') | #2 /var/www/html/wiki.opensourceecology.org/htdocs/LocalSettings.php(8): require_once('...') | ||
#3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php( | #3 /var/www/html/wiki.opensourceecology.org/htdocs/includes/Setup.php(220): require_once('...') | ||
#4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/ | #4 /var/www/html/wiki.opensourceecology.org/htdocs/maintenance/run.php(49): require_once('...') | ||
#5 | #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 | |||
PHP Fatal error: | real 0m0,052s | ||
user 0m0,004s | |||
sys 0m0,004s | |||
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 # | ||
</pre> | </pre> | ||
# | # fixed with | ||
## | <pre> | ||
# don't yet load Renameuser (until after upgrades) | |||
sed -i 's%^\(\s*\)[^#]*wfLoadExtension\(.*\)Renameuser\(.*\)%\1#wfLoadExtension\2Renameuser\3%' ${vhostDir}/LocalSettings.php | |||
</pre> | |||
# tried again, and it complained about Nuke | |||
<pre> | <pre> | ||
root@hetzner3 /var/www/html/wiki.opensourceecology.org | 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 # | |||
root@hetzner3 /var/ | |||
</pre> | </pre> | ||
# | # this seems a bit excessive; these dirs are in-place | ||
<pre> | <pre> | ||
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 # 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 # | |||
root@hetzner3 /var/ | |||
</pre> | </pre> | ||
# I | # 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 | ||
<pre> | <pre> | ||
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 # grep wgExtensionsDirectory ${vhostDir}/LocalSettings.php | ||
$wgExtensionsDirectory = "$IP/extensions"; | |||
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 # | ||
</pre> | </pre> | ||
# | # 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 | |||
<pre> | <pre> | ||
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # time nice sudo -u www-data php "${docrootDir}/maintenance/ | 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 | real 0m0,053s | ||
user 0m0, | user 0m0,008s | ||
sys 0m0, | sys 0m0,000s | ||
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 # | ||
</pre> | </pre> | ||
# | # ok, I don't understand this error; we are *not* using that var | ||
<pre> | <pre> | ||
root@hetzner3 /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 # | |||
root@hetzner3 /var/ | |||
</pre> | </pre> | ||
# | # here's where the error came-from | ||
<pre> | <pre> | ||
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 # | |||
</pre> | |||
# | # we didn't modify that file; it's identical to the file as included in the release of mediawiki-1.43.0 | ||
<pre> | |||
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 # | |||
</pre> | |||
# ok, looks like we do try to set the "IP" dir | |||
<pre> | <pre> | ||
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 # | |||
# | </pre> | ||
# 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 | |||
<pre> | |||
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 # | |||
# | </pre> | ||
# looking at the error above it, I wonder if it's possible that the issue is coming from here | |||
<pre> | |||
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 # | |||
</pre> | |||
# nah, looks like this file is present both in our docroot *and* in the release dir. And they're identical | |||
<pre> | |||
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 | |||
1. | 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 # | |||
</pre> | </pre> | ||
# ok, yeah, the only thing in this file is the error about using this file | |||
<pre> | <pre> | ||
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 # | |||
</pre> | |||
# oh, actually there is some stuff at the end | |||
# yeah, that *was* it. If I comment-out that line, then it continues | |||
<pre> | |||
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 # | |||
</pre> | |||
# 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 | |||
</pre> | |||
# | |||
# | |||
# | |||
# I'm | |||
# | |||
# I | |||
<pre> | <pre> | ||
root@hetzner3 /var/tmp/ | 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 # | |||
root@hetzner3 /var/tmp/ | |||
</pre> | </pre> | ||
# | # 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 | |||
<pre> | <pre> | ||
root@hetzner3 /var/ | 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 | |||
4,0K | d---r-x--- 4 not-apache www-data 4,0K Dec 26 23:53 QuestyCaptcha | ||
4,0K | ----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 # | |||
root@hetzner3 /var/ | |||
</pre> | </pre> | ||
# | # 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 | |||
<pre> | <pre> | ||
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@ | user 0m0,008s | ||
sys 0m0,000s | |||
root@hetzner3 /var/tmp/backups_for_migration_from_hetzner2/wiki.opensourceecology.org_20241228/current # | |||
</pre> | </pre> | ||
# | # here's the error log | ||
<pre> | <pre> | ||
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 # | |||
</pre> | |||
# I believe this is why we had the second upgrade command; let's try that and then maybe try the first command again | |||
<pre> | |||
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 # | |||
</pre> | |||
# that only took 13 seconds; let's do the first command again | |||
<pre> | |||
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 # | |||
</pre> | |||
# cool, on double-tap it finished in less than 2 minutes, and this time it ended with a "Done" message instead of an error | |||
<pre> | |||
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 # | |||
</pre> | |||
# 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 | |||
<pre> | |||
Installed software | |||
Product Version | |||
MediaWiki 1.35.0 | |||
PHP 8.2.26 (fpm-fcgi) | |||
MariaDB 10.11.6-MariaDB-0+deb12u1 | |||
ICU 72.1 | |||
</pre> | |||
=Sun Feb 02, 2025= | |||
# Here's TOFU 2/3 (VPN, exit in US) | |||
<pre> | |||
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$ | |||
</pre> | </pre> | ||
=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 | |||
# | |||
# | |||
Revision as of 22:38, 12 February 2025
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
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