執(zhí)行 shell 命令 :
<?php //親測(cè) header("Content-type:text/html;charset=utf-8"); //header("Content-type:text/html;charset=utf-8"); //$message=shell_exec(("ipconfig"); //$message=system("ipconfig"); //$message=exec("ipconfig"); //$message=passthru("ipconfig"); echo "<pre>"; echo "運(yùn)行結(jié)果:".$message."<br/>"; echo "<pre>"; ?>
<?php $message=shell_exec("sudo /usr/local/nginx/sbin/nginx -t 2>&1"); echo "運(yùn)行結(jié)果:".$message."<br/>"; ?>
以上代碼直接在PHP中執(zhí)行SHELL語(yǔ)句。
如果有返回值,其中的 2>&1 是必須的 它負(fù)責(zé)重定向輸出strerr 轉(zhuǎn)到strout 輸出。
否則返回結(jié)果會(huì)為空。
php下執(zhí)行shell命令可以用system、exec之類的,但是每個(gè)單獨(dú)的system命令都是分別調(diào)用shell的,每次的環(huán)境都要重新初始化。
因此,如果用php執(zhí)行多條命令連續(xù)的操作,則不能通過(guò)多條system實(shí)現(xiàn)功能。
本文提供以下二種方法,供大家參考。
1,用php生成shell文件并執(zhí)行它,完事后刪除
<?php file_put_contents('tmp.sh',"cd /usr/local echo 'string' ls $callback"); system('tmp.sh'); ?>
多條命令,直接換行即可。
2,多條命令直接寫(xiě)在一條語(yǔ)句中,如下:
system("cd {$path1};if [ ! -d {$path2} ];then \n { mkdir -p {$path2} \n chmod -R 777 {$path2} \n } \n fi;find -name '{$etaskid}-{$sid}*' -print | while read na
執(zhí)行 shell 腳本(親測(cè)) :
<?php exec("make.sh"); ?>
make.sh 文件
shell腳本 #!/bin/bash #set -x mkdir aaaaaaaaaaaaa
http://www.jb51.net/article/1716.htm
http://www.jb51.net/article/54015.htm
http://www.jb51.net/article/29745.htm
http://www.jb51.net/article/57118.htm
http://blog.csdn.net/lxwxiao/article/details/8513355
http://www.cnblogs.com/microtiger/p/6251129.html
http://blog.csdn.net/hk_5788/article/details/48581783
https://wenku.baidu.com/view/9982af210740be1e650e9aa2.html
http://blog.csdn.net/rogershy/article/details/11662491
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)