-
2021-03-24 09:41:52
http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E
php调用shell,如何获取返回值呢,php获取shell的.sh文件的返回值。php执行shell的命令有shell_exec()、exec()、passthru() 和 system()。
首先要确定php有执行的权限
再确定 php.ini的safe_mode 是关闭的也就是off
尝试执行以下看看php能不能执行shell
$temp = exec("ls");
echo $temp;
?>这里仅返回一个文件名称。
如果php获取shell返回多个值时该怎么写呢?
代码
$temp = exec("ls",$arr);
var_dump($arr);
?>
这样就会获取shell命令的多个返回值了。
php调用shell脚本.sh文件呢,一样的
$temp = exec("./shishi.sh 1 2 /tmp");//后面的 1 2 和/tmp均为传递给.sh文件的参数。
echo $temp;//输出执行后的返回结果,如果返回的是数组则返回值为第一个。
?>
同样的如果想返回所有的结果数组,则跟上面的一样
$temp = exec("./shishi.sh 1 2 /tmp",$arr);
var_dump($arr);
?>
这里就是php获取调用shell .sh文件返回值
forasp.cn
更多相关内容 -
shell脚本中执行python脚本并接收其返回值的例子
2021-01-11 01:03:271.在shell脚本执行python脚本时,需要通过python脚本的返回值来判断后面程序要执行的命令 例:有两个py程序 hello.py 代码如下: def main(): print “Hello” if __name__==’__main__’: main() world.py def ... -
用jQuery获取ajax返回值的多种方法
2021-04-29 08:42:56在很多应用场景中,我们会遇到通过ajax来获取值。一般来说,我们会直接在ajax的回调函数里边直接进行处理,但是在某些场景中需要将ajax的返回值传递出来,本文介绍3种可用的方法。每种方法都有自己的优缺点,读者...在很多应用场景中,我们会遇到通过ajax来获取值。一般来说,我们会直接在ajax的回调函数里边直接进行处理,但是在某些场景中需要将ajax的返回值传递出来,本文介绍3种可用的方法。每种方法都有自己的优缺点,读者可以自行考虑使用其中的一种。
先展示一下我们原始的函数,方便后文的描述:
function GetThings()
{
$.post("XX.php",
function(data){
return data;
});
}
为了方便读者能够跑起来,其XX.php内容可以如下(当然本地需要配置相关环境使之能够跑php文件)
echo "HelloWorld!";
*事实上,也可以直接写一个记事本文档(.txt),这样就不需要配置php环境了。
我们是希望通过这个GetThings()函数获取到某些数据,然后将其返回回来。
方法1:同步
我们知道,对于jQuery封装的$.post、$.get等方法默认都是异步传输的,所以如果对上面的GetThings()方法来说,执行 a = GetThings();是无法将ajax的返回值返回给a。解决方法就是将GetThings()方法改成同步:
function GetThings()
{
$.ajax({
url:"XX.php",
async:false,
type:"POST",
success:function(data){
return data;
}
});
}
此时通过a = GetThings();访问,发现还是没有返回值。原因在于,虽然改为同步了,但是其实GetThings()本身并没有返回值,所以最终的结果还是空,解决方案是将$.ajax的返回值保存起来返回回来:
function GetThings()
{
var t = undefined;
$.ajax({
url:"XX.php",
async:false,
type:"POST",
success:function(data){
t = data;
}
});
return t;
}
这样就可以通过a = GetThings();访问到最终的值了(本例中即”Hello World!”)。稍微提醒一下的是,网上看到几篇文章对于同步给出了如下的代码,但是我测试不通过(本地采用jquery1.7.1的版本):
$.post("XX.php",{async:false},function(){...});
至此,该方法解决了接受ajax返回值的问题,其优点在于简单明了,理论上支持jQuery的各个版本;调用方式(a = GetThings();)符合最常规的逻辑。缺点在于,由于是同步,导致浏览器在执行GetThings()时处于一个浏览器假死的状态——直到数据返回才能继续执行该语句后面的代码,这意味着如果数据一直不返回,那么浏览器会一直等待数据,于是就一直在等待,此时浏览器就处于无响应状态。
方法2:回调函数
此方法思想就很简单了,实现起来也比较方便,直接上代码:
function GetThings(callback)
{
$.post("XX.php",
function(data){
callback(data);
});
}
此时,如果要接收返回的值,只需要在callback里边完成就行,具体的来说就是:
GetThings(function(data){
t = data;
});
另外一个例子可以参看参考资料1。该方法简单明了,不存在浏览器卡死之类的情况,并且理论上支持所有版本的jQuery,比起方法1可能就调用时没有那么直观,其他没有什么缺点。
方法3:Deferred对象
这个方法相对前两个方法来说比较高级,但是思路比较简单,就是采用Deferred对象。
Deferred对象,简单说,Deferred对象就是jQuery的回调函数解决方案。我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了Deferred对象。在英语中,defer的意思是”延迟”,所以deferred对象的含义就是”延迟”到未来某个点再执行。Deferred对象从jQuery1.5开始引入,并且jQuery团队改写了诸如ajax等方法,在1.5之前,$.ajax会返回XHR对象;而则之后,返回一个Deferred对象。比如原来的$.post方法可以像前文描述的方式写:
$.post("XX.php",
function(data){
callback(data);
});
如果你的jQuery版本>=1.5可以采用如下方式:
$.post("XX.php").done(function(data){
callback(data);
});
即可以把回调函数拿出来放在最后边。因为$.post返回Deferred对象,而该对象支持链式方法,其.done()方法表示前者已完成时的处理(Deferred对象有3种状态,即未完成,已完成和已失败)。对于Deferred对象可以参见参考资料2,该文章很清晰地解释了该对象,当然也可以参看官方文档给出的信息。
我们原始的设想是,希望在GetThings()执行完之后将其值拿出来。Deferred对象能够检测到自身的完成状态,并在完成时继续执行完成后的代码,此处修改原始方法如下:
function GetThings()
{
var def = $.Deferred();
$.post("XX.php",
function(data){
return def.resolve(data);
}
});
return def.promise();
}
此处在GetThings()中新建了一个Deferred对象,同时该函数返回了该Deferred.promise()。该方法是记录该Deferred对象是否已经完成,而Deferred.resolve()将手动修改该对象为已完成状态。当然如果你愿意可以把该函数按照前文所述改成链式:
$.post("XX.php").done(function(data{callback(data);});
由于GetThings()返回了一个Deferred对象,所以要获取其数据可以链式地用.done()方法调用:
GetThings().done(function(data){
var t = data;
});
该方法的缺点在于对开发者要求相对较高,必须了解Deferred对象,而且该方法仅适用于jQuery1.5及以上版本,但是jQuery团队发明了该对象,并且重写了ajax部分,可见其重要性,而且可以说是一个趋势。Deferred对象从某种意义上来说是对回调函数的一种优化,可以看到Deferred代码编写更符合人的一般思维。
参考资料
-
C#打开php链接传参然后接收返回值的关键代码
2020-12-31 00:39:25php代码 一、php <?php ...charset=UTF-8);...$u=$_POST['zdupdate'];...//打开文件 $sql_expire=insert into `m-haibook`.tbl_aff_log(aff_id,p_id,log_date,create_date) values($a,$p,'$d',now()); if($u==' -
php获取远程文件大小
2020-12-19 03:13:58**功能:获取远程文件的大小,返回值的单位是:字节 */ function get_fileSize($url){ if(!isset($url)||trim($url)==''){ return ''; } ob_start(); $ch=curl_init($url); curl_setopt($ch,CURLOPT_HEADER,1); ... -
怎么在PHP中利用CURL获取返回值
2021-05-06 05:57:44怎么在PHP中利用CURL获取返回值发布时间:2021-01-05 16:58:39来源:亿速云阅读:96作者:Leah怎么在PHP中利用CURL获取返回值?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个...怎么在PHP中利用CURL获取返回值
发布时间:2021-01-05 16:58:39
来源:亿速云
阅读:96
作者:Leah
怎么在PHP中利用CURL获取返回值?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
在CURL中有一个参数 CURLOPT_RETURNTRANSFER :
复制代码 代码如下:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
默认是 0 直接返回获取的输出的文本流,有时候,我们要拿返回值来做判断或者做其他用途的话那就不太好了。
幸好CURLOPT_RETURNTRANSFER 可以设置,如果设置成CURLOPT_RETURNTRANSFER 1:
复制代码 代码如下:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
那么就可以在没有curl_close 关闭一个cURL会话前使用:curl_multi_getcontent($ch)
就能取到服务器返回给我们的值了。是字符串类型!
PHP手册如下:
复制代码 代码如下:
curl_multi_getcontent( resource $ch )
如果CURLOPT_RETURNTRANSFER作为一个选项被设置到一个具体的句柄,那么这个函数将会以字符串的形式返回那个cURL句柄获取的内容。
关于怎么在PHP中利用CURL获取返回值问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
-
php 引入 include 的返回值
2021-04-26 21:18:10php有一个include,顾名思义,就是用来包含文件的。相应的还有require,以及两个带once的。不知道大家有没有注意过include的 返回值。通常情况下,包含成功返回1,包含失败返回false。但是,如果被包含文件中用...php有一个include,顾名思义,就是用来包含文件的。相应的还有require,以及两个带once的。不知道大家有没有注意过include的 返回值。通常情况下,包含成功返回1,包含失败返回false。但是,如果被包含文件中用return返回,那么这个值就是return的值。比如:
1.php
$ret = include '2.php';
echo $ret; //输出wakaka
?>
2.php
return 'wakaka';
?>
从1.php的输出就可以看到,这里include的返回值就是2.php中return的那个'wakaka'。
这个特性有什么用呢? 我是利用它来方便地使用php文件来做配置。比如,一个配置文件可以这么写:
config.php
return array(
'db'=>array(
'host' => 'localhost',
'user' => 'root',
'password' => 'wakaka',
'name' => 'test',
'encoding' => 'utf8'
)
);
?>
载入的时候,只需要$conf = include 'config.php';就可以了。 Thinkphp 的配置文件就是这样返回的。
-
php 函数返回值 return
2021-03-24 08:15:374.函数返回值如果在一个函数中调用return()语句,将立即结束此函数的执行,并将它的参数作为函数的值返回。return()会终止eval()语句或者脚本文件的执行。如果在全局范围中调用,则当前脚本文件中止运行。如果当前... -
ajax获取不到php返回值
2021-03-23 19:31:14ajax获取不到php返回值的解决办法:1、首先检查ajax是否是异步,异步不可以直接return返回结果。/*常见错误示例 直接在 ajax 里面return 结果*/function demo(){$.ajax({url : 'test.do',type : "post",data : {},... -
Java通过反射获取方法的返回值的类型以及参数化的实际类型(下篇)
2020-07-28 17:29:57笔者最近在学习mybatis的框架,在写源码的时候遇到了一些关于通过反射获取返回值类型的实际参数类型的问题,并且已经写有一篇关于简单的返回值类型的获取,诸如public User getOne(int id);获取返回值的类型是User,... -
如何在$ .ajax(类型get)调用中获取方法的返回值? - javascript
2021-08-06 10:38:35- javascript 我在main.js文件中编写了许多使用ajax调用PHP函数的函数。问题在于,任何人都可以通过查看页面源代码来查看我的逻辑和内部称为php的网站的文件名。我应该如何防止人们查看我的JavaScript文件? 参考... -
cmd获取python返回值
2020-12-03 09:23:46修改Apache配置文件:httpd.conf #LoadMoule rewrite_module modules/mod_rewrite.so --去掉注释 2.查找httpd.conf 中的 ...关于freemaker的一点使用技巧在做国泰君安2016年中秋送电影票活动中,需要做这样一个手机... -
php curl_exec()函数 CURL获取返回值的方法
2021-03-04 09:53:47在CURL中有一个参数 CURLOPT_RETURNTRANSFER :这个参数是将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。例如:CURLOPT_RETURNTRANSFER参数的作用是把CRUL获取的内容赋值到变量。它默认是 0 直接返回... -
如何在curl php请求中获取数组值作为返回值?
2021-04-24 00:21:50我正在访问的远程文件具有以下代码:test.php的:$test->getCall();public function getCall() {$var = array('fname'=>'jack','lname'=>'williams');return $var;}我正在拨打电话的脚本.r... -
php获取POST数据的三种方法实例详解
2020-12-19 10:02:34php获取POST数据的三种方法 方法一,$_POST $_POST或$_REQUEST存放的是PHP以key=>value的形式格式化以后的数据。 方法二,使用file_get_contents(“php://input”) 对于未指定 Content-Type 的POST数据,则... -
xpath无法获取值、返回值为[]或者{}的问题解决
2021-04-23 10:45:11第一种情况:page= etree.parse('text.html') #text.html为一个html文件page = etree.HTML(html) #heml为一个字符串一开始通过使用字符串进行解析,通过page.xpath()进行元素获取,找不到值,后面发现这个type是... -
【jQuery】使用jquery.form.js,获取提交表单返回值
2020-04-15 23:50:49实现 html 中提交表单并实现不跳转页面处理返回值 jQuery表单库(jquery.form.js库)以jQuery为基础,用于处理表单AJAX提交,使得表单AJAX提交简单、容易,且能完整控制提交过程和处理结果,不需要任何特殊标签辅助... -
php使用curl实现get和post数据请求,并获取返回值
2021-04-08 09:31:35/** get请求* url:访问路径* */public static function curl_get($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);//参数为1表示传输数据,为0表示直接输出显示。...//参数为0表示不带头文件,为1表... -
js获取php的返回结果问题
2021-03-23 12:00:05$.ajax({url: '/ajax.php',type: 'POST',contentType: 'application/json; charset=UTF-8',crossDomain: true,dataType: 'json',data: JSON.stringify(data),success: function(response) {alert(response);console.... -
[phpcms二次开发]通过include获取配置文件的返回值
2019-09-28 14:54:20如果include的文件包含完整的php标记,且有return返回值,则include的返回值为该值,否则视include是否成功返回TRUE or FALSE 转载于:https://www.cnblogs.com/yamadie/archive/2012/11/08/2760843.ht... -
iframe跨域上传文件后js无法获取返回值的问题
2019-03-28 18:03:15这个插件其实是创建了一个iframe来上传文件,在上传完成后刷新该iframe框,通过$('iframe').find('body').text()方式获取返回值。 但是当上传地址跨域的时候,这个iframe刷新的是另一个域的地址,js无法跨域获取该... -
php返回值return语句用法详解
2021-03-24 08:16:11在编程语言中,一个函数或一个方法一般都... 在PHP中,函数都有返回值,分两种情况,使用return语句明确的返回和没有return语句返回NULL。return语句当使用return语句时,PHP给用户自定义的函数返回指定类型的变量。... -
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2020-12-19 16:43:19本文实例分析了php文件操作的方法。分享给大家供大家参考,具体如下: 一、删除文件 unlink() 语法: int unlink(string filename); 返回值: 整数 函数种类: 文件存取。如: unlink("tmp/test.... -
php cli模式下获取参数的方法
2020-12-20 02:45:53PHP在cli模式下接收参数有两种方法 1.使用argv数组 2.使用getopt方法 1.使用argv数组 ... <?...print_r($argv);...可以看到argv[0]为当前执行的php文件名称,而argv[1]~argv[3]则是传递的参数的值 argv[1 -
将返回值从php传递给js
2021-03-25 11:39:11我有3个文件main.php,action.js和ajax.php,我在javascript文件中通过ajax调用成功地将某些div单击的内容从main.php更改为ajax.php的内容。看起来像这样:var value = $(this).attr("id");$.ajax({type: 'get',url:... -
PHP如何获取临时文件的目录路径
2021-03-23 11:52:01PHP获取临时文件的目录路径,可以通过tempnam()和sys_get_temp_dir()函数来实现。下面我们结合简单的代码示例,给大家介绍PHP获取临时文件的目录路径的方法。代码示例如下:... -
python执行系统命令后获取返回值的几种方式集合
2020-12-03 17:30:38今天小编就为大家分享一篇python执行系统命令后获取返回值的几种方式集合,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧第一种情况os.system('ps aux')执行系统命令,没有返回值第二种情况...