為PHP安裝SSH2擴(kuò)展需要兩個軟件包,libssh2和ssh2。兩者的最新版本分別為1.4.2和0.12,下載地址分別為和。這里我們可以均下載最新版本,libssh2的源碼包為libssh2-1.4.2.tar.gz,ssh2的源碼包為ssh2-0.12.tgz。
蒼溪網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,蒼溪網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為蒼溪上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的蒼溪做網(wǎng)站的公司定做!
其次,解壓并安裝libssh2和ssh2。其中,libssh2需要先安裝,ssh2后安裝。安裝步驟如下:
# tar -zxvf libssh2-1.4.2.tar.gz
# cd libssh2-1.4.2
# ./configure --prefix=/usr/local/libssh2
# make make install
以上為安裝libssh2,這里需要記住libssh2的安裝目錄,因為在安裝ssh2的時候還會用到。
# tar -zxvf ssh2-0.12.tgz
# cd ssh2-0.12
# phpize
# ./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2
# make
執(zhí)行完以上過程后,在當(dāng)前目錄下的modules目錄下會生成一個ssh2.so文件,這就是擴(kuò)展PHP所需要的,將該文件拷貝到PHP庫的存儲目錄下在修改PHP的配置文件即可。
# cp modules/ssh2.so /usr/lib64/php/modules/
注:PHP庫的存儲目錄可能因系統(tǒng)而異,本博主的機器上是/usr/lib64/php/modules/
# vi /etc/php.ini
# 向該文件中添加內(nèi)容:extension=ssh2.so
此時為PHP擴(kuò)展SSH2就已經(jīng)完成了,為了驗證是否安裝成功,我們可以通過執(zhí)行一下命令來驗證。
# php -i|grep ssh2
Registered PHP Streams = php, file, http, ftp, compress.bzip2, compress.zlib, https, ftps, ssh2.shell, ssh2.exec, ssh2.tunnel, ssh2.scp, ssh2.sftp
ssh2
libssh2 version = 1.4.2
banner = SSH-2.0-libssh2_1.4.2
最后,我們再通過一個簡單的PHP程序來試用SSH2,該程序首先連接遠(yuǎn)程服務(wù)器,然后執(zhí)行相關(guān)操作,最后讀取操作執(zhí)行的返回結(jié)果,具體例子代碼如下。
?php
$user="user";
$pass="password";
$connection=ssh2_connect('202.112.113.250',22);
ssh2_auth_password($connection,$user,$pass);
$cmd="ps aux";
$ret=ssh2_exec($connection,$cmd);
stream_set_blocking($ret, true);
echo (stream_get_contents($ret));
?
可以的,首先你必須安裝了ssh的php擴(kuò)展。
如果不知道是否已經(jīng)安裝好,可以輸入一下代碼測試一下。
?php
phpinfo();
?
如果有以上信息,說明安裝成功,以下是測試代碼
?php
$connection?=?ssh2_connect('192.168.1.222',?22);
if?(!$connection)?die('Connection?failed');
ssh2_auth_password($connection,?'root',?'root');
$sftp?=?ssh2_sftp($connection);
$stream?=?fopen("ssh2.s",?'w+');
fwrite($stream,?"php_ssh_test\nsecond?line\n");
fclose($stream);
exit;
$host='127.0.0.1';
$user='root';
$password='root';
$dbName='dbName';
$link=new mysqli($host,$user,$password,$dbName);
if ($link-connect_error){
die("連接失?。?.$link-connect_error);
}
$sql="select * from admins";
$res=$link-query($sql);
$data=$res-fetch_all();
var_dump($data);
mysql_connect()函數(shù)用于連接數(shù)據(jù)庫,注意,是小寫,大寫是不行的哦 他有3個參數(shù) 第一個:是mysql數(shù)據(jù)庫所在服務(wù)器地址,有2種情況,一種是:你的連接數(shù)據(jù)庫的代碼文件和mysql數(shù)據(jù)庫,那么,這個參數(shù)可以是localhost、127.0.0.1這兩種都行,mysql數(shù)據(jù)庫端口默認(rèn)是3306,連接的時候可以省略,但如果mysql'數(shù)據(jù)庫端口不是這個,那這個參數(shù)還要加上端口,比如,localhost:3305、127.0.0.1:3305這樣 第二種情況就是,你的程序代碼在A服務(wù)器,msyql在B服務(wù)器,這樣,這個參數(shù)就是mysql數(shù)據(jù)庫所在服務(wù)器的ip地址 第二個參數(shù)是mysql數(shù)據(jù)庫的登錄用戶,比如:root 第三個參數(shù)是mysql數(shù)據(jù)庫的登錄用戶的密碼,比如123456,當(dāng)然,如果mysql數(shù)據(jù)庫相應(yīng)的登錄用戶,沒有設(shè)置密碼,那么這個參數(shù)可以留空,但不能省略 至于雙引號單引號的問題,沒有多大差別,單引號雙引號都行,如果非要說有差別的話,就是,php會查找雙引號內(nèi)的變量進(jìn)行編譯 給你舉個例子: $a = 10; echo '數(shù)字是:$a';//這個使用了單引號,那么輸出結(jié)果就是: 數(shù)字是$a echo "數(shù)字是:$a";//這個使用了雙引號,所以輸出結(jié)果就是:數(shù)字是10 差別就是這個 一般來說,php中,如果引號內(nèi)沒有變量的使用,那就用單引號,這樣有利于php的優(yōu)化
一、最佳方案是在77機器上安裝apache和php
二、可以通過管道控制使用telnet登錄77號機執(zhí)行命令并獲取結(jié)果,ssh連接本人沒有做過,telnet方法如下:
$f=fopen("telnet://192.168.0.77","rw");
$s=fgets($fp);
fputs($fp,"root");
$s=fgets($fp);
fputs($fp,"pass");
$s=fgets($fp);
fputs($fp,"df -h");
while(!feof($fp)){
$fp=fgets($fp);
echo $s;
}
fclose($fp);
手機輸入真累~~~