从php脚本执行proc_open连接到pgsql时出错

时间:2012-05-23 07:38:16

标签: php postgresql centos proc-open

我的PHP脚本试图将.sql文件导入到postgres DB(Cent OS)。

从它使用的PHP脚本连接数据库:

$sCMD = 'psql -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database'];
$aDescriptors = array(
    0 => array('pipe', 'r'),
    1 => STDOUT, 
    2 => STDERR
);
$ahPipes = null;
$hProcess = @proc_open($sCMD, $aDescriptors, $ahPipes);
if (!is_resource($hProcess)) fail('unable to start pgsql');

它显示错误:“无法启动pgsql”。

当我从proc_open中删除@符号时,它会显示错误消息....

" proc_open() [<a href='function.proc-open'>function.proc-open</a>]: Descriptor item must be either an array or a File-Handle in <b>/home/nominati/public_html/Nominatim/utils/setup.php"

虽然$ aDescriptors已经是一个数组。 是否与用户权限相关的问题?

提前致谢。

1 个答案:

答案 0 :(得分:2)

尝试删除stderr:

$aDescriptors = array(
    0 => array('pipe', 'r'),
    1 => STDOUT
//    2 => STDERR
);

我不知道为什么,但这允许它在我的Debian盒子上工作。