我设置了这样的东西(只有名字改变了):
$connection = ftp_connect('hostname.com') or die('Connection failure');
$login_result = ftp_login($connection, 'username', 'password');
这会输出错误:
ftp_login(): Authentication failed. in /path/to/file.php
从我的PHP复制粘贴到像Cyberduck这样的FTP客户端成功。资源$connection
似乎存在,否则它应该在ftp_login
行之前消亡。我100%确定我拥有正确的用户名和密码(通过Cyberduck测试证明)。
我脑子里唯一能引发警钟的是我知道PHP在前面有一个@
符号时处理不同的字符串,我的密码可能有也可能没有一个或多个符号在它。
编辑:
由于Cyberduck在我的工作机器上并且PHP在AWS上运行,我决定运行两个测试来缩小可能性。我建立了一个SSH隧道:
ssh -L 11111:foo.com:21 adam@foo.com
在adam@localhost:11111
上运行Cyberduck,在控制台中收到此错误消息:
channel 3: open failed: connect failed: Connection refused
对我有不确定的结果。
所以我将2行PHP脚本带到了我的机器上,并再次获得了Authentication failed
。所以它看起来像一个PHP问题......
答案 0 :(得分:1)
事实证明问题是密码。我不知道为什么这是一个问题,但是使用&符号(&
)作为密码的第一个字符就是抛弃它。将密码更改为没有主要&符号的内容。