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>";