Javascript veya PHP içinde Linux komut

4 Cevap php

Ben PHP veya JavaScript ya witin yürütmek için gereken bir linux komut satırı var (PHP tercih.)

The command is

keygen AB3554C1D1971DB7 \pc_code 365

Ancak, kullanıcı oluşturulan PC Kodunu girer $ pccode gibi bir dize ile \pc_code yerine istiyorum. Bu yasal bir proje için, ama bana assitance verme programının yaratıcıları ile bir sorunu yaşıyor.

Lütfen yardım edin!

4 Cevap

Bu program, kötü yazılmış ve yerine stdout stderr'e kendi bilgi verir olduğunu olabilir. Ya onu başarısız ve (düzgün) stderr'e hata mesajı yazdırarak olduğunu olabilir. Her iki durumda da, shell_exec stderr'yi yakalamak değildir. Ancak, you should be able to capture stderr by adding "2>&1 "senin komutun sonuna , yani:

$result = shell_exec('keygen AB3554C1D1971DB7 \pc_code 365 2>&1');
echo '<pre>'.htmlspecialchars($result).'</pre>';

Edit: Süreklilik aşkına, ne sorunun altında başka bir cevaba bir açıklamada belirtildiği şey oldu sabit:

Belki de çıplak ters eğik çizgi sevmez? Denemek "\\pc_code" olabilir

Sen kullanabilirsiniz shell_exec():

$cmd = sprintf("keygen AB3554C1D1971DB7 %s 365", 
               escapeshellarg($pccode));
$result = shell_exec($cmd);

Eğer dış komutları yürütmek zaman komut enjeksiyonu önlemek için son derece dikkatli olmak gerekir. Bunu kullanarak bu önleyebilirsiniz escapeshellarg().

exec bakabilirsiniz

Linux komut yürüttükten JavaScript gerçekten mümkün değil (ne de olmalıdır.) Eğer bir müşterinin web tarayıcısında çalıştırılan JavaScript bahsediyorsan varsayarsak, kötü niyetli komut satırı erişimi güvende tutmak olacak hiçbir güvenlik modeli olmazdı. PHP farklı bir hikaye.