PHP exec () ve sistem () işlevleri her zaman IIS return false;

2 Cevap php

Ben PHP exec bir toplu iş dosyasını çalıştırmak için () veya sistem () (veya herhangi bir diğer benzeri fonksiyon) kullanmaya çalışıyorum, ama bu hiçbir şey geri almak için görünmüyor olabilir.

Gördüğüm basit örnek hiçbir şey verir ki, bu:

<?php
    echo system('dir');
?>

PHP yüklü komut dosyası IIS üzerinde bir Windows XP makinede çalışıyor ve ben de Windows 2003 Server / IIS çalıştıran benim hosting hesabı üzerinde denedim.

Herkes bu çalışma almak, ya da ben sorun giderme için kullanabileceğiniz herhangi komutları sağlamak için yapmanız gereken ne önerebilirsiniz?

Alkış,

Tom

Edit: second example

Pavun_cool cevabı dayanarak ben aşağıdaki çalıştı:

<?php
    $last_line = system('dir', $retval);
    echo 'last_line '.$last_line.'<br/> retval '.$retval;
?>

Çıktısı:

last_line
retval -1

Edit: third example

Manos Dilaverakis dayanarak ben aşağıdaki kod çalıştı

<?php
exec('dir', $response);
foreach($response as $line) {
    echo $line . "<br>";
}
?>

Çıktısı:

<br>

Yani boş bir satır tarayıcıda görüntülendiğinde.

Ayrıca php.ini bakarak, (muhtemelen bu işlevleri devre dışı olabilir) aşağıdaki satırı boş:

disable_functions =

Herkes başka bir öneriniz ya da deneyebilirsiniz başka bir şey var mı?

2 Cevap

Dönüş değerlerini almak için, sistem fonksiyonu için ikinci argüman iletilmesi gerekir.

$last_line = system('ls', $retval);

İşte $retval ls yürütme dönüş değerine sahip olacaktır.

Bu işe yaramazsa, burada, daha sonra exec muhtemelen size PHP yapılandırmasını değiştirmek gerekecek demektir, php.ini devre dışı

<?php
exec('dir', $response);
foreach($response as $line) {
    echo $line . "<br>";
}
?>