2017-06-21 75 views
1

ftp_nlistのFTPフォルダ内のすべてのファイルを取得したいと思います。FTPフォルダ内のファイルを変更時刻でソートする方法

しかし、デフォルトでは名前でソートされた配列が返されます。

最後に変更した時刻で並べ替えることができます。私は-ltをフォルダパスの前に追加しようとしましたが、各ファイル名の前に日付時刻を追加するだけです。

私を助けてください!

+0

私はあなたが使用する必要があるとしている賭け:http://php.net/manual/en/function.ftp -rawlist.phpを開き、手動で解析してソートします。 – mkaatman

答えて

2

FTPサーバーに(または任意の)基準に従ってファイルを並べ替える標準的な方法はありません。

一部のFTPサーバー、特にProFTPDおよびvsftpdは、LIST/NLSTコマンドで独自のフラグをサポートしているため、エントリを並べ替えることができません。

これらのサーバーは、更新時刻でファイルをソートする-tフラグをサポートして両方:

LIST -t 

これは非標準的なだけではありませんが、それは実際にFTPプロトコルに違反します。 vsftpdは唯一のProFTPDのと同じ意味を持つ-a-r-t-F-lをサポートしていることを
http://www.proftpd.org/docs/directives/linked/config_ref_ListOptions.html

注:

は、ProFTPDのがサポートするすべてのオプションについては、manページを参照してください。


サーバが-tスイッチ(または類似)をサポートしていない場合、あなたの唯一のオプションがあるように、ファイル属性を持つリストを取得し、ローカルにソートすることです。

ftp_nlistは、ファイル名のみを返すため、使用できません。

ftp_rawlistを使用できます。独自のファイルリストを返すが、それは解析するのが難しいかもしれない。しかし、特定のサーバーのみをサポートする必要がある場合は、そのサーバーの解析をハードコーディングできます。

一般的な解決策が必要な場合は、信頼できるマシンで読み取り可能なディレクトリ一覧を返すFTPコマンドMLSDを使用するのが理想的です。しかし、PHPはそれをサポートしていません。

MLSDの実装はftp_rawlistコマンドのユーザーのコメントにあります:
https://secure.php.net/manual/en/function.ftp-rawlist.php#101071

+0

ありがとうございます、私は自分のFTPサーバーがその機能をサポートしていないと思います。 –

+0

私はそれらをローカルで並べ替えるよ –

+1

ええ、これは最終的な答えだ –

関連する問題