пустой вывод при вызове pg_dump в php-коде

#php #postgresql #pg-dump

#php #postgresql #pg-дамп

Вопрос:

Мне нужно создать дамп через pg_dump в php, поэтому у меня есть функция, подобная этой:

 function fnDump()
{
    exec("/usr/local/bin/sudo -u pg_user /usr/local/bin/pg_dump mon_alarm > /usr/home/user/monitor_test/renew_db/mon_alarm.sql",$out);
    var_dump($out);
}
  

Проблема в том, что mon_alarm.sql файл пуст.
Но когда я выполняю эту команду через командную строку, все работает нормально.
Что я должен изменить, чтобы создать дамп в php?

Ответ №1:

Если вы используете PHP со стандартной настройкой веб-сервера, это не сработает, потому что он будет выполняться в контексте пользователя веб-сервера, поэтому sudo не позволит вам изменять пользовательский контекст подобным образом.

Если это скрипт, вам придется настроить sudo так, чтобы он выполнял только pg_dump команду с правами доступа sudo без пароля для пользователя, в противном случае ваша команда sudo запросит пароль и разрушит ваш автоматизированный процесс.

Комментарии:

1. Спасибо! я думал, что добавления nopasswd разрешения для psql достаточно.