0

私はexec()phpで使用しようとしていますが、すべての努力が無駄になっているようです!!!

私を助けてください:私のコードの何が問題なのですか?

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

しかし、私はこのファイルを見ません。しかし、コンソールでこれを行うと問題はありません。

どんな助けでも大歓迎です。

4

4 に答える 4

1

echo exec( "pwd");のようなexecを使用して他の簡単なコマンドをチェックしましたか。それが機能しない場合は、ドメインでセーフモードがオンになっているかどうかを確認してください。はいの場合はセーフモードをオフにしてください。そのコードが実行されている場合は、フォルダのパスと権限を確認してください。

于 2012-09-13T11:04:52.547 に答える
1
  1. @Kalai が指摘したように、他の簡単なコマンドを試してexec、まったく機能しているかどうかを確認してください。

  2. sudoPHP ユーザーとしてシェルから同じ行を実行し、PHP スクリプトの外部で動作するかどうかを確認します。関連: https://serverfault.com/questions/252552/sudoers-syntax-to-run-shell-script-as-php-user

于 2012-09-13T11:09:13.043 に答える
1

コードは正しいです。PHPファイルを実行しているユーザーに、指定したフォルダーへの書き込み権限があることを確認してください。

于 2012-09-13T10:46:21.857 に答える
1

いくつかの考えられる原因:

  • ダンプのパスワードがありません:$cmd = "mysqldump -u root -pPassword my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";

  • シェルを実行すると、mysqldump がパスにありません。$cmd = "/usr/bin/mysqldump -u root -pPassword my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";

  • シェルでコードを実行する場合と同様に、Web サーバー プロセスが別のユーザーとして実行されることを忘れないでください。Web サーバーのユーザー ID が、ダンプを書き込むためのフォルダーにアクセスできることを確認してください。

于 2012-09-13T10:46:27.363 に答える