Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

iRCC

Ler arquivo de upload

Recommended Posts

Boa tarde a todos, acho que essa pergunta vai parecer um pouco estranha a todos mas vamo lá.

Tenho um sisteme de upload de arquivos que não está funcionando como deveria, eu faço o upload de um arquivo e movo ele para uma pasta da minha aplicação, até aqui td certo, o problema é que após fazer o upload eu preciso ler oq tem dentro desse arquivo (pode ser xml, txt...) só que ele simplesmente não le o arquivo....

Fiz vários teste e um deles foi o seguinte: rodei o script que vai ler o arquivo de upload só que no lugar do arquivo de upload coloquei um fixo (dentro da mesma pasta e com o caminho do arquivo), li o arquivo e funcionou perfeitamente.

O servidor que estou usando é o IIS, não sei se pode ter algo a ver... sempre usei apache e em outros lugares onde uso a mesma aplicação de upload e leitura de arquivo tudo funciona corretamente....

Alguém já teve algum problema parecido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se muda alguma coisa, mas o upload é feito por linha de comando

pclose(popen('start /B php -c...

o arquivo chega a pasta e o script php que deveira ler ele também é chamado, chega na hora de ler o que tem "dentro" do arquivo não está acontecendo nada

Compartilhar este post


Link para o post
Compartilhar em outros sites

então o código de linha de comando é este

pclose(popen('start /B php -c c:/Windows site/importador.php '.$file, 'r'));

 

para ler o xml uso o simplexml_load_file.

 

Fiz alguns outros testes em outros diretorios e acontece a mesma coisa, leio o arquivo e quando vou escrever, nada acontece... apenas é criado o arquivo e nada dentro

Compartilhar este post


Link para o post
Compartilhar em outros sites

então o código de linha de comando é este

pclose(popen('start /B php -c c:/Windows site/importador.php '.$file, 'r'));

 

para ler o xml uso o simplexml_load_file.

 

Fiz alguns outros testes em outros diretorios e acontece a mesma coisa, leio o arquivo e quando vou escrever, nada acontece... apenas é criado o arquivo e nada dentro

 

posta o codigo...posta o codigo...posta o codigo todo...kd o do upload...da onde saiu pclose e popen...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

upload

if (isset($_FILES['file'])){

		$nome = str_replace("\\","",$_FILES['file']['name']);
		$file = 'c:/temp/' . $nome;

		if (@move_uploaded_file($_FILES['file']['tmp_name'], $file)) {

			$conteudo = file_get_contents($file);
			// Retorna o md5 indicando se o arquivo foi recebido ok ou não
			echo result(0,md5($conteudo));
			flush();

			// Somente importa se não for sábado nem domingo
				// Executa a importação
				background_import($nome);


		} else {
			echo result(3, 'Erro ao tentar copiar o arquivo para seu destino.');
		}

 

function background_import

function background_import($file) {
global $conexao;
$pid = -1; // Simula um número de processo	

// Se existe a função, abre um novo processo
if (function_exists('pcntl_fork')) $pid = pcntl_fork();

if($pid == -1) { // Se deu erro ao abrir o processo ou não existe a função, tenta executar a importação via linha de comando
	// Se não contiver "win" no sistema operacional, executa um comando linux
	if (strpos(strtolower(PHP_OS),"win") === false) {
		exec('nohup php -c ' . getPathIni() . ' ' . $xml_config->config->caminho_fontes . '/importador/importador.php '.$file.' > /dev/null &');

	} else { // Se contiver "win", executa um comando windows                            
		pclose(popen('start /B php -c ' . getPathIni() . ' ' . 'site/importador/importador.php '.$file, 'r'));


	}

} elseif ($pid == 0) { // Se executou o processo filho, chama o importador nesse processo
	include($xml_config->config->caminho_fontes . '/importador/importador.php');
}	

}

treco do importador que interessa

if (!isset($file) && @!$file = $argv[1]) {
$fp = fopen('log_'.date("dmY").'.log',"w+");
fwrite($fp, "Nome do arquivo XML no recebido.");
fclose($fp);
exit;
}

// Abre o arquivo de dados

$fp = fopen('C:/tmp/'.$file,'r');
$texto = fread($fp,filesize($fp));
fclose($fp);


$fp = fopen('C:/tmp/ler.txt','w+');
fwrite($fp,$texto.'aaaa');
fclose($fp);
exit;

 

ali coloquei um 'aaaaa' só para ter certeza que o script consegue escrever ago dentro do ler.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

sera q eh aki?

 

upload

 

$file = 'c:/temp/' . $nome;

importador

 

$fp = fopen('C:/tmp/'.$file,'r');

 

perceba q setou diretorios diferentes, e pior mandou para o temporario, nao use o temporario, nunca se sabe quando o SO vai limpar akele diretorio...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.