Every so often I run across an a 500 error on a production system that has no apparent cause. The application logs, nor the server logs, nor the php specific logs will have any clue to the cause. It is incredibly frustrating.
Every time I start combing through code that I suspect of causing this issue, and every time I come up empty. After flailing around for what seem forever and reading everything I can Duck Duck Go or Google, I have an idea... maybe it ran out of memory. It never fails, this has been the case and yet I seem to forget this lesson. (Note: I have gotten an over memory limit entry in the log once or twice after trying the same action many times, but it is rare.)
The Bourne Again Shell (also known as BASH) is one of the most useful tools in computing. Though command line interfaces may appear scary at first, they become vital to get things done. However bash does have some flaws. Advanced commands can quickly become terse and unreadable. If a task requires specific parameters, it can be quite tiresome to remember five necessary flags (Looking at you, Grep!)
I just updated one of my servers and one of my laptops to Ubuntu 16.04. I have had nothing but positive experiences in both the desktop server editions, less one hiccup with my ssh keys.