PHPにてXML形式のファイルから必要なデータを取得する。
予めssh2が使えるように、
libssh2とssh2のextensionを PHP7にインストールしておく。
#yum install gcc glibc-devel zlib-devel openssl-devel
#yum install --enablerepo=epel,remi,remi-php73 php-devel
本家LIBSSH2サイトへアクセスしwgetで取得
# wget https://www.libssh2.org/download/libssh2-1.9.0.tar.gz
# tar vxzf libssh2-1.9.0.tar.gz
# cd libssh2-1.9.0
# ./configure
# make
# make install
ライブラリ PCELから ssh2のモジュールを取得
# wget https://pecl.php.net/get/ssh2-1.2.tgz
# tar vxzf ssh2-1.2.tgz
# cd ssh2-1.2
# phpize
# ./configure --with-ssh2
# make
# make install
extensionに認識
php.iniに
extension=ssh2.so を記述し、apacheを再起動。
<?php
$filepath="<取得先のxmlファイルのアドレスを指定>";
//SCPでファイル要求
$connection = ssh2_connect('192.168.0.xxx', 22);//22ポートは開放しておく
ssh2_auth_password($connection, '<ユーザ名>', '<パスワード>');
$get_add = "/var/www/html/xml/get.xml";//一旦ローカルに取得
ssh2_scp_recv($connection, $filepath, $get_add);
//file_existsを使い、xmlがあればデータを取得させる
if(file_exists("/var/www/html/xml/get.xml")){
$xml=simplexml_load_file("/var/www/html/xml/get.xml");
//xmlの中身を取得 階層が深い時は、->で階層を深く指定すれば取得できる。
//xmlの構成を以下とした場合
//<address>
// <zip>100-0001</zip>
// <add>東京都何某</add>
//</address>
$column_xml = ($xml->address->zip);//zipの中身を取得
echo "取得したxmlのデータ⇒".$column_xml;
}else{
echo "xml取得失敗";
}
//ディレクトリに残存する当該xmlファイルを削除する
array_map('unlink', glob("/var/www/html/xml/get.xml"));
?>