1

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

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

返回布尔值(假)

但是,如果我在我的真实网络服务器上运行它,该脚本就可以工作。我是否必须设置一些偏好才能使其在本地也能正常工作?

问候

4

3 回答 3

0

我有 MAMP,所以我使用 php 手册页中的第一个示例进行了一些测试ftp_nlist,并且得到了与您相同的错误(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显示“无法获取内容”消息;所以至少如果它真的坏了,你会更好地知道在哪里。

高温高压

于 2010-07-15T02:28:26.767 回答
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);
于 2010-07-15T02:38:57.340 回答
0

我发现了一个可以解决此问题的问题。如果您将 Mac 启动到 32 位模式,它似乎可以正常工作。要引导您进入 32 位模式,请在引导时按住键盘上的 3 和 2。我能够让这个功能工作。

解决方案:我找到了解决方案。

要解决,请执行以下操作:将其添加到 php 脚本中: var_dump(getenv(TMPDIR)); 出口;

我的返回了一个奇怪的 tmp 目录位置或 /var/folders

然后我做了: sudo chmod -R 0777 /var/folders

现在它按预期工作!

于 2011-10-27T02:29:43.450 回答