以前の Stackoverflow の投稿で、非常に単純で mysqldump コマンドを実行するコードを見つけました。このコマンドをシェルで root として問題なく実行できます。しかし、PHP を使用すると、バックアップ ファイルが作成されません。
<?php
$backupFile = "/var/www/html/mysql-bak/my_dbname-".date("Y-m-d-H-i-s").".sql";
$command = "mysqldump --opt -u root -pmypassword my_dbname > $backupFile";
system($command);
?>
Apache サービスがファイルを書き込もうとすると、パーミッションの問題に違いありませんよね? ディレクトリ /var/www/html/mysql-bak/ を作成し、chgrp と chown を実行して、所有ユーザー「mysql」と所有グループ「mysql」を作成しました。必死になって、ユーザー「apache」をグループ「mysql」のメンバーとして追加しましたが、それでも修正されませんでした。