Roc*_*Gom 5 php linux bash swi-prolog
我正在尝试在PHP中运行bash脚本但无法运行它.php -v
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
Run Code Online (Sandbox Code Playgroud)
Ubuntu 12.04 LTS 64位.
我的PHP代码:
$cmd='/www/var/pl/bash.sh';
$retval =-1;
exec( $cmd, $output ); //executing the exec function.
foreach( $output as $tmp )
{
echo "$tmp <br>";
};
Run Code Online (Sandbox Code Playgroud)
bash.sh:
#!/bin/bash
swipl --quiet -s /var/www/pl/ples.pl -g "f(R, gel), writeln(R),open('/var/www/pl/in.txt',write, Stream),
write(Stream, (R)),
nl(Stream),
close(Stream)" -t halt.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我可以在Linux终端上运行bash.sh.
在终端中运行脚本时,您将在登录的帐户下执行该脚本.你有一个shell设置与搜索路径等.
当php执行脚本时,它没有shell设置,并在webserver用户帐户下运行.执行时:
swipl,这是不够的,它应该是/path/to/swipl很可能是路径或权限问题;例如,Web 应用程序运行的用户不知道该swipl程序在哪里。
在 'ing之前将 2>&1 添加到命令行exec,以便它告诉您问题是什么。或者您可以在 Web 服务器错误日志(或 PHP 错误日志;检查 php.ini 中的路径和设置)中找到 stderr 输出。
| 归档时间: |
|
| 查看次数: |
2815 次 |
| 最近记录: |