【问题标题】:phpseclib - Errors when running via CRON but not when execute manuallyphpseclib - 通过 CRON 运行时出错,但手动执行时出错
【发布时间】:2017-06-24 02:16:21
【问题描述】:

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

【问题讨论】:

  • 您可以发布 SSH 日志吗?您可以通过 define('NET_SSH2_LOGGING', 2)echo $sftp->getLog() 获得它们。

标签: php curl cron phpseclib httpie


【解决方案1】:

PHP 7 对 SSL 证书更加严格。

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

--

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 2014-09-06
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    相关资源
    最近更新 更多