Php ftp\u登录验证失败

Php ftp\u登录验证失败,php,ftp,Php,Ftp,我有这样的设置(只有名称已更改): 这将输出错误: ftp_login(): Authentication failed. in /path/to/file.php 从我的PHP复制粘贴到像Cyberduck这样的FTP客户端成功。资源$connection似乎存在,否则它应该在ftp\u登录行之前消失。我100%确信我有正确的用户名和密码(Cyberduck测试证明了这一点) 唯一让我警觉的是,当前面有@符号时,我知道PHP处理字符串的方式不同,我的密码中可能有一个或多个符号,也可能没有

我有这样的设置(只有名称已更改):

这将输出错误:

ftp_login(): Authentication failed. in /path/to/file.php
从我的PHP复制粘贴到像Cyberduck这样的FTP客户端成功。资源
$connection
似乎存在,否则它应该在
ftp\u登录
行之前消失。我100%确信我有正确的用户名和密码(Cyberduck测试证明了这一点)

唯一让我警觉的是,当前面有
@
符号时,我知道PHP处理字符串的方式不同,我的密码中可能有一个或多个符号,也可能没有


编辑:

因为Cyberduck在我的工作机器上,PHP在AWS上运行,所以我决定运行两个测试来缩小可能性。我设置了一个SSH隧道:

ssh -L 11111:foo.com:21 adam@foo.com
并在
adam@localhost:11111
,在控制台中获取此错误消息:

channel 3: open failed: connect failed: Connection refused
对我来说没有结论的结果


因此,我将两行PHP脚本带到我的机器上,并再次获得
身份验证失败的消息。这看起来像是一个PHP问题…

事实证明问题出在密码上。我不知道为什么会有这个问题,但是在密码的第一个字符中有一个符号(
&
)会让事情变得更糟。将密码更改为没有前导符号且有效的密码。

您是否像这样使用撇号$通过=“@abc$”;如果使用引号(
)PHP在里面检查这个字符串以找到一个特殊字符。@aso我肯定是在使用单引号来防止PHP转义。我还在一个点上输入了一个
printf
语句,它输出了正确的密码。您是否在同一台机器上使用ftp和使用脚本?您确定使用ftp吗?Cyberduck也支持sftp、 除了名称的相似性之外,这与ftp无关。因此,也许您成功地将sftp与Cyberduck一起使用,但尝试在PHP中使用相同的ftp凭据?@jeroen否,我正在从我的工作机器使用Cyberduck,PHP脚本在AWS上。我已经运行了一些测试,并将相应地更新问题。
channel 3: open failed: connect failed: Connection refused