移动Zpanel默认备份目录或Opendir备份目录

时间:2013-10-14 21:53:19

标签: php amazon-s3 opendir pydio izpanel

我正在编写一个脚本,将所有zpanel备份上传到我的Amazon S3帐户。如果我不使用zpanel备份并使用CronJob创建和上传由我创建的备份,它就可以工作。

我无法上传zpanel备份的原因是我无法找到使用php opendir函数到达“backups”目录的方法。

我知道备份文件夹的绝对路径。而且看起来,这个绝对路径不适用于opendir()

我用过:opendir('var/zpanel/hostdata/my_username/backups/')

它不会起作用。现在,如果我想使用相对路径,我也无法到达那里。

那么,有没有办法可以将zPanel Backups目录移动到public_html文件夹中的某个位置?或者,可以访问备份文件夹的Web URL? Ajaxplorer可以到达那里,为什么我不能?

如果没有可能,我会非常感谢有人可以教我一种创建备份的方法,就像zPanel一样(所有DB +所有内容都在public_html文件夹中)。

代码看起来像这样

require_once('S3.php');

// Enter your amazon s3 creadentials
$s3 = new S3('xxxxx', 'xxxxx');

if ($handle = opendir('var/zpanel/hostdata/my_username/backups/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            //echo "okay";
            echo $file; exit;

            if ($s3->putObjectFile("backups/$file", "my_basket", "$file", S3::ACL_PUBLIC_READ)) {
                    echo "<strong>We successfully uploaded your file.<br /></strong>";
                    //this will delete the file from your server after upload
                    //if (file_exists($baseurl . '/' . $file)) { unlink ($baseurl . '/' . $file); }
            }else{
                echo "<strong>Something went wrong while uploading your file... sorry.</strong>";
            }

        }else{
            echo "No file found here ".$root;
        }
    }
    closedir($handle);
}

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

您的代码中有拼写错误。如果要使用opendir的绝对路径,请确保它以斜杠(/)开头。所以正确的版本是:

opendir('/var/zpanel/hostdata/my_username/backups/')

如果仍然无法使其工作,请验证传递给opendir的路径确实是一个目录,并验证该目录的权限以确保您的PHP进程可以从中读取。

来自PHP doc

  

如果path不是有效目录或无法打开目录   由于权限限制或文件系统错误,opendir()返回   错误......

此外,如果您在php.ini或代码中使用任何open-basedir restrictions,请确保传递给opendir的路径不受这些限制的阻止。