FTP fopen()错误550-不是普通文件

时间:2013-02-13 14:14:56

标签: php ftp

嗯,这是我以前从未见过的问题。

我正在尝试使用PHP的fopen()feof()来传输FTP文件,以便将其从一台服务器复制到我自己的服务器。这在使用普通http://网址时效果很好。但是,使用ftp://协议时,我收到以下错误:

fopen(ftp://.../streaming/planted2.mp4) [0function.fopen0]: failed to open stream: FTP server reports 550 /streaming/planted2.mp4: not a plain file.

请记住,我已确认网址是否正确。

如果我将其弹出到浏览器的搜索栏中,它总是正确加载。

发生此错误后,任何在包装器上使用feof()fread()的尝试都会导致错误,抱怨相应的函数需要资源,但是提供了一个布尔值。如果fopen()没有失败,情况就不是这样了。

由于文件非常大(有时几千兆字节),因此必须使用流式传输。此外,由于服务器的配置,我需要一种循环每个块的方法,以缓冲一些输出。如果不这样做,服务器就会支持。这是Rackspace的一个奇怪的配置。这就是我使用feof()的原因。

所以,不用多说,我的问题是: 550错误是什么意思,什么是“普通文件”?如果我尝试下载的服务器配置有问题,鉴于我的限制,我有哪些选择?

修改

我已经确定这是一个服务器问题。但是,问题仍然没有得到解决。

我联系了我的老板和我们的服务器管理员,服务器人告诉我在不同的基于Windows的服务器上测试它,而不是我正在玩的基于Linux的服务器。我的脚本适用于Windows服务器,所以我确认我的脚本没有错误。

不幸的是,我的老板仍然希望我弄清楚问题,并找出为什么它不能在Linux机器上工作。我完全不知道为什么,也不知道在哪里看。任何提示将不胜感激!

1 个答案:

答案 0 :(得分:0)

我在尝试从sco unix服务器获取文件时遇到过这个问题。

服务器文件位置:/home/user/data/myfile.csv

我可以将以下内容放入任何浏览器中,然后获取文件。

ftp://user:password@host/data/myfile.csv

但是,如果我运行以下内容,则会出现与您相同的错误

$f = fopen("ftp://user:password@host/data/myfile.csv", "r");

但是,如果我将完整路径放入fopen - 它可以正常工作。

$f = fopen("ftp://user:password@host/home/user/data/myfile.csv", "r");

我不确定这是否会为你解决,但对我有用。