Seravo / wordpress

The WordPress project layout used by many of Seravo's customers, suitable also for local development with Vagrant and git deployment
https://seravo.com
GNU General Public License v3.0
102 stars 54 forks source link

Potential upgrade failure with new phpdotenv 2 #112

Open ottok opened 4 years ago

ottok commented 4 years ago

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 commented 4 years ago

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

ottok commented 4 years ago

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 commented 3 years ago

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: