Как получить результат выполнения Sftp с помощью оболочки php exec из crontab?

Когда я выполняю скрипт из терминала, он печатает результат sftp.
Если скрипт php выполняется из cron, он ничего не печатает, $ result будет пустым.

Crontab:

23 12 * * *  php script.php >> /tmp/logs.log

Сценарий:

<?php
$command = 'lftp -u user,Password sftp://domain.com -e "set ftp:passive-mode off; set ftp:auto-passive-mode on; put -O /path/tests toTransfer/file.zip; bye;"';
$result = shell_exec($command);
echo $result;
if ($result) echo "uploaded";
else echo "Not uploaded";
?>

0

Решение

Я предполагаю cron выполняется под другой учетной записью, чем та, которую вы используете в оболочке.

Ваш сценарий, вероятно, зависит от среды вашей учетной записи (например, файл с известными ключами хоста). У учетной записи cron этого нет, поэтому lftp выходит из строя.

Вполне вероятно, что lftp выводит некоторую ошибку на вывод ошибки. Но вы собираете только стандартный вывод.

Попробуйте начать с простого сценария оболочки и перенаправить как stdout, так и stderr в файл журнала:

lftp -u user,Password sftp://domain.com 2>&1 > /tmp/log.log

Обратите внимание, что вы используете SFTP. Поэтому нет смысла устанавливать специфичные для FTP параметры lftp, лайк ftp:passive-mode (в SFTP нет пассивного режима).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]