Foi um erro do PHP. Habilitar a exibição de erros do PHP mostrou isso e o motivo pelo qual eu não vi quando eu estava executando o script manualmente é porque eu estava rodando como root e o erro era a falta de permissão para gravar dados temporários em um diretório.