phpseclib - 通过CRON运行时出错,但手动执行时不出错

时间:2017-06-24 02:16:22

标签: php curl cron phpseclib httpie

我在我的网站上使用phpseclib 2.0,使用composer安装。我写了一个php函数,它基本上通过SFTP连接到远程服务器,并在预定义的目录中下载文件。使用cURL通过CRON调用此函数,并且工作正常。上周,它停止了工作。我启用了日志记录,这就是我得到的。

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 个答案:

答案 0 :(得分:0)

PHP 7对SSL证书更为严格。

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

-

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