php獲取狀態碼
Ⅰ php header()函數語法及使用代碼
語法:
復制代碼
代碼如下:
Void
header(string
$string[,bool
$replace=true
[,
int
$http_response_code)
向客戶端發送原始的HTTP報頭
需注意:
Header函數必須在任何實際的輸出前調用,無論是一般的html標簽、文件中空行,或者來自php。就是在這個函數之前不能有任何形式的輸出。
參數說明:
參數 描述
string 必需。規定要發送的報頭字元串。
replace 可選。指示該報頭是否替換之前的報頭,或添加第二個報頭。
默認是
true(替換)。false(允許相同類型的多個報頭)。
http_response_code 可選。把
HTTP
響應代碼強制為指定的值。(PHP
4
以及更高版本可用)
常見用法實例:
一、發送伺服器狀態碼
復制代碼
代碼如下:
header('HTTP/1.0
404
Not
Found');
常用狀態碼:
狀態碼 說明
100-199 表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程
200-299 成功接收請求,並已完成整個處理過程,常用200
300-399 未完成請求,客戶端需要進一步細化請求,比如,請求的資源已經移動到一個新的地址,常用302,304
400-499 客戶端請求有誤
常用404
500-599 伺服器端出現錯誤,常用500
詳細見:HTTP&FTP相應提示信息
二、頁面跳轉
復制代碼
代碼如下:
//
立即跳轉
header('Location:
http://www.jb51.net/');
//
3秒後跳轉
header('refresh:3;url=http://www.jb51.net');
3.設置瀏覽器緩存
強制瀏覽器不進行緩存!
[code]
//header('Expires:-1');
header('Expires:
Mon,
26
Jul
1997
05:00:00
GMT');
header('Cache-Control:no-cache,must-revalidate');
header('pragma:no-cache');
header('Last-Modified:
'.
date('D,
j
M
Y
H:i:s
T')
);
Ⅱ php執行linux命令並輸出終端屏幕顯示的內容(實時)
PHP在linux上執行命令
目錄:
一、PHP中調用外部命令介紹
二、關於安全問題
三、關於超時問題
四、關於PHP運行linux環境中命令出現的問題
一、PHP中調用外部命令介紹
在PHP中調用外部命令,可以用,1>調用專門函數、2>反引號、3>popen()函數打開進程,三種方法來實現:
方法一:用PHP提供的專門函數(四個):
PHP提供4個專門的執行外部命令的函數:exec(), system(), passthru(), shell_exec()
1)exec()
原型: string exec ( string $command [, array &$output [, int &$return_var ] )
說明: exec執行系統外部命令時不會輸出結果,而是返回結果的最後一行。如果想得到結果,可以使用第二個參數,讓其輸出到指定的數組。此數組一個記錄代表輸出的一行。即如果輸出結果有20行,則這個數組就有20條記錄,所以如果需要反復輸出調用不同系統外部命令的結果,最好在輸出每一條系統外部命令結果時清空這個數組unset($output),以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。
<?php
exec("dir",$output);
print_r($output);
?>
2)system()
原型: string system ( string $command [, int &$return_var ] )
說明: system和exec的區別在於,system在執行系統外部命令時,它執行給定的命令,輸出和返回結果。第二個參數是可選的,用來得到命令執行後的狀態碼。
<?php
system("pwd",$result);
print $result;//輸出命令的結果狀態碼
?>
關於第二個參數結果狀態碼的簡單介紹:
如果返回0是運行成功,
在Bash中,當錯誤發生在致命信號時,bash會返回128+signal number做為返回值。
如果找不到命令,將會返回127。
如果命令找到了,但該命令是不可執行的,將返回126。
除此以外,Bash本身會返回最後一個指令的返回值。
若是執行中發生錯誤,將會返回一個非零的值。
Fatal Signal : 128 + signo
Can't not find command : 127
Can't not execute : 126
Shell script successfully executed : return the last command exit status
Fatal ring execution : return non-zero
3)passthru()
原型: void passthru ( string $command [, int &$return_var ] )
說明: passthru與system的區別,passthru直接將結果輸出到游覽器,不返回任何值,且其可以輸出二進制,比如圖像數據。第二個參數可選,是狀態碼。
<?php
header("Content-type:image/gif");
passthru("/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm");
?>
4)shell_exec()
原型: string shell_exec ( string $cmd )
說明: 直接執行命令$cmd
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
方法二:反撇號
原型: 反撇號`(和~在同一個鍵)執行系統外部命令
說明: 在使用這種方法執行系統外部命令時,要確保shell_exec函數可用,否則是無法使用這種反撇號執行系統外部命令的。
<?php
echo `dir`;
?>
方法三:用popen()函數打開進程
原型: resource popen ( string $command , string $mode )
說明: 能夠和命令進行交互。之前介紹的方法只能簡單地執行命令,卻不能與命令交互。有時須向命令輸入一些東西,如在增加系統用戶時,要調用su來把當前用戶換到root用戶,而su命令必須要在命令行上輸入root的密碼。這種情況下,用之前提到的方法顯然是不行的。
popen( )函數打開一個進程管道來執行給定的命令,返回一個文件句柄,可以對它讀和寫。返回值和fopen()函數一樣,返回一個文件指針。除非使用的是單一的模式打開(讀or寫),否則必須使用pclose()函數關閉。該指針可以被fgets(),fgetss(),fwrite()調用。出錯時,返回FALSE。
<?php
error_reporting(E_ALL);
/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
Ⅲ PHP怎麼運行EXEC文件
在PHP中調用外部命令,可以用如下三種方法來實現:
1、用PHP提供的專門函數
(1)PHP提供共了3個專門的執行外部命令的函數:system(),exec(),passthru()。
(2)system() 原型:string system (string command [, int return_var])
(3)system()函數很其它語言中的差不多,它執行給定的命令,輸出和返回結果。第二個參數旦宴悶是可選的,用來得到命令執行後的狀態碼。
2、例子:模彎
代碼如下:
<?php
system("/usr/local/bin/webalizer/webalizer");
?>
exec()
(1)原型:string exec (string command [, string array [, int return_var]]) exec
(2)()函數與system()類似,也執行給定的命令,但不輸出結果,而是返回結果的最後一行。雖然它只返回命令結果的最後一行,但用第二個參數array 可以得到完整的結果,方法是把結果逐行追加到array的結尾處。祥高所以如果array不是空的,在調用之前最好用unset()最它清掉。只有指定了第二 個參數時,才可以用第三個參數,用來取得命令執行的狀態碼。
Ⅳ 怎麼用php命令執行php代碼
PHP執行命令的四種方法
方法一:使用exec函數執行系統外部命令
原型:function exec(string $command,array[optional] $output,int[optional]
$return_value)
<?
exec("dir",$outPut);
print_r($outPut);
?>
說明:列出和PHP執行文件同級目錄下的所有目錄及文件信息。
知識點:exec執行系統外部命令時不會輸出結果,而是返回結果的最後一行,如果你想得到結果你可以使用第二個參數,讓其輸出到指定的數組,此數組一個記錄代表輸出的一行,即如果輸出結果有20行,則這個數組就有20條記錄,所以如果你需要反復輸出調用不同系統外部命令的結果,你最好在輸出每一條系統外部命令結果時清空這個數組,以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。
方法二:使用system函數執行系統外部命令
原型:function system(string $command,int[optional] $return_value)
1
2
3
<?
system("dir");
?>
知識點:system和exec的區別在於system在執行系統外部命令時,直接將結果輸出到游覽器,如果執行命令成功則返回true,否則返回false。第二個參數與exec第三個參數含義一樣。
方法三:使用函數passthru執行系統外部命令
原型:function passthru(string $command,int[optional] $return_value)
知識點:passthru與system的區別,passthru直接將結果輸出到游覽器,不返回任何值,且其可以輸出二進制,比如圖像數據。
方法四:反撇號`(和~在同一個鍵)執行系統外部命令
1
2
3
<?
echo `dir`;
?>
知識點:在使用這種方法執行系統外部命令時,你要確保shell_exec函數可用,否則是無法使用這種反撇號執行系統外部命令的。
Ⅳ php如何獲取伺服器的返回狀態,如:404 , 403 , 301 等,像這種狀態碼,用的全局變數哪個參數
全局變數應該沒有,不過get_headers()函數可以返回伺服器狀態
<?php
$url = '網址';
$header = get_headers($url, 1);
echo '狀態為:'.$header[0].'<br />';
//
preg_match('/\d{3}/',$header[0],$code);
echo '數字狀態碼為:'.$code[0].'<br />';
?>
Ⅵ 如何通過PHP執行linux命令
我使用的意思是想通過php代碼做的更好對任意那麼的目錄可讀可寫可卸載,可以執行kill pid等的命令。
當然還存在還存在的做法,這是我使用的猜測,您不妨試看看,
1、把php的運行網民改為root,這種可能會存在必須的風險。
2、在apache裡面指定可以對某個root許可權的文件或目錄做操作,該做法沒試驗過。可能您能試驗成功的話,希望反饋一下哦。
求助者:恩,第一種做法,我使用的想過,可就是我是想參考我集團的思路來,所以這種做法沒嘗試過。因為它存在安全疑問。
第二個做法,應該可以,可就是太局限性了。要是文件多咋辦,還存在我要想執行個kill,services restart等,肯定就不行了。
大家集團貌似是,寫了個linux命令,和您們的思路貌似是一樣的回者答:這是大家的做法:用VC寫個服務,該服務的運行身份是root,也可以給其最大許可權,php調用這個服務做操作。 該做法可行,只是就得多一種底層語言。
還存在的做法經測試:
第一種做法,成功。
我使用的項目用是VC寫的服務。
第一種做法,可以改變PHP的運行身份,SuexecUserGroup指定CGI程序運行時所使用的網民和組。非CGI程序的請求仍然使用User指令所指定的網民身份處理。該指令取代了Apache的VirtualHosts配置中的User和Group指令。建議您看下類似的文檔,個人做調試。好像還存在別的做法哦。好像是用super。這種您得個人摸索。我只提供思路哦`` 哈哈`` 謝謝``
Ⅶ php調用shell的方法技巧
php調用shell的方法技巧
一、配置
查看php.ini中配置是否打開安全模式,主要是以下三個地方
safe_mode = (這個如果為off下面兩個就不用管了)
disable_functions =
safe_mode_exec_dir=
二、使用
由於PHP基本是用於WEB程序開發的,所以安全性成了人們考慮的一個重要方面。於是PHP的設計者們給PHP加了一個門:安全模式。如果運行在安全模式下,那麼PHP腳本中將受到如下四個方面的限制:
① 執行外部命令
② 在打開文件時有些限制
③ 連接MySQL資料庫
④ 基於HTTP的認證
在安全模式下,只有在特定拿春目錄中的外部程序才可以被執行,對其它程序的調用將被拒絕。這個目錄可以在php.ini文件中用 safe_mode_exec_dir指令,或在編旦敏明譯PHP是加上--with-exec-dir選項來指定,默認是/usr/local/php /bin。
如果你調用一個應該可以輸出結果的外部命令(意思是PHP腳本沒有錯誤),得到的'卻是一片空白,那麼很可能你的網管已經把PHP運行在安全模式下了。
三、如何做?
在PHP中調用外部命令,可以用如下三種方法來實現:
1) 用PHP提供的專門函數
PHP提供共了3個專門的執行外部命令的函數:system(),exec(),模告passthru()。
system()
原型:string system (string command [, int return_var])
system()函數很其它語言中的差不多,它執行給定的命令,輸出和返回結果。第二個參數是可選的,用來得到命令執行後的狀態碼。
例子:
復制代碼 代碼如下:system("/usr/local/bin/webalizer/webalizer");
exec()
原型:string exec (string command [, string array [, int return_var]])
exec() 函數與system()類似,也執行給定的命令,但不輸出結果,而是返回結果的最後一行。雖然它只返回命令結果的最後一行,但用第二個參數array可以得到完整的結果,方法是把結果逐行追加到array的結尾處。所以如果array不是空的,在調用之前最好用unset()最它清掉。只有指定了第二個參數時,才可以用第三個參數,用來取得命令執行的狀態碼。
例子:
復制代碼 代碼如下:exec("/bin/ls -l");
exec("/bin/ls -l", $res);
#$res是一個數據,每個元素代表結果的一行
exec("/bin/ls -l", $res, $rc);
#$rc的值是命令/bin/ls -l的狀態碼。成功的情況下通常是0
passthru()
原型:void passthru (string command [, int return_var])
passthru() 只調用命令,不返回任何結果,但把命令的運行結果原樣地直接輸出到標准輸出設備上。所以passthru()函數經常用來調用象pbmplus(Unix 下的一個處理圖片的工具,輸出二進制的原始圖片的流)這樣的程序。同樣它也可以得到命令執行的狀態碼。
例子:
復制代碼 代碼如下:header("Content-type: image/gif");
passthru("./ppmtogif hunte.ppm");
希望本文所述對大家的PHP程序設計有所幫助。
;Ⅷ 通過curl命令獲取http的狀態嗎
通過curl的-w參數我們可以自定義curl的輸出,%{http_code}代表http狀態碼
代碼如下
# curl -I -m 10 -o /dev/null -s -w %{http_code} IP
上面的輸出是不含換行的,如果需要換行的話,加上\n
代碼如下
# curl -I -m 10 -o /dev/null -s -w %{http_code} IP
200# curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" IP
200