Question

PHP: Affiche plusieurs sorties de ligne de commande en tant que lignes différentes. Désolé si le titre est difficile à comprendre. En gros, je veux que ma sortie ressemble à A, au lieu de B. Elle ressemble actuellement à B. J'ai essayé nl2br. Le script que j'essaie de lancer est le suivant:

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)

Était-ce utile?

La solution

pourquoi utilisez-vous nl2br si cela se trouve sur la ligne de commande?

nl2br génère <br /> des balises pour les nouvelles lignes ... qui n'auraient aucune signification en ligne de commande

Modifier

Deux choses:

1 essayer

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

2 Vous pouvez utiliser le exec fonction au lieu du système

par exemple

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

exec (chaîne $ command [, tableau & amp; $ sortie [, int & amp; $ variable_retour]])

Autres conseils

Avez-vous essayé d’imprimer directement le résultat de la commande?

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

PS. Vous devriez vraiment purifier l'entrée comme suit (si vous ne le faites pas déjà):

$furl = escapeshellarg($furl)

escapeshellarg () - Échappe une chaîne à utiliser comme un argument de shell

Si vous utilisez la ligne de commande, une nouvelle ligne est représentée par '\ n' ou '\ r \ n' dans un environnement Windows. Assurez-vous donc qu'il y a un \ n à la fin de chaque ligne et que vous devriez obtenir le résultat souhaité. Edit:
Tom: Oups. Fixe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top