2012-09-13 33 views
0

我想在php中使用exec(),但看起來像我所有的努力都是徒勞的!EXEC函數不能以所需的方式工作

請幫我:我的代碼有什麼問題?

$cmd = "mysqldump -u root my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";    
$res = exec($cmd , $ot , $res); 

但我沒看到這個文件。但是當我在控制檯上執行此操作時,沒有任何問題。

任何幫助將不勝感激。

回答

1

幾個可能的原因:

  • 轉儲密碼丟失:$cmd = "mysqldump -u root -pPassword my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";

  • mysqldump的是不在路徑,當你運行一個shell:$cmd = "/usr/bin/mysqldump -u root -pPassword my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";

  • 不要忘記webserver進程作爲另一個用戶運行,就像在shell中運行代碼一樣。確保Web服務器用戶標識可以訪問用於寫入轉儲的文件夾。

+0

沒有密碼的數據庫 – Aditi

+0

這也沒有幫助 – Aditi

+0

嘗試寫輸出到/tmp/dump.sql,看看是否有是一個問題集權限 – JvdBerg

1

該代碼是正確的。確保正在執行PHP文件的用戶有權寫入指定的文件夾。

+0

權限已經給用戶 – Aditi

1

您是否使用exec執行過其他簡單命令,如echo exec(「pwd」);.如果這不起作用意味着請檢查您的域名是否有安全模式。如果是,請關閉安全模式。如果該代碼正在運行,請檢查文件夾的路徑和權限。