我有一个代码我试图通过PHP FTP连接连接到不同的服务器。 我知道我实际连接到服务器。
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
var_dump($login);
当我vardump
$login
,我得到一个TRUE
。
当我尝试上传文件时,我收到了“错误上传文件”,因此我尝试在连接上拉取文件列表:
$file_list = ftp_nlist($ftp_conn, ".");
var_dump($file_list);
它只返回bool(false)
。
我知道连接有文件,因为我可以使用相同的凭据通过FileZilla查看它们。
知道什么可能是错的吗?服务器设置是否可能不允许我从共享服务器使用此PHP脚本?
ftp_list
(ftp_nlist
和ftp_put
)问题的最典型原因是PHP默认为活动模式。在99%的情况下,必须切换到被动模式,以使目录列表和传输工作。使用ftp_pasv
function。
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass) or die("Authorization failed");
// turn passive mode on
ftp_pasv($ftp_conn, true) or die("Unable switch to passive mode");
请参阅我在active and passive FTP connection modes上的文章。