Команда PHP exec() не работает должным образомPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Команда PHP exec() не работает должным образом

Сообщение Anonymous »

У меня есть процесс PHP (обобщенный для резервного копирования), который создает, а затем выполняет команду для резервного копирования в различных каталогах. Конечный результат этой команды при выполнении для домашнего каталога конкретного пользователя:
zip --symlinks --recurse-paths --quiet /usr/local/backups/home_dennis-daily-2024-09-19.zip '/home/dennis' -x '.DS_Store' -x '._*' -x '/home/delovelady/.vscode-server/bin/*/node/*' -x '/home/delovelady/.vscode-server/data/*' 2>&1

Эта команда отображается в журнале непосредственно перед выполнением:
$lov->writeLogLine( [ 'Executing command: %s', $backupCmd ] ) ;
$rc = 0 ;
$OK = exec($backupCmd, $output, $rc) ;

При этом создается огромный файл, содержащий все элементы vscode, которые мы пытались пропустить с помощью переключателей -x. Но если я скопирую эту самую команду из журнала, а затем выполню ее как есть в терминале, результат будет именно тем, что я хотел (файлы ниже указанных каталогов vscode опускаются, а файл .zip становится на 300 МБ меньше).
Это заставило меня поверить, что PHP (фактически) удаляет апострофы из команды. Итак, я сделал этот небольшой тестовый скрипт:


Подробнее здесь: https://stackoverflow.com/questions/790 ... s-expected
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»