Ошибка при выполнении proc_open из сценария php для подключения к pgsql

Мой 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 ответ

Попробуйте удалить stderr:

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

Я не знаю почему, но это позволило работать на моей коробке Debian.

Другие вопросы по тегам