No seu código, você afirma
$dirname = '/var/churros/data/nextcloud/';
No entanto, quando você demonstra as permissões abaixo, você mostra
namei -l /var/churros/web/nextcloud/
Como sabemos que os dados dir são escritos corretamente?
qual é o resultado de:
namei -l /var/churros/data/nextcloud/
???
Além disso, estou curioso para saber como
if (touch($dirname.'/chkpt.tmp')) {...
trabalhou no script acima, ele deveria ter agido em /var/churros/data/nextcloud//chkpt.tmp (note double-slash entre dir: nextcloud e filename chkpt.tmp).
Eu incluí ocasionalmente erros de digitação ... e até scripts de digitação em vez de copiar / colar exatamente como é ... Meu ponto é, à primeira vista, parece que há inconsistências no OP que estão contribuindo para o erro enquanto cumpre certas condições coincidentemente, ou simplesmente a primeira declaração de variável precisa ser modificada para ler ... / web / nextcloud / para atender aos requisitos reais de dir como declarado ...