我的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已经是一个数组。 是否与用户权限相关的问题?
提前致谢。
答案 0 :(得分:2)
尝试删除stderr:
$aDescriptors = array(
0 => array('pipe', 'r'),
1 => STDOUT
// 2 => STDERR
);
我不知道为什么,但这允许它在我的Debian盒子上工作。