0

我在我的网站上使用 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 版。这可能是原因吗?如果有人对我如何解决这个问题有解决方案或任何见解,将不胜感激。提前致谢。

4

1 回答 1

0

PHP 7 对 SSL 证书更加严格。

检查您要连接的服务器是否提供了正确的证书。或者如果你可以让 php 忽略无效的证书。(当然不太喜欢正确设置它)

--

但这并不能解释为什么您可以手动运行脚本。我现在唯一能想到的:是一些证书。以用户身份登录时在搜索路径中?

于 2017-06-24T02:29:27.777 回答