2011-05-30 43 views
1

調用pg_dump,當我需要通過的pg_dump做傾倒在PHP所以我有這樣的函數:空輸出下的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中創建轉儲?

回答

3

如果你在標準的web服務器設置下運行PHP,那麼它將無法工作,因爲它將在web服務器用戶的上下文中運行,所以sudo不會讓你改變那樣的用戶上下文。

如果這是一個腳本,你將不得不調整sudo來運行pg_dump命令,用戶密碼的須藤權限,否則你的sudo命令會提示輸入密碼,並破壞你的自動化過程。

+0

謝謝!我認爲爲'psql'添加'nopasswd'權限就足夠了。 – k102 2011-05-30 11:32:12