Bir kabuk komutunu çalıştırmak ve çıkışını döndürmek için bir php betiği oluşturmak istiyorum. Sunucu özel bir anahtar gerektirir. İlk önce bunu test etmeye karar verdiğimde şunu yarattım:Bir kabuk komutunu bir php komut dosyasından yürütme
<?php
$command = "ls";
$output = shell_exec($command);
echo "<pre>$output</pre>";
?>
Bu işe yaradı. Ben komuta $command
değiştiği Ama gerçekten çalıştırmak istedim:
You need root privileges to run this script
Benim tahminim ben sudo
kullanmak gerekir ise:
$command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig";
bana bu çıktıyı verdi. Tabii ki bu pem dosyasını sunucuda bir yere koymayı gerektirir. Bunu yaptığımı farz edersem, $command
tam olarak ne olmalı? shell_exec()
, exec()
, system()
veya başka bir şey kullanmalı mıyım?
* Ayrıca * kullanıcı hesabının yetkilendirilmesi gereken bir husus olsa da bu, PHP işlevinin kullanılması için en iyi seçenek olmadığı anlamına gelmez. Hangisi en iyi? –
@Kenneth Vogt 'exec', gereksiz yere kabuğu içermediğinden ve sonucu döndürmediğinden ya da sonucu doğrudan çıkaran" passthru ", ancak orijinal kodun bazı değişikliklerini gerektireceği için. – phihag