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 回答