phpseclib - ошибки при запуске через CRON, но не при выполнении вручную

Я использую phpseclib 2.0 на своем сайте, установленный с помощью composer. Я написал функцию php, которая в основном подключается к удаленному серверу через SFTP, и загружает файлы в предопределенном каталоге. Эта функция вызывается через CRON с использованием cURL и работает нормально. На прошлой неделе перестал работать. Я включил ведение журнала, и это то, что я получаю.

Severity: User Notice
Message:  Error reading channel data
Filename: Net/SSH2.php
Line Number: 3579

Severity: User Notice
Message:  Connection closed prematurely
Filename: Net/SSH2.php
Line Number: 3025

Severity: User Notice
Message:  Connection closed by server
Filename: Net/SSH2.php
Line Number: 3373

Severity: User Notice
Message:  Expected SSH_FXP_VERSION
Filename: Net/SFTP.php
Line Number: 471

Когда я проверил таблицу, использованную для хранения содержимого загруженных файлов, ни один из них не был обновлен.

Странная вещь в том, что, если бы я должен был выполнить точную команду из CRON, все работает отлично, и таблица обновляется. Я проверил журналы CROND и могу подтвердить, что он использует то же разрешение, что и тот же пользователь, т.е. корень. Любой имеет какое-либо понимание этого вопроса, поскольку я понятия не имею. Я перешел от использования cURL к использованию httpie, но результат тот же. Работает, когда выполняется вручную в командной строке, но не выполняется при выполнении CRON.

Единственное изменение сервера, которое я сделал, было обновить мой PHP с версии 5.6 до версии 7.0. Может ли это быть причиной? Если у кого-то есть решение или какое-либо понимание того, как я могу это решить, это будет с благодарностью. Заранее спасибо.

1 ответ

PHP 7 более строг к SSL-сертификатам.

Проверьте, дает ли сервер, к которому вы подключаетесь, правильный сертификат. или если вы можете заставить php игнорировать недействительный сертификат. (менее предпочтительно, чтобы настроить его правильно, конечно)

-

однако это не объясняет, почему вы можете запустить скрипт вручную. Единственное, о чем я могу думать сейчас: это какой-то сертификат. в пути поиска при входе в систему как пользователь?

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