使用sftp和ssh2在fopen上进行分段错误 [英] Segmentation fault on fopen using sftp and ssh2
问题描述
我有一个在 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屋!