【问题标题】:php ftp_nlist timeout in HerokuHeroku中的php ftp_nlist超时
【发布时间】:2015-05-19 07:46:35
【问题描述】:

什么

我正在尝试在 Heroku 中进行非常基本的 ftp 阅读。

代码:

$ftp = ftp_connect($config['domain']);

$login = ftp_login($ftp,$config['ftp_user'],$config['ftp_pass']);

ftp_pasv($ftp, true);

$contents = ftp_nlist($ftp, "/");
for ($i = 0 ; $i < count($contents) ; $i++)
        echo "<li>" . substr($contents[$i],1) . "</li>";

ftp_close($ftp); 

Heroku 错误

2015-05-19T07:26:01.678102+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/" host=xxx-ftp.herokuapp.com request_id=xxxxx-364a-48f8-8e2a-383affb0789f fwd="xx.12.8.106" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0
2015-05-19T07:26:31.739770+00:00 app[web.1]: [Tue May 19 07:26:31.738789 2015] [proxy_fcgi:error] [pid 186:tid 140199224919808] (70007)The timeout specified has expired: [client 10.127.183.84:42907] AH01075: Error dispatching request to : (polling)
2015-05-19T07:26:31.853475+00:00 app[web.1]: [19-May-2015 07:26:31 UTC] PHP Warning:  ftp_nlist(): php_connect_nonb() failed: Operation now in progress (115) in /app/list.php on line 26

事实

  1. 连接正常(返回真)
  2. Heroku 仅在执行 ftp_nlist 或 ftp_rawlist 时才会超时。
  3. 登录成功
  4. 我尝试过使用和不使用PASIVE 模式
  5. PWD 等其他基本命令运行正常
  6. 我还尝试列出更具体的文件夹,例如:ftp_nlist($conn,"/MyFolder");
  7. 我尝试读取和列出的文件夹数量很少。
  8. FTP 服务器在 2 秒内从其他 FTP 客户端响应
  9. 其他服务器(不是heroku)中的相同代码可以正常工作。

【问题讨论】:

  • 你是说你试过ftp_pasv($conn_id,true);,是吗?

标签: php heroku ftp timeout


【解决方案1】:

这对于 ftp.mozilla.org 来说似乎工作得很好,例如:

$ftp = ftp_connect('ftp.mozilla.org');
$login_result = ftp_login($ftp, 'anonymous', '');
ftp_pasv($ftp, true);
var_dump(ftp_nlist($ftp, "/pub/mozilla.org/"));

您是否正在使用 NAT 后面的目标 FTP 访问 https://bugs.php.net/bug.php?id=55651

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多