2012-05-23 71 views
0

我的PHP脚本试图将.sql文件导入postgres DB(Cent OS)。从php脚本执行proc_open时连接到pgsql时出错

从它使用的PHP脚本连接个DB:

$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已经是一个数组。 是否有与用户权限相关的问题?

在此先感谢。

+0

是否定义了STDERR和STDOUT? – dezso

回答

2

尝试删除标准错误:

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

我不知道为什么,但是这允许它在我的Debian框工作。