Vai em aplicação, configurações e verifique o caminho de upload de documentos. Esse deve ter permissão de escrita e leitura (777), após publicar, se for em modo típico, o caminho ficará …diretório…/_lib/file/doc, em modo avançado …diretorio…/scriptcase/file/doc confirme se esses diretórios está com está 777.
Se desejar colocar esses arquivos dentro da _lib, você deve alterar o caminho em aplicação / configuração / caminhos do upload e ao publicar selecionar modo avançado, campo de documentos, caminho desejado. Lembrando que esse se for em servidor compartilhado de ter o caminho completo, que você pode obter com o comando getcwd(); do php.
Rodrigo bom dia,
eu tenho acesso total as a pastas no inicio do txt que publiquei eu pego o caminho completo da pasta onde dever gravado o arquivo, e tambem ja mudei o caminho na aplicação, porem ao publicar eu recebo um erro, e depois de quebrar a cabeça eu percebi que o SC esta subindo pra pastra tmp e nao diretamente pra pasta que esta configurada.
Entao entendi que e o SC sobre pra pasta TMP e depois nao acha o caminho informado pra colocar o arquivo…
lembro que em mode desenvolvimento esta funcionado perfeitamente…e a pasta esta no caminho(_lib\Nfeproducao\recebidas\emp_001\fil_001\201507) este e caminho no desenvolvimento e na produção…
Rodrigo,
por favor voce consegue me ajudar…segue o erro…
.: /home/flexsgn/www/sgn/control_xml
Atenção
file_get_contents() [function.file-get-contents]: Unable to access /home/flexsgn/www/sgn/_lib/nfe_producao/recebidas/emp_0001/fil_001/201507/35150561186888007015550150018166021033473700.xml
Script: /home/flexsgn/www/sgn/control_xml/control_xml_apl.php (2494)
file_get_contents(/home/flexsgn/www/sgn/_lib/nfe_producao/recebidas/emp_0001/fil_001/201507/35150561186888007015550150018166021033473700.xml) [function.file-get-contents]: failed to open stream: No such file or directory
Script: /home/flexsgn/www/sgn/control_xml/control_xml_apl.php (2494)
DOMDocument::loadXML() [domdocument.loadxml]: Empty string supplied as input
Script: /home/flexsgn/www/sgn/control_xml/control_xml_apl.php (2500)
No onScriptInit crie algumas variáveis globais:
[var_empresa] = ‘emp_’. str_pad([usu_id_empresa], 4, 0, STR_PAD_LEFT);
[var_filial] = ‘fil_’. str_pad({id_filial}, 3, 0, STR_PAD_LEFT);
[var_pasta] = {tx_pasta}; //configura de acordo com seus dados
no campo upload, caminho do upload
/[var_empresa]/[var_filial]/[var_pasta]
criar subdiretório = SIM
Ao publicar mude para modo avançado
caminhos:
prod: /_lib/prod
img: /_lib/file/img
tmp: /_lib/tmp
doc: /home/flexsgn/www/sgn/_lib/nfe_producao/recebidas
certifique-se que os diretório acima existam e estão com permissão 777 (prod não precisa estar 777)
nem preciso usar modo avançado para publicar…
Jean boa tarde,
estou olhandooteu videomas nao entendi como voce faz o upload do xml para uma pasta definida por voce?
Rodrigo,
uma duvida no seu exemplo quando eu publicar e definir o diretorio padrao este sera usado para todos os documentos do meu sistema?
por que no meu caso eu tenho uma pasta definida somente para esta rotina de XML…
Me add no Skype… jean.mcp ou ZAP 033 8824-2775
Conversamos por volta das 17:30…
Vou te mostrar como faço o upload e a leitura…
preciso levar meu filho no dentista agora…
ok…pode ser umpouco mais tarde… eu vou buscar o meu tambem…
Isso mesmo, o ideal é colocar uma pasta principal e você coloca as subpastas no campo upload como citei no outro post
Estou com algumas dúvidas no seu código… foi voce mesmo quem o criou ?
ele depende do nfephp ?
depende de alguma outra biblioteca?
essa função é de qual biblioteca?
$emit_endereco = strtoupper(url_amigavel(trim($emit->getElementsByTagName(“xLgr”)->item(0)->nodeValue)));
jean,
este arquivo nao depende de nenhuma rotina ele faz a leitura do XML recebido de um fornecedor… e grava estes informações em uma tabela
$emit->getElementsByTagName(“xLgr”)->item(0)->nodeValue)
Esta éo objeto XML gerado para fazer a leitura assim voce consegue ler tudo que esta abaxio de um node…
a outra é para trocar os caracteres especiais pelos normais
e a outra e uma funcao php para transformar em maiuscula
as tabelas foram crias em base Postgres…
Obrigado por compartilhar, tenho um sistema que faz isso e está bem parecido.
Também importo tudo que está em um diretótio específico. No final da importação renomeio o arquivo xml com “-” antes do nome e faço um foreach lendo todo diretório com opendir pegando apenas o que for extensão xml e que o nome do arquivo não inicie com “-”, assim o usuário importa diversos xmls ao mesmo tempo.
Rodrigo,
obrigado…
mas pelo jeito o seu esta mlhor que o meu se tiver como compartilhar esta aplicação seria legal…
por que todos precisamos de algo muito parecido com o que eu fiz e o que voce fez…
Tenho uma pergunta pra todos aqui…nao sei como definir isso pra que fique automatico:
Na minha tabela tenho muitos campos defido como moeda e decimal, mas no SC eu tenho que ir campo a campo pra informar:
==> Tipo Moeda
==> Tamanho do Campo…
==> Casa Decimal
==> Completa com zero
Existe alguma forma de fazer isso automático… pra que todos os campos ja venham em uma definição que eu coloque?
Bom o que fiz é quase igual ao seu porém com o início para ler tudo que está no diretório:
Vou passar o resumo como fiz para não ficar confuso e cada um pode fazer de acordo com a necessidade.
$diretorioup = "C:/Program Files (x86)/NetMake/v8/wwwroot/xml";
// Verificando se a pasta é valida
if (is_dir($diretorioup))
{
//Abrindo a pasta selecionada
if ($dh = opendir($diretorioup))
{
//Percorrendo todos os arquivos da pasta selecionada
while (($file = readdir($dh)) !== false)
{
if(substr($file,0,2) != "--" && trim($file) != "." && trim($file)!=".." && (substr(trim($file),-3)=='xml' || substr(trim($file),-3)=='XML'))
{
//Obtendo caminho completo até o arquivo
$xmlUrl = $diretorioup."/".$file;
//Transformando o XML em array
$arrXml = simplexml_load_file($xmlUrl);
----------------------- daqui para baixo pego as tags assim:
$varcnpj_temp = trim($nfe->infNFe->dest->CNPJ); //outras linhas devem ser geradas igual essa com o caminho das tags
//Obtendo dos itens da NF
$docDom = new DomDocument;
$docDom->Load($xmlUrl);
$items = $docDom->getElementsByTagName('prod');
for ($i=0; $i < $items->length; $i++)
{
--------------daqui para baixo pego as tags com o DOM
$D1_CF = (isset($items->item($i)->getElementsByTagName('CFOP')->item(0)->nodeValue))? $items->item($i)->getElementsByTagName('CFOP')->item(0)->nodeValue : ""; //outras linhas devem ser geradas igual essa com o caminho das tags (dessa maneira irá percorrer todos os itens
nessa parte que faço o insert na tabela de itens
}
nessa parte faço o insert na tabela de cabeçalho
também renomeio para não pegar o arquivo novamente
rename($diretorioup."/".$file,$diretorioup."/--importado--".$file);
}
}
}
}
me refiro ao -> (url_amigavel(…
olha o retorno->
Fatal error: Call to undefined function url_amigavel() in C:\Program Files (x86)\NetMake\v8\wwwroot\scriptcase\app\MAM_Gestao_ISO_PBQPH\control_grava_nfe\control_grava_nfe_apl.php on line 2337