使用sftp和ssh2在fopen上进行分段错误 [英] Segmentation fault on fopen using sftp and ssh2

查看:69
本文介绍了使用sftp和ssh2在fopen上进行分段错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在 AWS 上运行的php系统,以及一个使用 shh2 sftp 在外部服务器上上传xlsx文件的类.这段代码在上一次升级AWS软件包 openssh-clients-6.6.1p1-31.62 openssh-server-6.6.1p1-31.62 之前一直有效,直到此时我已经<打开期间,strong> segfault .Fopen在外部服务器上创建文件.这里的代码:

I have a php system running on AWS and a class that upload a xlsx file on external server using shh2 and sftp. This code worked fine until last upgrade of aws package openssh-clients-6.6.1p1-31.62 and openssh-server-6.6.1p1-31.62 by this time I have a segfault during fopen. Fopen create a file on external server. Here the code:

$stream = @fopen("ssh2.sftp://$this->sftp$remote_file", 'w');

然后,我使用$ stream编写内容,但是由于出现段错误,代码在fopen处停止.我没有发现有关此问题的任何信息,我认为问题是opnessh的新升级,因为php代码未更改.有什么主意吗?

Then I use $stream to write the content, but the code stop on fopen bacause a segfault. I don't find anything about this problem, I think the problem is the new upgrade of opnessh, because the php code isn't changed. Any idea?

推荐答案

在StackOverflow上找到了答案: https://stackoverflow.com/a/40972584/2520795

Found the answer here on StackOverflow: https://stackoverflow.com/a/40972584/2520795

自从此PHP更新以来,您似乎必须用 intval()包围主机部分( ssh2_sftp()的结果):

It seems since this PHP update, you have to surround your host part (result of ssh2_sftp()) with intval():

$handle = opendir("ssh2.sftp://".intval($sftp)."/path/to/directory");

在我的情况下,有一个 fopen 而不是一个 opendir ,但是解决方案是相同的.

In my case there was a fopen instead of an opendir, but the solution is the same.

这篇关于使用sftp和ssh2在fopen上进行分段错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆