I've long planned to switch to zenphoto (from Menalto Gallery) for many reasons revolving mostly around your philosophy.
Then I tried it today. And spent most of my day trying to figure out why the setup was totally failing, or partially working then totally failing. The basic symptom was that depending on the permissions of the files in the zenphoto distribution on my server (which I host entirely myself, so I have full control over apache and php), the site would either fail to setup because it couldn't read/write things, or would just return a 500 error.
I frequently found google searches that referenced posts on this forum, with other people having the same problem. Mostly you told them "it's your fault, or your hosting provider's fault, go complain to them". I am my own hosting provider, and I run a sane setup, and I had no idea what to do.
The biggest problem was that the 500 errors were not logged anywhere - not in my site-specific apache logs, not in my global apache logs, not in my global php log. I fiddled with apache settings, log levels, log locations, php settings, filesystem permissions, and nothing worked.
I finally narrowed it down to a single file - zp-data/zenphoto.cfg. Depending on who owned that file (my user or my apache user) and what the specific permissions were on it (660 or anything else), I'd either get the 500 error or I'd get the setup page, but it would complain that it couldn't read that file. Still no error logged anywhere that helped.
So I started digging through the code, putting print "GOT HERE"; in, and moving it around until I could narrow down where the problem was happening.
Turns out it was happening because zenphoto.cfg specified the database as "mysqli" (which I'd never heard of, but google suggested that it was the best option, so I left it). So the setup was calling "mysql_connect" which was calling "mysqli_connect" which was failing.
Because I don't have the mysqli extension installed on my system. I'm running on netbsd, using pkgsrc, and it isn't installed by default with php, and I'd never needed it before now.
BUT YOU HAD AN @-SIGN IN FRONT OF THE mysqli_connect CALL, SO IT NEVER REPORTED THE ERROR ANYWHERE!!!
Yeah, it's pretty damn angering that I spent hours trying to understand why this wasn't logging any error only to discover that you were using a hare-brained 'feature' of php that seems to have the only purpose of making production issues harder to debug. And you use it all over the place!
So next time someone asks about 500 errors, please apologize to them instead for how extremely difficult you've made it for them to debug those errors, rather than crankily telling them to go talk to their server admins. (I will concede that this was a server-admin-level issue - but you've made it impossible for the admins to understand what is going wrong!)
I haven't quite given up on zenphoto; I've had my heart set on it for years. But this is seriously questionable coding practice, and it makes me question whether I'm really going to have a better experience here.
Thanks for listening,