Daniel Lockyer

Why I haven't upgraded to PHP 7.3 yet


I’ve been going on about PHP 7.3 for a long time now. There’s even a sticker of me talking about it in the WIP Telegram group. And it was finally released at the beginning of December.

But I don’t think it’s ready to switch to just yet.

We upgraded it for Nomad List and had a ton of issues. In the end, we had to revert to 7.2.

The installation went fine, as usual. I use Ondřej Surý’s repository for all things PHP. I made the changes to php.ini to match our needs and then switched Nginx over.

It seemed to work fine. Our monitoring didn’t notice anything going down so I was pretty happy. Over the next couple of hours, we started noticing things wrong.

Firstly, our phpLiteAdmin installations didn’t show any tables or column names. We thought it was an issue with some sort of deprecated thing in 7.3 so reported it on GitHub.

Then I started checking out dmesg and the system logs. It was reporting php-fpm workers were segfaulting at a rate of about one per second – not great. I tried debugging but it kept reporting that the debug symbols were for a different version and I was doing it on a production machine so I thought it was best to leave it alone. It’s also hard to tell which section of code is causing the issue because we have ~12 sites running on it.

And then recently, we started seeing a dramatic slowdown on one of our PHP cron scripts. It was taking over an hour to complete on a powerful VPS but 5 minutes on a Macbook. This was partly my fault – I forgot to switch the default PHP CLI version to 7.2 – but as soon as I did, the issue went away. That piece of code was quite short and just contained array operations.

Their bug tracker seems to have quite a few bugs listed. The 7.3 changelog also looks like some parts of the system went through a rewrite so it’s likely some issues got introduced.

It won’t be long until all these issues have been resolved but until then, I’d hold off from upgrading.