我想在php中使用exec()
,但看起來像我所有的努力都是徒勞的!EXEC函數不能以所需的方式工作
請幫我:我的代碼有什麼問題?
$cmd = "mysqldump -u root my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";
$res = exec($cmd , $ot , $res);
但我沒看到這個文件。但是當我在控制檯上執行此操作時,沒有任何問題。
任何幫助將不勝感激。
我想在php中使用exec()
,但看起來像我所有的努力都是徒勞的!EXEC函數不能以所需的方式工作
請幫我:我的代碼有什麼問題?
$cmd = "mysqldump -u root my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";
$res = exec($cmd , $ot , $res);
但我沒看到這個文件。但是當我在控制檯上執行此操作時,沒有任何問題。
任何幫助將不勝感激。
幾個可能的原因:
轉儲密碼丟失:$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服務器用戶標識可以訪問用於寫入轉儲的文件夾。
您是否使用exec執行過其他簡單命令,如echo exec(「pwd」);.如果這不起作用意味着請檢查您的域名是否有安全模式。如果是,請關閉安全模式。如果該代碼正在運行,請檢查文件夾的路徑和權限。
正如@Kalai指出的那樣,嘗試使用其他簡單的命令來查看exec
是否正常工作。
sudo
作爲PHP用戶,並從shell執行相同的行以查看它是否在PHP腳本之外工作。相關閱讀:https://serverfault.com/questions/252552/sudoers-syntax-to-run-shell-script-as-php-user
沒有密碼的數據庫 – Aditi
這也沒有幫助 – Aditi
嘗試寫輸出到/tmp/dump.sql,看看是否有是一個問題集權限 – JvdBerg