Переместить каталог резервных копий Zpanel по умолчанию или каталог резервных копий Opendir

Я работаю над сценарием, который будет загружать все резервные копии zpanel в мою учетную запись Amazon S3. Это работает, если я не использую резервные копии zpanel и создаю и загружаю резервные копии, созданные мной с помощью CronJob.

Причина, по которой я не могу загрузить резервную копию zpanel, заключается в том, что я не могу найти способ добраться до каталога "backups" с помощью функции php opendir.

Я знаю абсолютный путь к папке резервных копий, хотя. И, как кажется, этот абсолютный путь не будет работать с opendir()

Я использовал: opendir('var/zpanel/hostdata/my_username/backups/')

И это не сработает. Теперь, если я хочу использовать относительный путь, я тоже не могу туда добраться.

Итак, есть ли способ, которым я могу переместить каталог резервных копий zPanel где-нибудь в папке public_html? Или веб-URL, который может попасть в папку резервных копий? Ajaxplorer может добраться туда, почему я не могу?

Если это невозможно, я буду очень признателен, если кто-нибудь сможет научить меня создавать резервные копии в точности как zPanel (все БД + все, что находится в папке 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 ответ

У вас есть опечатка в вашем коде. Если вы хотите использовать абсолютный путь с opendir убедитесь, что он начинается с косой черты (/). Таким образом, правильная версия будет:

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

Если вы все еще не можете заставить это работать, убедитесь, что путь, по которому вы переходите opendir это действительно каталог, а также проверьте права доступа к этому каталогу, чтобы убедиться, что ваш процесс PHP может читать из него.

Из документа PHP,

Если путь не является допустимым каталогом или каталог не может быть открыт из-за ограничений разрешений или ошибок файловой системы, opendir() возвращает FALSE ...

Кроме того, если вы используете какие - либо ограничения open-basedir в вашем php.ini или в вашем коде, убедитесь, что путь, по которому вы переходите opendir не блокируется этими ограничениями.

Другие вопросы по тегам