我喜欢和mamp一起工作(我有专业版)。 我正在尝试连接到ftp服务器并列出那里的文件。但是连接成功但不会列出文件。
$contents = ftp_nlist($conn_id, $path);
返回bool(false)
然而,如果我在我的真实网络服务器上运行它,脚本正在工作。是否有一些偏好我必须设置让它在本地工作?
问候
答案 0 :(得分:0)
我有MAMP所以我使用ftp_nlist
的php手册页中的第一个示例进行了一些测试,并且得到了与您(bool(false)
)相同的错误。事实证明,如果使用该代码:
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// get contents of the current directory
$contents = ftp_nlist($conn_id, ".");
// output $contents
var_dump($contents);
并且由于用户名或密码错误导致登录失败,如果失败并显示bool(false)
消息。
最好做一些事情,让你更好地了解它失败的地方(如果它失败了):
// set up basic connection variables
$ftp_server='127.0.0.1';
$ftp_user_name='user';
$ftp_user_pass='pass';
//initiate connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die ('login failed');
// get contents of the current directory
$contents = ftp_nlist($conn_id, ".") or die ('could not get contents');
// output $contents
var_dump($contents);
我测试了这个并且它有效。如果有正确的凭据,它将登录并转储目录。如果凭据不正确,则die
将显示“登录失败”消息。如果路径不好,它将die
带有“无法获取内容”的消息;所以至少如果它确实崩溃你会更好地了解在哪里。
HTH
答案 1 :(得分:0)
ftp_nlist()
有时会返回false。在验证后尝试直接使用ftp_pasv()
打开被动模式,如下所示:
$conn_id = ftp_connect($server_ip);
$login_result = ftp_login($conn_id, $username, $password);
ftp_pasv($conn_id, true);
$contents = ftp_nlist($conn_id, $path);
答案 2 :(得分:0)
我找到了解决此问题的问题。如果您将Mac启动到32位模式,它似乎正在工作。要启动进入32位模式,请在启动时按住键盘上的3和2。我能够使这个功能起作用。
解决方案: 我找到了解决方法。
要解决此问题,请执行以下操作:将其添加到php脚本: 的var_dump(GETENV(TMPDIR));出口;
Mine返回了一个奇怪的tmp dir位置或/ var / folders
然后我做了:sudo chmod -R 0777 / var / folders
现在它按预期工作了!