Gerar arquivo TXT em uma grid

Bom dia, tenho um caso onde eu preciso gerar um arquivo txt via botão run. Desenvolvi meu codigo porém não estou conseguindo realizar com sucesso a demanda. Creio que seja algo como permissões da pasta onde o arquivo precisa ser aberto, não sei. Trabalho com windows e nao estou sabendo resolver esse problema. Acredito que o problema nao esteja no meu código. Estou criando esse tópico pois pesquisei sobre o assunto e não encontrei nada sobre. Se alguém puder me ajudar com o caso, agradeço demais.

Atualmente estou caindo no alert "Erro ao abrir o arquivo"

meu código autal do botão run:

    // Buscar o valor do lote_cbios da linha
    $campo_lote = {lote_cbios};

    // Atualizar a tabela zmonitor
    $update_zmonitor = "
        UPDATE zmonitor
        SET cbios_s = quantidade,
            quantidade = NULL
        WHERE lote_cbios = '$campo_lote'";
    sc_exec_sql($update_zmonitor);

    // Atualizar a tabela zcbst052
    $update_zcbst052 = "
        UPDATE zcbst052
        SET cbios_s = quantidade,
            quantidade = NULL
        WHERE lote_cbios = '$campo_lote'";
    sc_exec_sql($update_zcbst052);

    // Selecionar os valores de chave_nota_fiscal do lote
    $sql_select = "
        SELECT chave_nota_fiscal
        FROM zcbst052
        WHERE lote_cbios = '$campo_lote'";
    sc_select(rs_chaves, $sql_select);

    $chaves = [];

    if ({rs_chaves} !== false && !{rs_chaves}->EOF) {
        while (!{rs_chaves}->EOF) {
            $chaves[] = {rs_chaves}->fields[0];
            {rs_chaves}->MoveNext();
        }
        {rs_chaves}->Close();
    } else {
        echo "Nenhum dado encontrado para o lote informado.";
        return;
    }

    $conteudo_txt = implode(";", $chaves);

    $arquivo_nome = "chaves_lote_" . $campo_lote . ".txt";
    $diretorio = $this->Ini->path_doc; // ou outro caminho confiável
    $caminho_arquivo = $diretorio . "/" . $arquivo_nome;

    // Criar e gravar no arquivo
    $arquivo = fopen($caminho_arquivo, "w");

    if (!$arquivo) {
        echo "Erro ao abrir o arquivo.";
        return;
    }

    if (fwrite($arquivo, $conteudo_txt) === false) {
        echo "Erro ao escrever no arquivo.";
        fclose($arquivo);
        return;
    }

    fclose($arquivo);

    // Link para download do arquivo
    echo "<br><a href='$caminho_arquivo' target='_blank'>Clique aqui para baixar o arquivo gerado</a>";