0

私が間違っているのは、正しい完全なファイル パス情報が含まれていないことですが、何時間も微調整した後でもsh: 2012-06-08-01-25.sql.gz: Permission denied mysqldump: Got errno 32 on writeエラーが発生します。これが私のスクリプトです:

$dbhost = "DATABASE HOST";
$dbuser = "DATABSE USER";
$dbpass = 'PASSWORD';
$dbname = "DATABASE NAME";

$backupfile = '/home/12345/data/backup/'.date("Y-m-dTH:i") . '.sql.gz';
system("mysqldump -h $dbhost -u $dbuser --password='$dbpass' $dbname | gzip > $backupfile");

$backupfile = $backupfile;

# To S3
require('/home/12345/data/backup/S3.php');  

if (!defined('awsAccessKey')) define('awsAccessKey', 'ACCESS KEY');  
if (!defined('awsSecretKey')) define('awsSecretKey', 'SECRET KEY');  

$s3 = new S3(awsAccessKey, awsSecretKey);

if (!$s3->putObjectFile($backupfile, "BUCKET", 'db-backup/'.$backupfile, S3::ACL_PRIVATE)) {  
    die("104");
}
system("rm $backupfile");

スクリプトは、gzip と mysqldump を使用してデータベースを圧縮し、この ZIP を S3 バケットの安全で暗号化されたフォルダーにアップロードします。

4

2 に答える 2

3

これが鍵です:

sh: 2012-06-08-01-25.sql.gz: Permission denied

書き込み権限を持つユーザー/グループにchown/chgrpするか、chmodで権限を変更して、実行中のユーザー/グループが宛先ディレクトリに対して読み取り/書き込みできるようにします。

ファイルを書き込めないためパイプが壊れており、許可が拒否されています。

于 2012-06-08T01:12:47.817 に答える
0

/home/12345/data/backup への書き込み権限がないようです。フォルダーの所有者を Apache ユーザーに変更し、それ以外のユーザーに対しては読み取り/実行を行うことで、Apache が実行されているユーザーが指定されたディレクトリへの書き込みを許可されていることを確認します。

chown {*APACHE-USER*} /home/12345/data/backup
chmod 755 /home/12345/data/backup
于 2012-06-08T01:10:30.227 に答える