A. 如何讓php執行shell
php給我們提供了system(),exec(),passthru()這三個函數來調用外部的命令.
雖然這三個命令都能執行linux系統的shell命令,但是其實他們是有區別的:
system() 輸出並返回最後一行shell結果。
exec() 不輸出結果,返回最後一行shell結果,所有結果可以保存到一個返回的數組裡面。
passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標准輸出設備上。
相同點:都可以獲得命令執行的狀態碼
例子:system("/usr/local/bin/webalizer/webalizer");
B. 問一下,安裝php擴展,php-shell的具體是怎麼實現php連接遠程主機並操作了謝謝
一樓真是天真,直接復制粘貼我的原提問答案,都說了,那不是我使用的方法。
我親自來回答你吧~
過程略有些繁瑣,涉及安裝到許多東西。但裝好了可以自由使用遠程連接。
安裝部分:
檢查:
1 vi /etc/ssh/sshd_config
PasswordAuthentication yes //保證這行內容是yes
2 關閉selinux
安裝
1 yum -y install php-devel
2編譯安裝libssh2-1.2.8.tar.gz.gz ,教程網上找,直接解壓編譯即可
3yum -y install php-pear
4 pecl install -f ssh2
5 vi /etc/php.ini
添加一行:extension=ssh2.so
6重啟apache
安裝的詳細部分,可以網上度娘或谷姐
實現部分,其實是,安裝了這個擴展就可以使用Php遠程連接的自有函數了,舉個例子你就明白
logtest.php:
<?php
$connection = ssh2_connect("192.168.1.77",22);
if (ssh2_auth_password($connection,"root","000000")) {
echo "Authentication Successful!\n";
} else {
die('Authentication Failed...');
}
?>
ssh2_connect函數寫入目的主機的ip和埠,ssh2_auth_password輸入主機用戶名和密碼
下面是使用舉例:
<?php
if($ssh = ssh2_connect('192.168.1.77', 22)) {
if(ssh2_auth_password($ssh, 'root', '000000')) {
$stream = ssh2_exec($ssh, 'df -h | cut -c 40-42');
stream_set_blocking($stream, true);
$data = '';
while($buffer = fread($stream, 4096)) {
$data .= $buffer;
}
fclose($stream);
echo $data; // 返回的信息
}
}
?>
以上函數,向目的主機發送shell命令:df -h | cut -c 40-42
返回了需要的信息。
希望能幫到你
C. 如何將PHP作為Shell腳本語言使用
我們都知道,PHP是一種非常好的動態網頁開發語言(速度飛快,開發周期短……)。但是只有很少數的人意識到PHP也可以很好的作為編寫Shell腳本的語言,當PHP作為編寫Shell腳本的語言時,他並沒有Perl或者Bash那麼強大,但是他卻有著很好的優勢,特別是對於我這種熟悉PHP但是不怎麼熟悉Perl的人。
要使用PHP作為Shell腳本語言,你必須將PHP作為二進制的CGI編譯,而不是Apache模式;編譯成為二進制CGI模式運行的PHP有一些安全性的問題,關於解決的方法可以參見PHP手冊(http://www.php.net)。
一開始你可能會對於編寫Shell腳本感到不適應,但是會慢慢好起來的:將PHP作為一般的動態網頁編寫語言和作為Shell腳本語言的唯一不同就在於一個Shell腳本需要在第一行生命解釋本腳本的程序路徑:
#!/usr/local/bin/php -q
我們在PHP執行文件後面加入了參數「-1」,這樣子PHP就不會輸出HTTP Header(如果仍需要作為Web的動態網頁,那麼你需要自己使用header函數輸出HTTP Header)。當然,在Shell腳本的裡面你還是需要使用PHP的開始和結束標記:
現在讓我們看一個例子,以便於更好的了解用PHP作為Shell腳本語言的使用:
#!/usr/local/bin/php -q
print("Hello, world!\n");
?>
上面這個程序會簡單的輸出「Hello, world!」到顯示器上。
一、傳遞Shell腳本運行參數給PHP:
作為一個Shell腳本,經常會在運行程序時候加入一些參數,PHP作為Shell腳本時有一個內嵌的數組「$argv」,使用「$argv」數組可以很方便的讀取Shell腳本運行時候的參數(「$argv[1]」對應的是第一個參數,「$argv[2]」對應的是第二個參數,依此類推)。比如下面這個程序:
#!/usr/local/bin/php -q
$first_name = $argv[1];
$last_name = $argv[2];
printf("Hello, %s %s! How are you today?\n", $first_name, $last_name);
?> 具體詳細的你可以向我一樣在後盾人多看看就明白了,希望能幫到你,努力(๑><๑)
D. php 無法執行shell腳本最有效的方法
要確定的燃此是,不是腳本本身的問題,文件目錄許可權之類的都好了的
1、首先看你的nginx用戶叫啥名字 lsof -i:80
2、執行敬磨visudo命令
3、給www用戶添加root許可權並且不需要皮稿迅密碼
這樣就可以訪問了,這個只是解決無許可權訪問的問題,必須加sudo。