Я создал скрипт, который копирует измененные файлы с сайта разработки на работающий сайт, который работает безупречно.
Теперь я пытаюсь зарегистрировать, какие файлы были изменены, а затем добавить этот список в таблицу БД, которая отслеживает изменения.
Я использую shell_exec
для запуска rsync для копии, а затем пытаюсь обрезать вывод и добавить \n
для форматирования.
Вывод выглядит примерно так: «отправка добавочного списка файлов, portMaint.php отправил 27 659 байт, получил 81 байт, 55 480,00 байт/сек, общий размер — 101 582 367, ускорение — 3 661,95».
Вот код, который у меня есть:
$command = "sudo -S rsync -av ".$exclude." ".$source." ".$dest." --delete 2>&1";
// --- Issue command and check for errors.
$exErrors = shell_exec($command);
if (stripos($exErrors, "error:") !== false || stripos($exErrors, "[sudo]")) {
$error = "Uh-OH, we have a problem! Don't Panic!";
$errors = $exErrors;
include("head.php");
include("template_".$currentPage.".html");
include("foot.php");
exit();
}else{
$filesCopied = $exErrors;
$filesCopied = substr($filesCopied, 0, strrpos($filesCopied, " sent "));
$filesCopied = preg_replace("/\s+/", "\n", $filesCopied);
}
Это не работает. $filesCopied
оказывается пустым.
Если я закомментирую $filesCopied = substr($filesCopied, 0, strrpos($filesCopied, " sent "));
, я получу весь вывод без форматирования.
Что я делаю неправильно? Мне просто нужны файлы, которые были изменены 1 в строке.
Спасибо.