PHP: genera salidas de línea de comandos de varias líneas como líneas diferentes
-
06-07-2019 - |
Pregunta
PHP: genera múltiples salidas de línea de comandos como líneas diferentes. Lo siento si el título es difícil de entender. Básicamente quiero mi salida como A, en lugar de B. Actualmente se parece a B. He intentado nl2br. El script que intento ejecutar es:
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)
Solución
¿por qué estás usando nl2br si esto está en la línea de comando?
nl2br genera <br />
etiquetas para nuevas líneas ... que no tendrían sentido en la línea de comando
Editar
Dos cosas:
1 prueba
system('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);
2 Es posible que desee utilizar el exec función en lugar de sistema
por ejemplo
exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);
$scanme = implode("\n",$scanme);
exec (string $ command [, array & amp; $ output [, int & amp; $ return_var]])
Otros consejos
¿Has intentado imprimir directamente la salida del comando?
echo "Virus Scan Results:";
echo exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl);
PS. Realmente debería desinfectar la entrada de esta manera (si aún no lo está haciendo):
$furl = escapeshellarg($furl)
escapeshellarg () - Escape una cadena para usarla como un argumento de shell
Si está ejecutando en la línea de comandos, una nueva línea se representa como '\ n' o '\ r \ n' en un entorno Windows. Por lo tanto, asegúrese de que haya un \ n al final de cada línea y de que obtenga la salida que desea.
Editar:
Tom: Ups. Fijo.