2012-05-23 73 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框工作。