#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
достаточно.