Ben belirli bir Unix hesabına (komut yaşıyor aynı Unix sunucu) kullanıcılara bilgi verecek bir komut dosyası yazmak gerekiyor. Parmak yoluyla passwd dosyasında veya mevcut olan şeyler çoğunlukla şey türlü.
PHP güvenli modda, yani file_get_contents()
gibi php yerleşik bir şey aracılığıyla passwd dosyasına erişemiyor. Güvenli modda çünkü Ayrıca, çeşitli komut satırı fonksiyonları devre dışı bırakılır.
Ben bir priz üzerinden bilgi almak düşündüm (ne anlama geldiğini henüz hiçbir ipucu, ama ben denemek düşündüm) ama socket_create()
bilinmeyen bir fonksiyonu olduğu ölümcül bir hata alıyorum. Ben (Bilginize, ben değiştiremem ki) php-config dosyasını çekti ve emin yeterli, yuva etkin değildir.
Ben orada iken Ancak, ben hiçbir gerçek dizin kümesi satır '--with-exec-dir='
gördüm.
Öyleyse ben EVERY komut satırı fonksiyonu çalışıyordu diğerleri hiç bir şey yaptı ise, bazı attı ki, tip hatalar "güvenli mod izin verilmez" olduğunu hatırladı. : Ben gibi bir şey koyarsanız
echo "[[";
exec("finger user");
echo "]]";
I [[]]
ile bitirmek istiyorum. Peki ya hiç hata, sadece sonuç yok.
Alt satır:
Is there something I haven't tried? (in general)
Is there a runtime config option I can set to make exec()
work?
hızlı not: ben hala hiçbir çıkışı ile özellikle passthru("pwd")
, passthru()
de çalıştı.
update
yorumlarına dayanarak, ben şu ikisi çalıştı:
$stuff = exec("pwd", $return);
echo "stuff=".$stuff."\n";
echo "return=";
print_r($return);
hangi sonuçları:
stuff=
return=Array
(
)
ve
$stuff = passthru("pwd", $return);
echo "stuff=".$stuff."\n";
echo "return=";
print_r($return);
hangi sonuçları:
stuff=
return=1
1 umutlu sesler, ancak ben henüz istediğim.
Idea
Yani bu (sormayın lütfen) Ben erişimi yok aslında zaten varolan komut bir güncelleme. CGI aracılığıyla adında bir perl senaryo. Cgi üzerinden php yapmak için bir yol (yani perl ile anlaşma ya eski kod güvenmek zorunda değilsiniz) var mı?