OK, I have resolved this myself. Hopefully, this will be of use to some other poor amateur Linux administrator.
I installed PHP 4.4 from a tarball, and configured and built it. One of the config options is ‘–with-mysql’, which I of course specified. This is wrong. It must be ‘–with-mysql=/usr’. The former form causes PHP to use its own included copy of MySQL. WTF good is that? I don’t know, but it does cause random bugs and errors because its mysql and the one the system is using are out-of-sync. Once I re-built using the latter form, all is well.
PHP may be a nice language, but its implementation is teh suck. Perl rules!