Bir komutu çalıştırmak ve bir id geçmek Kısa PHP sayfası?

2 Cevap php

Ben, bazı karmaşık süreçleri başladı ve stdout üzerine bir RTF dosyası koyar, bir kimlik verilen bir komut dosyası var. Örneğin, ID 27 de işaret etmek foo.exe 27 gibi bir şey diyebilirsiniz.

Şimdi hangi kısa bir PHP sayfası yazmak istiyorum:

  • GET id parametresini kabul eder
  • parametre bir tamsayı olup olmadığını kontrol eder
  • aramalar shell_exec(...) senaryo üzerinde (biz $PATH var üstlenecek edeceğiz)
  • Onlar bir bağlantı dosyayı tıkladım istiyorum sadece sanki her zamanki tarayıcı özgü indir istemi popping script çıkışı, yanıt

Bu kolayca yapılabilir?

2 Cevap

Bu oldukça basit olmalıdır. Sadece ne gerek, emin script garip veri ekleme değil yapmak için herhangi bir tatili önlemek için, ve hatalar var ve onları görmek mümkün değil önlemek için STDOUT STDERR yönlendirmek.

<?php

// configuration
$scriptName = 'foo.exe';

// sets the header to send raw data to the browser
header('Content-Type: text/plain');    

// disables the timeout for your script
set_time_limit(0);

// if the input is not an integer
if (! is_integer($_GET['id']))
{
        // throw to forbidden page
        header("HTTP/1.0 403 Forbidden");
        die();
}

// parameter to use as parameter of 
// the command to call
$parameterId = (int) $_GET['id'];

// preparing the command and redirecting STDERR to STDOUT (the browser)
$command = "$scriptName $parameterId 2>&1";

// executing command and outputing it
print(shell_exec($command));

Umarım yardımcı olur!

Sadece çalıştırmak için komut dosyası için yeterli zaman bırakın (veya set) emin olun - bu muhtemelen uzun zaman alabilir ve isteği zaman aşımına neden olabilir.

Ayrıca, you) (exec koymak girdiyi emin olun.

Ama evet, hepsi yapılabilir.