PHP den program çağırma ve çıktısını görüntüleme

Başlatan gomugomuno, 10 Eylül 2012 - 23:24:26

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

gomugomuno

Prolog ile yazdığım bir uygulamanın içerdiği fonksiyonlardan bazılarının çıktılarını php ile görüntülerken içlerinden bir fonksiyonun(f) çıktısı null olarak dönüyor. Aşağıdaki f procudure prolog çalıştırırken x=[gel] sonucu döndürürken php ile çalıştırırken output null oluyor. Neden olabilir ?
php kodu:

<?php
try
{
        
$cmd ="swipl --quiet -s /home/alikoyuncu/pl/ples.pl -g \"forall(f(X,gel),writeln(X))\" -t halt.";
$cmd2="/var/www/nlp/betik.sh";

       
exec$cmd$output$retval ); //executing the exec function.
echo $retval ;

  

if(
$output==null)
{
echo "null";
}
else
{
foreach( $output as $tampon ) { echo "$tampon .nci satir <br>"; };
}

}
catch(
Exception $ex)
{
echo "Error";

}

?>

yine betik.sh adında bir bash yazdım. Bu betiği çalıştırdığımda sonuç görüntüleniyor. Ancak php den bir türlü çıktıyı alamadım.betik.sh ve çıktı ise :
#!/bin/bash
swipl --quiet -s /home/alikoyuncu/pl/ples.pl -g "f(R, gel), writeln(R)" -t halt.

Çıktı:
X = [gel] .
Ayrıca exec kullanımında retval parametresini neyi ifade ediyor.


furkankalkan

bash script çalışıyorsa
chmod +x betik
/home/alikoyuncu/yapayzeka
olarak scripti çalıştırabiliyor olmanız lazım.
Bu durumda shell_exec() fonksiyonu size yardımcı olacaktır.
Lover
twitter.com/furkan_kalkan1

gomugomuno

Malesef shell_exec le de çalıştıramamıştım yine denedim yine çalışmadı.

6ng4n

Retval program sonunda dönen ifadeyi verir genellikle sayıdır ve program düzgün kapandıysa 0 döner. Eğer C programlamışsanız main fonksiyonu int olarak tanımlanır ve sonunda return 0; ifadesi konur işte retval bize o ifadeyi verir.

php'nin dosya çalıştırmak için gerekli izinleri sağladığından emin misiniz? php.ini'deki bir engel ya da dosyanın diğer kullanıcılarca çalıştırılabilir olması gibi. php.ini de  safe mode değişkenine göz atmanızı öneririm 5.4.0 sürümüne kadar safe mode var.

gomugomuno

#4
İzinlerle ilgili olduğunu düşünmüyorum. Çünkü aynı prolog dosyasının içinde başka bir procudurü çalıştırabiliyorken f procudürünü ya çalıştıramıyor ya da çıktıyı alamıyor.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 11 Eylül 2012 - 21:30:27

Bu arada php versionum :
php --version
PHP 5.3.10-1ubuntu3.2 with Suhosin-Patch (cli) (built: Jun 13 2012 17:19:58)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies