wordpress icon indicating copy to clipboard operation
wordpress copied to clipboard

Potential upgrade failure with new phpdotenv 2

Open ottok opened this issue 6 years ago • 3 comments

From customer:

Laajemman asian selvittelyn ja kaivelun jälkeen pääsin kiinni syyhyn mistä tuo johtuu. Ongelma on lähtöisin tästä commitista: https://github.com/Seravo/wordpress/commit/c305238f050b5f0ae258a74fb2fec92db60560a8#diff-1da2c7edc898c70e5a79a9997c98cecc Commitissa päivitetään phpdotenv versiosta 1.0.9 versioon 2.4.0, mutta se tehdään virheellisesti siten että composer.lock päivitetään vain osittain: phpdotenv siirtyi käyttämään PSR-4 autoloadia 2.0 versiossa, mutta tuo tieto ei päivity kys. commitissa.

Tuosta johtuen Composer yrittää ladata phpdotenviä PSR-0:n mukaisesti, kun se pitäisi ladata PSR-4:n mukaisesti. phpdotenvia ei yritetä ladata ellei .env-tiedostoa ole luotu, joten virhe ja PHP:n kaatuminen tapahtuu vain kun tiedosto on olemassa.

composer.lock päivitetään oikein myöhemmin tässä commitissa: https://github.com/Seravo/wordpress/commit/55dac8a36ea00acb4bad56f175d0f8cfd1d63a93#diff-1da2c7edc898c70e5a79a9997c98cecc Commitissa päivittyy siis tuo autoloadi:

 "autoload": {
 - "psr-0": {
 - "Dotenv": "src/"
 + "psr-4": {
 + "Dotenv\\": "src/"
 }
 },

En tiedä olitteko jo tietoisia asiasta, mutta ajattelin kuitenkin varmuuden vuoksi huomauttaa asiasta. Aikaisempi committi on tehty 10.9. ja tuo korjaava committi 10.12. Oman käsitykseni mukaan luotte uudet palvelut aina käyttäen uusinta versiota kys. GitHub reposta(?), joten luultavasti kaikissa asennuksissa tuolta aikaväliltä on sama ongelma, ellei tiedostopohjaa ole päivitetty itse jälkeenpäin. Ainakin näin näytti olevan kun tarkistin omia asennuksiamme tuolta aikaväliltä ja aikavälin ulkopuolelta.

ottok avatar Sep 27 '19 06:09 ottok

We have not had any more reports about this. If you suffer from this, please chip in.

ottok avatar May 26 '20 08:05 ottok

We could mitigate this issue by extending the wp-fix-project command to automatically update both composer.json, composer.lock and wp-config.php so they all migrate to the new Dotenv version in lockstep so that individual users/developers don't need to spend time on debugging/fixing it.

ottok avatar Jun 10 '20 09:06 ottok

The same also applies when upgrading to Dotenv 5.x: one must also remember to update relevant lines in wp-config.php to match the new syntax in Dotenv 5.x. For more information, see:

  • https://github.com/Seravo/wordpress/commit/88d3a0201da14b935f50f27ba49f1aeb51ae726c
  • https://seravo.com/docs/development/environment-variables/#note-on-dotenv-version-500

ottok avatar Jan 27 '21 13:01 ottok