用 PHP 上传文件到 FTP 服务器,出现了非常诡异的错误,查看 PHP 错误日志文件,发现 PHP 记录的错误信息是 PHP Warning: ftp_put(): Ok to send data.- [10-Apr-2023 06:03:59 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [11-Apr-2023 06:00:41 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [12-Apr-2023 06:02:53 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [13-Apr-2023 06:00:12 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [14-Apr-2023 05:59:58 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [15-Apr-2023 05:59:54 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [16-Apr-2023 06:00:06 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [17-Apr-2023 05:59:49 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [18-Apr-2023 06:00:01 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [19-Apr-2023 06:00:03 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [20-Apr-2023 05:59:13 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [20-Apr-2023 14:23:29 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [20-Apr-2023 14:33:29 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 151
- [23-Apr-2023 10:40:28 Asia/Shanghai] PHP Warning: ftp_put(): Ok to send data. in C:\server\sites\wuxiancheng.cn\ftp.php on line 153
复制代码 检查代码发现 PHP 程序并没有错误,切换 PHP 版本也不能解决问题。
改用 cURL 命令行版尝试上传文件- curl --url "ftp://<HOST>/<DIRECTORY>" --user "<USERNAME>:<PASSWORD>" --upload-file "<FILEPATH>" --verbose
复制代码 也不能正常上传文件,提示 553 Could not create file,实际上传 0 bytes.- < 553 Could not create file.
- * Failed FTP upload: 553
- * Uploaded unaligned file size (0 out of 64336759 bytes)
复制代码 切换另一个 FTP 服务器却可以正常上传文件,说明问题出在 FTP 服务器上。
最终发现是 FTP 服务器存储用完了,已经没有可用空间。解决办法就是增加 FTP 服务器存储空间或者切换到其他 FTP 服务器,也可以使用 PHP 动态删除旧文件,为新文件腾出足够的可用存储空间。
更多信息可以参考以下链接
https://en.wikipedia.org/wiki/List_of_FTP_server_return_codes
https://www.php.net/manual/en/function.ftp-put |
|