Pergunta

PHP: várias saídas de linha de comando linha de saída como linhas diferentes. Desculpe se o título é difícil de entender. Basicamente, eu quero a minha saída como A, em vez de B. Atualmente, parece B. Tentei nl2br. O script que eu estou tentando executar é:

Script:

echo "Virus Scan Results:";
$scanme = system('cd /var/www/upload/files; clamscan --remove=yes '.$furl);
printf(nl2br($scanme));

A:

802931t_e_s_t.txt: OK 
----------- SCAN SUMMARY ----------- 
Known viruses: 574585 
Engine version: 0.95.1 
Scanned directories: 0 
Scanned files: 1 
Infected files: 0 
Data scanned: 0.00 MB 
Data read: 0.00 MB (ratio 0.00:1) 
Time: 2.352 sec (0 m 2 s) 
Time: 2.352 sec (0 m 2 s)

B:

802931t_e_s_t.txt: OK ----------- SCAN SUMMARY ----------- Known viruses: 574585 Engine version: 0.95.1 Scanned directories: 0 Scanned files: 1 Infected files: 0 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 2.352 sec (0 m 2 s) Time: 2.352 sec (0 m 2 s)

Foi útil?

Solução

Por que você está usando nl2br se este é na linha de comando?

nl2br saídas <br /> etiquetas para novas linhas ... que não têm nenhum significado na linha de comando

Editar

Duas coisas:

1 try

system('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);

2 Você pode querer usar o exec função em vez de sistema

por exemplo.

exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);
$scanme = implode("\n",$scanme);

exec ($ comando string [, array & $ output [, int & $ return_var]])

Outras dicas

Você tentou apenas imprimir a saída do comando diretamente?

echo "Virus Scan Results:";
echo exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl);

PS. Você realmente deve higienizar a entrada assim (se você não está fazendo isso):

$furl = escapeshellarg($furl)

escapeshellarg () - Escapa uma string para ser usado como um argumento shell

Se você estiver executando na linha de comando, uma nova linha é representado como '\ n', ou '\ r \ n' em um ambiente Windows. Portanto, verifique se há um \ n no final de cada linha, e você deve obter o resultado que deseja. Edit:
Tom: Oops. Fixo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top