我有一个Prolog代码data.pl,我需要在PHP文件中使用它。通过我在互联网上的搜索,我发现了这个:
exec('start <path/to/prolog> -f data.pl -g elem(a,[a,b])', $output)我已经用Shell-exec()和system()命令尝试过了,但它们也不起作用。我还尝试更正目录路径,并将data.pl移动到path/to/prolog文件夹,但仍然没有结果。有人能在这个问题上帮我吗?
发布于 2011-02-23 20:08:18
将web应用程序与Prolog应用程序集成的更好方法是使用SWI的内置HTTP服务器。它将使您不必加载Prolog并在每次调用时解析输入文件。它还提供了更像web的集成,因为您可以使用AJAX和类似的方法。
如果您坚持从PHP运行时环境调用Prolog可执行文件本身,则必须提供更多细节。您的PHP日志中会出现哪些错误?你检查过文件权限了吗?你有没有尝试给出Prolog可执行文件和数据文件的完整路径?只是说“它不工作”是一种声明,而不是一个问题。
最后,为了提高效率,建议将Prolog数据文件编译为快速加载格式(QLF),而不是在每次请求时重新解析它。
发布于 2011-02-23 21:37:18
使用'start‘命令将强制程序在新的会话中运行,并且IO管道不会被激活。我的DOS体验有点生疏--但在这句话中,有很多东西会被解释为Unix机器上的shell metachar。假设Prolog解释器使用STDIO,则命令应为:
$cmd='C:\\Program Files\\pl\\bin\\plwin -f data.pl -g elem(a,[a,b])';
// $cmd=escapeshellcmd($cmd); // in case you're still having problems
exec($cmd, $output);https://stackoverflow.com/questions/5089928
复制相似问题