Page MenuHomePhabricator

Installer requires dbpassword even when using unix domain sockets
Open, Needs TriagePublicBUG REPORT

Description

Steps to replicate the issue:

  • Try installing MediaWiki with PostgreSQL as a database backend
  • In NixOS we use the following arguments in a test
/nix/store/dq53bcgwdx76d8mrrlq73fnav7isa940-php-with-extensions-8.3.29/bin/php /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/maintenance/run.php /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/maintenance/install.php \
  --confpath /tmp \
  --scriptpath / \
  --dbserver /run/postgresql \
  --dbport 5432 \
  --dbname mediawiki \
  --dbuser mediawiki \
  --passfile /nix/store/8790vl7g4q4gd4ipzvha67pi4gp5668f-password \
  --dbtype postgres \
  MediaWiki \
  admin
  • See the install fail:
machine # [   23.250495] mediawiki-init-start[1187]: PHP 8.3.29 is installed.
machine # [   23.255662] mediawiki-init-start[1187]: ICU 73.2 is installed (supports Unicode 15.0.0).
machine # [   23.311740] mediawiki-init-start[1187]: Warning: Could not find APCu. Object caching is not enabled.
machine # [   23.334330] mediawiki-init-start[1187]: GNU diff3 text comparison utility not found. You can ignore this for now, but might run into edit conflicts more frequently.
machine # [   23.340250] mediawiki-init-start[1187]: Found GD graphics library built-in. Image thumbnailing will be enabled if you enable uploads.
machine # [   23.346198] mediawiki-init-start[1187]: Git version control software not found. You can ignore this for now. Note Special:Version will not display commit hashes.
machine # [   23.352327] mediawiki-init-start[1187]: Using server name "http://localhost".
machine # [   23.355691] mediawiki-init-start[1187]: Using server URL "http://localhost/".
machine # [   23.358936] mediawiki-init-start[1187]: Warning: Your default directory for uploads (/nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/images/) is not checked for vulnerability to arbitrary script execution during the CLI install.
machine # [   23.474568] mediawiki-init-start[1187]: Warning: Because of a connection error, it was not possibly to verify that images in your uploads directory, respond with the HTTP header X-Content-Type-Options: nosniff to protect browsers from potentially unsafe files. It is highly recommended to configure appropriate response headers on your webserver before enabling uploads.
machine # [   23.485299] mediawiki-init-start[1187]: The environment has been checked. You can install MediaWiki.
machine # [   23.516379] mediawiki-init-start[1187]: Including extensions... done
machine # [   23.524146] mediawiki-init-start[1187]: Setting up database... [18e2296325afbc4e30c81a20] [no req]   TypeError: MediaWiki\Installer\PostgresInstaller::openConnectionToAnyDB(): Argument #2 ($password) must be of type string, null given, called in /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/PostgresInstaller.php on line 120
machine # [   23.538919] mediawiki-init-start[1187]: Backtrace:
machine # [   23.542254] mediawiki-init-start[1187]: from /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/PostgresInstaller.php(159)
machine # [   23.549159] mediawiki-init-start[1187]: #0 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/PostgresInstaller.php(120): MediaWiki\Installer\PostgresInstaller->openConnectionToAnyDB(string, null)
machine # [   23.556712] mediawiki-init-start[1187]: #1 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/DatabaseInstaller.php(149): MediaWiki\Installer\PostgresInstaller->openConnection(string)
machine # [   23.563652] mediawiki-init-start[1187]: #2 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/NetworkedDatabaseCreator.php(21): MediaWiki\Installer\DatabaseInstaller->getConnection(string)
machine # [   23.570679] mediawiki-init-start[1187]: #3 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/Task/CreateDatabaseTask.php(27): MediaWiki\Installer\NetworkedDatabaseCreator->existsLocally(string)
machine # [   23.577865] mediawiki-init-start[1187]: #4 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/Task/TaskRunner.php(155): MediaWiki\Installer\Task\CreateDatabaseTask->execute()
machine # [   23.584861] mediawiki-init-start[1187]: #5 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/Task/TaskRunner.php(52): MediaWiki\Installer\Task\TaskRunner->runTask(MediaWiki\Installer\Task\CreateDatabaseTask)
machine # [   23.592862] mediawiki-init-start[1187]: #6 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/Installer.php(1471): MediaWiki\Installer\Task\TaskRunner->execute()
machine # [   23.599500] mediawiki-init-start[1187]: #7 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/includes/installer/CliInstaller.php(212): MediaWiki\Installer\Installer->performInstallation(Closure, Closure)
machine # [   23.606629] mediawiki-init-start[1187]: #8 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/maintenance/install.php(207): MediaWiki\Installer\CliInstaller->execute()
machine # [   23.612869] mediawiki-init-start[1187]: #9 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/maintenance/includes/MaintenanceRunner.php(696): CommandLineInstaller->execute()
machine # [   23.619267] mediawiki-init-start[1187]: #10 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/maintenance/doMaintenance.php(88): MediaWiki\Maintenance\MaintenanceRunner->run()
machine # [   23.625833] mediawiki-init-start[1187]: #11 /nix/store/li2dlfcxrszkdqnc2pvv2v4fr528ip2f-mediawiki-full-1.45.0/share/mediawiki/maintenance/install.php(278): require_once(string)
machine # [   23.631518] mediawiki-init-start[1187]: #12 {main}
machine # [   23.643286] systemd[1]: mediawiki-init.service: Main process exited, code=exited, status=255/EXCEPTION
machine # [   23.655617] systemd[1]: mediawiki-init.service: Failed with result 'exit-code'.

What happens?:

The installer crashed.

What should have happened instead?:

The installer should have run through.

Software version (on Special:Version page; skip for WMF-hosted wikis like Wikipedia):

MediaWiki 1.45.0
PHP 8.3.29

Other information (browser name/version, screenshots, etc.):

https://github.com/NixOS/nixpkgs/issues/480903

Event Timeline

Change #1231289 had a related patch set uploaded (by Mic92; author: Mic92):

[mediawiki/core@master] PostgresInstaller: Handle null password in openConnectionToAnyDB

https://gerrit.wikimedia.org/r/1231289