proc_open返回false,但在错误的文件不写 - 权限问题?(proc_open retur

2019-10-20 11:52发布

作为一种新的主​​题,我已经建立了一个Ubuntu 12的网络服务器,根目录是/ var / WWW /含我的剧本的index.php和一个名为“减少”包含一个二进制文件(计算机代数系统子目录,文件名也是“减少”)。

通过使用SSH,我可以以root身份登录,我的非管理员用户帐户和CD到/ var / WWW /目录下,并通过执行“./reduce/reduce”启动二进制文件。 但是,如果我这样做,从withing我的index.php文件同样的事情,这是行不通的。 下面是的index.php的基本内容(基本上取自[1]):

$descriptorspec = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","./error.log","a")
) ;

// define current working directory where files would be stored
$cwd = './' ;
// open reduce
$process = proc_open('./reduce/reduce', $descriptorspec, $pipes, $cwd) ;

echo "return value of proc_open: " . (($process === false) ? "false" : "true");

if (is_resource($process)) {

    // anatomy of $pipes: 0 => stdin, 1 => stdout, 2 => error log
    fwrite($pipes[0], 'load excalc $');
    fclose($pipes[0]) ;

    // print pipe output
    echo stream_get_contents($pipes[1]) ;

    // close pipe
    fclose($pipes[1]) ;

    // all pipes must be closed before calling proc_close. 
    // proc_close() to avoid deadlock
    proc_close($process) ;

    echo "success!";

}

奇怪的是,没有./error.log文件被创建,我得到的唯一输出是“proc_open的返回值:假”。 这是为什么? 一些权限问题? 所有者,组和其他人有执行上的index.php权限以及二进制。 有任何想法吗?

由于延

[1] http://www.molecularsciences.org/PHP/proc_open_tutorial_and_examples

Answer 1:

我找到了自己的错误:文件./error.log不存在。 手动创建之后,一切工作正常。



文章来源: proc_open returns false but does not write in error file - permissions issue?
标签: php webserver