# 解决PHP ftp\_put(): php\_connect\_nonb() failed: No error (0)

**URL:** <https://www.shiqidu.com/t/topic/763>\
**Category:** 开发调优\
**Tags:** PHP\
**Created:** [2021 年12 月 16 日 08:12 UTC](https://www.shiqidu.com/t/topic/763 "2021-12-16T08:12:42Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)\
发布日期： [2021 年12 月 16 日 08:12 UTC](https://www.shiqidu.com/t/topic/763/1 "2021-12-16T08:12:42Z")

</div>

连接上ftp服务器后，发现 ftp\_nlist 和 ftp\_put 都会报这个No error的错，导致无法列出目录下的文件，也没办法上传文件。

解决办法是设置一个参数 `FTP_USEPASVADDRESS` 注意要放到设置被动模式的代码前。

```php
ftp_set_option($conn, FTP_USEPASVADDRESS, false);
ftp_pasv($conn, true); // 被动模式

```

至于这个参数是干啥的，文档上的解释如下

> 当此选项禁用时，PHP 会忽略掉 FTP 服务器通过 PASV 命令返回的 IP 地址，直接使用在 ftp\_connect() 中指定的地址。value 参数必须是布尔型。
