検索

php中exec函数的用法
写了个php脚本,就是用exec运行某个应用程序,代码如下:

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php $return_array = array();     $sendmsg ="C:\wamp\www\FlowServer\sendmsg\test\bin\Debug\test.exe";     exec($sendmsg,$return_array);     var_dump($return_array);   ?>

可是在浏览器中访问此php页面时没有任何反应,$return_array显示为空。我若在cmd命令行中输入C:\wamp\www\FlowServer\sendmsg\test\bin\Debug\test.exe,则这个程序能正常运行。这是为什么?

------解决方案--------------------
http://topic.csdn.net/u/20070627/10/39bd28ed-05e7-41b1-984d-f205ee4672ac.html
------解决方案--------------------
使用PHP执行系统外部命令的四种方法
2010年4月14日 阅读数:3,063 views
阅读评论 发表评论

  在PHP文件函数关于如何删除文件实例教程中,我提到有两种方法,一种使用unlink函数删除文件,还有一种是通过system函数调用系统命令来执行删除文件命令,其实除了system函数,PHP执行命令的方法还有很多种,下面介绍在PHP网站开发中最常用的四种执行命令的方法。

准备工作

  出于安全性考虑,在通常情况下虚拟主机、XAMPP、DedeAMPZ等PHP运行环境都是禁止调用系统外部命令的。所以当你需要使用PHP执行命令的函数调用系统外部命令时,你需要确保PHP运行环境支持PHP执行命令的函数。

  如果你使用的是XAMPP、DedeAMPZ,一般默认是禁止运行PHP执行命令的函数的,你可以在php.ini配置文件中disable_functions一项中去除你想要使用的函数,然后重启apache即可。我使用的是DedeAMPZ,所以我去除了exec()、passthru()、system()、shell_exec()这四个函数。PHP运行环境如何配置?

  如果你的PHP运行环境是自行配置的,默认php.ini配置文件中是不禁止你调用执行外部命令的函数的,当然出于安全考虑,你还是应该禁止调用一部分执行系统外部命令的函数,找到disable_functions,配置如下:

disable_functions = exec,system,passthru,shell_exec

即禁止执行这三个函数,每个函数之间以逗号分隔。PHP.INI如何配置?

  如果你使用的是虚拟主机,你需要询问主机提供方PHP环境是否支持使用PHP执行命令的函数。

其他说明:

  由于我使用的是Windows系统,所以实例教程中以调用windows系统外部命令为主,如你熟悉linux操作,你不妨在linux系统下尝试执行linux命令。

PHP执行命令的四种方法

方法一:使用exec函数执行系统外部命令

原型:function exec(string $command,array[optional] $output,int[optional] $return_value)
1
2
3
4


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函数可用,否则是无法使用这种反撇号执行系统外部命令的。

安全性说明

  当你使用这些函数执行命令时,如果是根据用户提交数据作为执行命令的话,你需要考虑系统安全性,可以使用escapeshellcmd()和escapeshellarg()函数阻止用户恶意在系统上执行命令,escapeshellcmd()针对的是执行的系统命令,而escapeshellarg()针对的是执行系统命令的参数。这两个参数有点类似addslashes()的功能。

其他说明

  当执行命令的返回结果非常庞大时,可以需要考虑将返回结果输出至其他文件,再另行读取文件,这样可以显著提高程序执行的效率。即
1
2
3


system("dir > leapsoulcn.txt");
?>

说明:这里system执行命令时并不将结果直接输出至游览器而是输出至指定目录下的文件中,显著提高了程序执行的效率。

  至此PHP执行命令最常用的四种方法exec()、passthru()、system()、shell_exec()及它们之间的区别就介绍完了,在PHP网站开发中根据情况合理利用这些函数执行系统外部命令是非常有用的。

  注:PHP网站开发教程-leapsoul.cn版权所有,转载时请以链接形式注明原始出处及本声明,谢谢。


------解决方案--------------------
PHP code
 $sendmsg ="c:\\wamp\\www\\FlowServer\\sendmsg\\test\bin\\Debug\\test.exe";<div class="clear">
                 
              
              
        
            </div>
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン