我正在编写一个脚本,该脚本会将所有zpanel备份上传到我的Amazon S3帐户。如果我不使用zpanel备份并创建和上传我使用CronJob创建的备份,则可以正常工作。
我无法上传zpanel备份的原因是我无法找到使用php opendir函数访问"备份"目录的方法。
我知道备份文件夹的绝对路径。而且看起来,这条绝对路径不适用于opendir()
我用过:opendir('var/zpanel/hostdata/my_username/backups/')
而且它行不通。现在,如果我想使用相对路径,我也无法到达那里。
那么,有没有办法将zPanel备份目录移动到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);
}
提前非常感谢!
你的代码中有拼写错误。如果要将绝对路径与 opendir
一起使用,请确保它以斜杠 (/
) 开头。所以正确的版本是:
opendir('/var/zpanel/hostdata/my_username/backups/')
如果仍然无法使其正常工作,请验证传递给opendir
的路径确实是一个目录,并验证该目录的权限以确保您的 PHP 进程可以从中读取。
从 PHP 文档中,
如果路径不是有效目录或无法打开该目录 由于权限限制或文件系统错误,OpenDir() 返回 假。。。
此外,如果在php.ini
或代码中使用任何 open-basedir 限制,请确保传递给 opendir
的路径未被这些限制阻止。