PHP kabuk komut yürütülürken hata

2 Cevap php

Ben üzerinden bir kabuk komutu çalıştırmak çalışıyorum:

<php echo shell_execute("tac /home/kusmuk/access-logs/kusmuk.org"); ?>

Ama herhangi bir çıktı vermez. Bunun nedeni ne olabilir?

Bu işe yaramazsa rağmen beklendiği gibi, aşağıdaki satırları çalışır:

<php echo shell_execute("ls -al triogrup.com"); ?>
//outputs: -rw-r----- 2 root kusmuk 28640 Aug 19 17:44 kusmuk.org

<php echo shell_execute("pwd"); ?>
//outputs: /home/kusmuk/public_html

2 Cevap

Greg'in ucu iyidir. Muhtemelen izinleri sorunu çeşit ile bitireceğiz.

Ancak, ben PHP mümkünse sistem çağrıları başlatılması önlemek için iyi bir fikir olduğunu söyleyebilirim. Ayıklama bir ağrı olabilir ve parametreleri geçirerek eğer bu güvenlik açıklarından yapmak çok kolaydır. Yerli PHP kodu işlemek için çok daha kolaydır.

'Tac' PHP içinde ince bunu yapmak mümkün olmalıdır yeterince basittir. Örneğin tek seferde tüm dosyayı dışarı tükürüyor trival sürümü:

$log= file_get_contents('/home/kusmuk/access-logs/kusmuk.org');
echo implode("\n", array_reverse(explode("\n", $log)));

Bu deneyin:

echo shell_exec("tac /home/kusmuk/access-logs/kusmuk.org 2>&1");

Bu çalışma değil neden bu kadar umarım görmelisiniz Stdout'a stderr'yi yönlendirecektir