BLOG ENTRY

PHPでssh接続環境をインストール[PECL][SSH2][CentOS]

php

PHPでssh2_connect()などssh2関数を使えるように、PECLのssh2をCentOS5.3の64ビット版にインストール

まずは準備から

[shell]
# wget http://www.libssh2.org/download/libssh2-1.1.tar.gz
# mv libssh2-1.1.tar.gz /usr/local/src/libssh2-1.1.tar.gz
# cd /usr/local/src/
# tar zxvf libssh2-1.1.tar.gz
# cd libssh2-1.1.tar.gz
# ./configure
# make
[/shell]
ここでエラーが出てしまいました。

なのでopensslの開発環境をインストール
[shell]
# yum -y install openssl-devel
[/shell]

再度makeから実行
[shell]
# make
# make install
[/shell]
でlibssh2のコンパイル完了

次にPECL:ssh2をインストールします

[shell]
# pecl install ssh2
[/shell]
エラーが出ました
Failed to download pecl/ssh2 within preferred state “stable”, latest release is version 0.11.0, stability “beta”, use “channel://pecl.php.net/ssh2-0.11.0” to install
Cannot initialize ‘ssh2’, invalid or missing package file
Package “ssh2” is not valid
install failed

なので手動でssh2の最新版をインストール
[shell]
# wget http://pecl.php.net/get/ssh2-0.11.0.tgz
# tar zxvf ssh2-0.11.0.tgz
# cd ssh2-0.11.0
# phpize
# make
# make install
Installing shared extensions: /usr/lib64/php/modules/
[/shell]

php.ini用にextensionを記載する
# vim /etc/php.d/ssh2.ini
extension=ssh2.so

Webサーバ再起動してphp.ini再読み込み
[shell]
#service httpd restart
[/shell]

phpinfoにssh2の項目が表示されて
ssh2_connect()などが使えるようになりました

PHPで別サーバへファイル送信テスト

[php]
<?php
$connection = ssh2_connect(‘接続先ホスト’, 22);
ssh2_auth_password($connection, ‘ユーザー名’, ‘パスワード’);
ssh2_scp_send($connection, ‘sample.jpg’, ‘/var/www/html/sample.jpg’, 0644);
[/php]

sample.jpgをリモートからファイルアップロードできました。

※ついでにPHPでリモートサーバのファイル削除テスト
[php]
<?php
$connection = ssh2_connect(‘接続先ホスト’, 22);
ssh2_auth_password($connection, ‘ユーザー名’, ‘パスワード’);
$sftp = ssh2_sftp($connection);
ssh2_sftp_unlink($sftp, ‘/var/www/html/sample.jpg’);
[/php]

sample.jpgをリモートから削除できました。

WRITE COMMENT


(required)


(required)


(required)

MENU

veltica creative of twitter