Php (ftp://user:pass@主机名/路径)在我实现openssl后停止工作

Php (ftp://user:pass@主机名/路径)在我实现openssl后停止工作,php,ftp,php-openssl,Php,Ftp,Php Openssl,我拥有一个使用PHP的在线FTP,由于mcrypt已被弃用,我想切换到openssl继续加密用户凭据并将其存储为cookie(在浏览器会话结束时删除)。我知道加密过程工作正常,因为除了ftp://路径之外,我拥有所有功能。在cookie被加密和解密后,我还回显了cookie中的值,这些值与我加密之前的值完全相同 这只是一个现在不起作用但以前起作用的例子: $file=fopen("ftp://$u:$p@$h".$_GET['dir'],"r") or die("Couldn't open fi

我拥有一个使用PHP的在线FTP,由于
mcrypt
已被弃用,我想切换到
openssl
继续加密用户凭据并将其存储为cookie(在浏览器会话结束时删除)。我知道加密过程工作正常,因为除了ftp://路径之外,我拥有所有功能。在cookie被加密和解密后,我还回显了cookie中的值,这些值与我加密之前的值完全相同

这只是一个现在不起作用但以前起作用的例子:

$file=fopen("ftp://$u:$p@$h".$_GET['dir'],"r") or die("Couldn't open file");
警告:fopen()要求参数1为有效路径,字符串在“隐藏”行中给出


我不明白为什么会发生这种情况,我非常适合给出确定为什么会发生这种情况所需的任何代码。但是,我不能发布可能危及我网站安全的代码。提前谢谢。

问题是解密中有额外的字符。你看不到这些人物,所以你不知道他们在那里。使用以下命令:

strval(str_replace("\0", "","ftp://$u:$p@$h".$_GET['dir']))

我只是试着接受同样的错误):我想@Nicolas的意思是
ftps
sftp
是通过SSH进行的文件传输,其中
ftps
ftp
ssl
。不确定它是否能解决问题,但值得一试:)您的意思是使用
(ftps://user:pass@主机名/路径)
?如果是,则输出相同的错误。@jnevil为什么需要将整个连接类型切换到SSL?我更改的唯一导致此错误的是加密/解密方法。我只是不明白为什么会发生这种事。如果变量的值与以前完全相同,那么为什么会出现这样的错误。@4424dev好的,但是为什么?