php後台調shell腳本,php執行shell命令

本文目錄一覽:

如何讓php執行shell

php給我們提供了system(),exec(),passthru()這三個函數來調用外部的命令.

雖然這三個命令都能執行linux系統的shell命令,但是其實他們是有區別的:

system() 輸出並返回最後一行shell結果。

exec() 不輸出結果,返回最後一行shell結果,所有結果可以保存到一個返回的數組裡面。

passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標準輸出設備上。

相同點:都可以獲得命令執行的狀態碼

例子:system(“/usr/local/bin/webalizer/webalizer”);

如何通過php頁面執行shell腳本?

如果php允許那麼大的許可權,可以用 exec 函數, 不過這樣做很危險。

換個思考方式, 可以php向某個文件寫入一個指定數據, shell腳本定時監測這個文件,然後判斷內容,再執行指定腳本

如何將PHP作為Shell腳本語言使用

我們都知道,PHP是一種非常好的動態網頁開發語言(速度飛快,開發周期短……)。但是只有很少數的人意識到PHP也可以很好的作為編寫Shell腳本的語言,當PHP作為編寫Shell腳本的語言時,他並沒有Perl或者Bash那麼強大,但是他卻有著很好的優勢,特別是對於我這種熟悉PHP但是不怎麼熟悉Perl的人。

要使用PHP作為Shell腳本語言,你必須將PHP作為二進位的CGI編譯,而不是Apache模式;編譯成為二進位CGI模式運行的PHP有一些安全性的問題,關於解決的方法可以參見PHP手冊()。

一開始你可能會對於編寫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);

? 具體詳細的你可以向我一樣在後盾人多看看就明白了,希望能幫到你,努力(๑؂๑)

php如何執行shell腳本

這些shell命令一般服務商是不允許運行的,要不然伺服器很快就讓攻擊掉了

ubuntu12.04 怎麼用php調用shell

第一,應該查閱php.ini配置文檔(我的配置文檔位置是/etc/php5/php.ini),關閉安全模式 safe_mode=Off。

第二,給予php運行的用戶和本機用戶許可權。php運行的用戶名可以通過在localhost運行以下的php文件查到:

?php

echo shell_exec(“id -a”);

?123123

我的Ubuntu系統的php運行用戶名是www-data(好蠢的名字…)

控制台下,執行 visudo,可以打開/etc/sudoers文件進行修改(利用visudo命令的意義在於,sudoers文件很重要,如果修改錯了,visudo會提示你,而直接修改會導致系統出錯,無法使用sudo…)

修改的地方在root的下一行:

『查到的php運行的用戶名』 ALL=(ALL) NOPASSWD:ALL

『本機用戶名』 ALL=(ALL) ALL

通過以上設置,應該就能完成ubuntu系統下php調用並執行shell腳本。

PS.相關的命令(詳細請百度google之)

$output = shell_exec(“xxx.sh”);//只有失敗的時候返回NULL

system(“cmd string”,$status);//$ststus在調用成功時返回true,失敗返回false

PHP下利用shell後台運行PHP腳本,並獲取該腳本的Process ID的代碼

複製代碼

代碼如下:

$command

=

‘/usr/bin/php

/pub/www/u111/job/Crondo/auto_collector.php

‘;

$process

=

proc_open($command,

array(),$pipes);

$var

=

proc_get_status($process);

proc_close($process);

//pid就是進程ID,至於為什麼要加1,我現在也沒有搞懂,經過多次的測試,發現$var[‘pid’]得到的ID比實際的少1

$pid

=

intval($var[‘pid’])+1;

//殺死進程

proc_close(proc_open(‘kill

-9

‘.$pid,

array(),

$pipes));

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243352.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:55
下一篇 2024-12-12 12:56

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python腳本控制其他軟體

    Python作為一種簡單易學、功能強大的腳本語言,具有廣泛的應用領域,在自動化測試、Web開發、數據挖掘等領域都得到了廣泛的應用。其中,Python腳本控制其他軟體也是Python…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字元命令行的語言…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python命令大全及說明

    Python是一種高級編程語言,由Guido van Rossum於1989年底發明。它具有良好的語法結構和面向對象的編程思想,具有簡潔、易讀、易學的特點,是初學者以及專業開發人員…

    編程 2025-04-29
  • Python SSH 遠程執行命令

    Python SSH 遠程執行命令是指在一個伺服器上執行遠程另一個伺服器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python…

    編程 2025-04-29
  • Python自動化運維腳本

    Python自動化運維腳本是使用Python編寫的代碼,可以幫助管理員自動化執行繁瑣、重複的操作任務。通過Python自動化運維腳本,管理員可以在更短的時間內完成工作,提高工作效率…

    編程 2025-04-28
  • 使用Python圖書館搶座腳本的完整步驟

    本文將從多個方面詳細介紹如何使用Python編寫圖書館的座位搶佔腳本,並幫助您快速了解如何自動搶佔圖書館的座位,並實現您的學習計劃。 一、開發環境搭建 首先,我們需要安裝Pytho…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28

發表回復

登錄後才能評論