2010-06-16 4 views
2

Je suis en train d'invoquer SWI-Prolog à partir d'un script php comme:invocation SWI-Prolog de php

exec("start plwin.exe -f C:\\path\\load.pl -g run_from_file.", $os1); 
print_r($os1); 

Je peux voir que la fenêtre de Prolog s'ouvre et respecte le fichier, mais quitte immédiatement l'affichage d'une sortie statut comme 1. Je suis sûr qu'il n'exécute pas le prédicat que je veux exécuter.

Y a-t-il un autre appel à prolog avec les paramètres appropriés et garder la fenêtre open sans quitter automatiquement? MISE À JOUR: J'ai configuré les variables d'environnement système sur le chemin d'installation de prolog.

+0

est-ce que run_from_file est vraiment supposé avoir un point à la fin? –

+0

J'ai supposé puisque nous utilisons normalement 'dot' pour terminer l'instruction dans prolog? – JPro

+1

Je suppose que vous utilisez PHP CLI? Avez-vous essayé d'ajouter le troisième paramètre exec pour capturer le statut de sortie? Howabout n'exécute pas la commande start pour s'exécuter dans une nouvelle fenêtre mais fait plutôt plwin.exe? En outre, pour attendre l'entrée de l'utilisateur dans le script php, maintenant ainsi la fenêtre ouverte pour voir toutes les sorties, utilisez 'fgets (STDIN);' –

Répondre

0

J'ai aussi utilisé le tutoriel de http://www.j-paine.org/dobbs/prolog_from_php.html, et il me donnait un écran vide. Pour exécuter le fichier Prolog sur un serveur où swipl est utilisé, j'ai changé pour:

$cmd = swipl -f /path/to/myfile.pl -g test,halt -t 'halt(1)'; 

J'ai trouvé toutes les informations nécessaires ici: http://www.swi-prolog.org/pldoc/man?section=cmdline, dans la section 2.4.4

Le reste du fichier php est le même que dans l'exemple, et maintenant il exécute vraiment le test de myfile.pl.

Peut-être que son peut aider quelqu'un.

Questions connexes