これは ルートの一覧なので、対話式で階層を順番に読み出す必要があります。
<?php
error_reporting( E_ALL & ~E_NOTICE );
session_cache_limiter('nocache');
session_start();
header( "Content-Type: application/json; charset=utf-8" );
$server = "ftpサーバ";
$path = "";
$userpwd = "ユーザ:パスワード";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"ftp://{$server}{$path}");
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_FTP_SSL, CURLFTPSSL_ALL);
curl_setopt($curl, CURLOPT_USERPWD, $userpwd);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$error = 0;
$result = curl_exec($curl);
if ( !$result ) {
$data = array();
$error = 1;
exit();
}
else {
$data = explode("\r\n", rtrim( $result ) );
foreach( $data as $value ) {
$col = preg_split( "/\s+/", $value );
$namecol["flg"] = $col[0];
$namecol["size"] = $col[4];
$namecol["date"] = "{$col[5]} {$col[6]} {$col[7]}";
$namecol["name"] = $col[8];
$file[] = $namecol;
}
}
// ***************************
// JSON データ作成
// ***************************
$json = new stdClass;
$json->row = $file; // 行データ
$json->status = $error; // エラー
print json_encode( $json, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE );
?>
テスト結果
{
"row": [
{
"flg": "drwx---r-x",
"size": "512",
"date": "Sep 4 16:08",
"name": "."
},
{
"flg": "drwxr-xr-x",
"size": "3072",
"date": "Sep 4 21:31",
"name": ".."
},
{
"flg": "-rw-r--r--",
"size": "773",
"date": "Jan 7 2009",
"name": ".cshrc"
},
{
"flg": "-rw-r--r--",
"size": "258",
"date": "Jan 2 2009",
"name": ".login"
},
{
"flg": "-rw-r--r--",
"size": "167",
"date": "Jan 2 2009",
"name": ".login_conf"
},
{
"flg": "-rw-r--r--",
"size": "3",
"date": "Jun 28 13:35",
"name": ".my.version"
},
{
"flg": "-rw-r--r--",
"size": "762",
"date": "Jan 7 2009",
"name": ".profile"
},
{
"flg": "-rw-r--r--",
"size": "980",
"date": "Jan 2 2009",
"name": ".shrc"
},
{
"flg": "drwx------",
"size": "512",
"date": "May 10 10:31",
"name": ".spamassassin"
},
{
"flg": "drwx------",
"size": "512",
"date": "Mar 13 2009",
"name": ".ssh"
},
{
"flg": "drwx------",
"size": "1024",
"date": "May 10 14:09",
"name": "MailBox"
},
{
"flg": "drwx------",
"size": "512",
"date": "Mar 13 2009",
"name": "db"
},
{
"flg": "-rw-------",
"size": "21098",
"date": "Jun 16 10:35",
"name": "dead.letter"
},
{
"flg": "drwxr-xr-x",
"size": "2048",
"date": "Jul 15 2004",
"name": "fml"
},
{
"flg": "drwxr-xr-x",
"size": "512",
"date": "Aug 10 05:43",
"name": "lightbox"
},
{
"flg": "-rw-r--r--",
"size": "865",
"date": "Apr 27 11:22",
"name": "nam.php"
},
{
"flg": "drwx------",
"size": "512",
"date": "Sep 4 16:08",
"name": "ports"
},
{
"flg": "drwxr-xr-x",
"size": "512",
"date": "Jun 14 09:53",
"name": "sakura_pocket"
},
{
"flg": "drwxr-xr-x",
"size": "512",
"date": "May 18 11:06",
"name": "tmp"
},
{
"flg": "drwxr-xr-x",
"size": "1024",
"date": "Sep 6 15:56",
"name": "www"
}
],
"status": 0
}
結果
— 夜歩き@DAZStudio (@sworc) 2017年9月8日
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
を追加すると、最後の 1 は無くなる pic.twitter.com/2dFBmTjPWj
|
|
【PHP+通信の最新記事】
- fake sendmail for windows ってなんで無名なんだ???
- Livedoor の お天気Webサービス API は、JSON のテストするのに重宝しています。
- PHP 5.2.0 以上で、サーバー間で FTPS( SSL 接続 )でファイル転送を行う
- abraham さんの twitteroauth の TwitterOAuth クラスのメソッド一覧概要
- abraham さんの twitteroauth で Twitter 投稿
- abraham さんの twitteroauth のライセンスは、MIT ライセンスと同文
- PHPからのメール送信
- PHPによるFTPサーバーのデータ一括ダウンロード




























