MAMP:本地环境......连接到ftp不起作用?

时间:2010-07-14 23:17:22

标签: php ftp mamp

我喜欢和mamp一起工作(我有专业版)。 我正在尝试连接到ftp服务器并列出那里的文件。但是连接成功但不会列出文件。

$contents = ftp_nlist($conn_id, $path);

返回bool(false)

然而,如果我在我的真实网络服务器上运行它,脚本正在工作。是否有一些偏好我必须设置让它在本地工作?

问候

3 个答案:

答案 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

     

现在它按预期工作了!