بي أتش بي:إخراج مخرجات سطر أوامر متعددة كخطوط مختلفة

StackOverflow https://stackoverflow.com/questions/1011211

سؤال

بي أتش بي:إخراج مخرجات سطر أوامر متعددة كخطوط مختلفة.آسف إذا كان العنوان صعب الفهم.في الأساس، أريد أن يكون مخرجاتي مثل A، بدلاً من B.يبدو حاليًا مثل B.لقد حاولت nl2br.البرنامج النصي الذي أحاول تشغيله هو:

النصي:

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

أ:

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)

ب:

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)

هل كانت مفيدة؟

المحلول

لماذا تستخدم nl2br إذا كان هذا موجودًا في سطر الأوامر؟

مخرجات nl2br <br /> علامات للخطوط الجديدة...والتي لن يكون لها أي معنى في سطر الأوامر

يحرر

شيئان:

1 يحاول

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

2 قد ترغب في استخدام com.exec وظيفة بدلا من النظام

على سبيل المثال

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

exec (سلسلة $command [، array &$output [، int &$return_var ]])

نصائح أخرى

ولقد حاولت فقط طباعة إخراج الأمر مباشرة؟

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

وPS. هل حقا ينبغي أن تطهير المدخلات مثل ذلك (إذا كنت لا تفعل ذلك بالفعل):

$furl = escapeshellarg($furl)

escapeshellarg () - الهروب سلسلة لاستخدامها حجة قذيفة

إذا كنت تقوم بتشغيل على سطر الأوامر، يتم تمثيل سطر جديد باسم '\ ن'، أو '\ ص \ ن' في بيئة ويندوز. لذا تأكد من وجود \ ن في نهاية كل سطر، ويجب عليك الحصول على الإخراج الذي تريد. تحرير:
توم: عذرا. الثابتة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top