0

を使用して開いているディレクトリを読み取り、opendir()そのディレクトリ内のファイルをループしようとしています。このスクリプトの最終的な目標は、読み取り中のディレクトリから特定のファイルを別の FTP サーバーに転送することです。

「FTP」の部分が私を悩ませているのですが、その理由がわかりません!


一部のサーバー (このスクリプトは複数のサーバーで実行されることが予想されます) で、次のエラーが表示されます。

Warning: opendir(ftp://...@jslsolutions2.flashsvr.com/streaming)
[function.opendir]: failed to open dir: FTP server reports 550
Can't find file in [PATH] on line 88

もちろん、[PATH] は PHP スクリプトへの実際のパスになります。


88 行目は次のとおりです。

if ($handle = opendir($from))

この変数$fromは完全な FTP パスを表します。


完全な FTP パスは次のとおりです。

 ftp://[USERNAME]:[PASSWORD]@[SERVER]/streaming

ディレクトリが正しいことを確認しました。たとえば、ディレクトリをコピーして Web ブラウザに貼り付けると、Firefox は期待どおりに、すべてのファイルを含むディレクトリ ツリーを開きます。つまり、PHP は「ファイルが見つからない」と文句を言っていますが、実際には「ファイル」(つまりディレクトリだと思います) は存在します。

一体何が起こっているのですか?前述したように、このスクリプトは一部のサーバーで機能します。私がテストした Linux サーバーで問題なく動作するため、サーバーが Windows ベースであるかどうかが問題のようです。残念ながら、私はサーバーにアクセスできませんが、サーバー管理者は、問題を切り分けることができれば変更を加えることができます。

このエラーが表示されるのはなぜですか? また、回避策はありますか?

4

1 に答える 1

0

末尾にスラッシュを追加して、問題が解決するかどうかを確認してください。PHP にはバグがあり、修正されています。

于 2013-07-26T16:03:53.907 に答える