我知道我做错了不包括正确的完整文件路径信息,但是经过几小时的推文后我仍然遇到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存储桶上的安全加密文件夹。
答案 0 :(得分:3)
这是关键:
sh: 2012-06-08-01-25.sql.gz: Permission denied
Chown / chgrp为具有写权限的用户/组和/或使用chmod修改权限,以便执行的用户/组可以读/写目标目录。
管道坏了,因为它无法写入文件,权限被拒绝。
答案 1 :(得分:0)
您似乎无权写入/ home / 12345 / data / backup。确保权限允许Apache运行的用户通过将文件夹的所有者更改为Apache用户并为其他人读取/执行来写入指定的目录:
chown {*APACHE-USER*} /home/12345/data/backup
chmod 755 /home/12345/data/backup