php执行exec外部程序失败,php在服务器执行exec命令失败的解决方法

php在服务器执行exec命令失败的解决方法

前言:本文针对windows php环境,linux系统不在讨论范畴。

出于安全的原因,服务器是不允许php或者其他语言执行exec命令的,当你有特殊需要php在服务器执行exec命令时,你需要设置两个地方,不然就无法执行成功。

1、修改php.ini

找到php配置文件php.ini,如果是用星外php自动安装程序配置php环境,这个文件就在C:\WINDOWS\这个目录里。

在文件里搜索“disable_functions”,找到它后把“exec”、“shell_exec”去掉,然后保存文件。

2a72ed38585deda664eb04e06ac52dc7.png

2、修改cmd.exe文件属性

进入C:\WINDOWS\system32,找到cmd.exe这个文件,右键->属性,在“安全”设置里添加Internet 来宾账户,也就是IUSR_******那个账户,然后赋予“读取与运行”、“读取”的权限。

这样设置完成后,php就可以在服务器执行exec命令了。

时间: 2012-02-29

exec 或者 system 都可以调用cmd 的命令 直接上代码: 复制代码 代码如下: <?php /** 打开windows的计算器 */ exec('start C:WindowsSystem32calc.exe'); /** php生成windows的批处理文件后,再执行这个批处理文件*/ $filename = 't.bat'; $somecontent = 'C: '; $somecontent .= 'cd "C:/Program Files/MySQL-Front&quo

区别: system() 输出并返回最后一行shell结果. exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面. passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上. 相同点:都可以获得命令执行的状态码 demo: 复制代码 代码如下: //system('dir'); // exec ('dir'); // passthru ('dir'); // echo `dir`; PHP作为一种服务器端的脚本语言,象编写简单,或者

复制代码 代码如下: //获取电脑的CPU信息 function OnlyU(){ $a = ''; $b = array(); if(function_exists('exec')){ if(mailto:!@exec( /all",$b)){ return false; } }elseif(function_exists('system')){ ob_start(); if(mailto:!@system( /all")){ return false; }else{ } $b =

使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此.如果使用了被污染数据,命令注入漏洞就产生了.exec()是用于执行shell命令的函数.它返回执行并返回命令输出的最后一行,但你可以指定一个数组作为第二个参数,这样输出的每一行都会作为一个元素存入数组.使用方式如下: 复制代码 代码如下: <?php $last = exec('ls', $output, $return);print_r($output);echo "Return [$return]&quo

php的内置函数exec,system都可以调用系统命令(shell命令),当然还有passthru,escapeshellcmd等函数. 在很多时候利用php的exec,system等函数调用系统命令可以帮助我们更好更快的完成工作.比如前二天笔者在批量处理.rar文件时exec就帮我了大忙了. 今天整理一下常用的调用系统函数发出来和大家分享经验. 注意:要想使用这二个函数php.ini中的安全模式必须关闭,要不然为了安全起见php是不让调用系统命令的. 先看一下php手册对这二个函数的解释:

这两个函数都是执行Linux命令函数,不同的是获取返回结果不一样,exec只能获取最后一行数据,shell_execu则可以获取全部数据. 假如脚本路径下有如下文件: 复制代码 代码如下: -bash-4.1# ll 总用量 12 -rw-rw-r--. 1 www web 133  7月 16 15:00 a.php -rw-r--r--. 1 lee web  59  2月 29 17:05 b.php -rw-r--r--. 1 lee web  81  3月  8 17:00 c.php

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

前言 做一个代码发布的系统,需要用到PHP的exec函数来执行Linux下的命令和git,svn命令,如何判断PHP的exec函数是否执行成功呢? 解决方案 写个PHP文件来做实验: exec函数第一个参数是执行的命令,第二个参数是执行的结果,第三个参数是执行的状态. <?php exec('ls', $log, $status); print_r($log); print_r($status); echo PHP_EOL; 执行这个php文件: 这里$log,$status输出结果如图. 但是

本文实例讲述了PHP中exec与system用法区别,分享给大家供大家参考之用.具体方法如下: 一般来说,在PHP中调用外部命令,可以用exec及system来实现: system() 原型:string system (string command [, int return_var]) system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果.第二个参数是可选的,用来得到命令执行后的状态码. 返回结果: 成功返回0,   失败(命令不存在等原因)   返回   非0值 ex

$.attr()和$.data()本质上属于 DOM属性 和 Jquery对象属性 的区别. Jquery对象属性和DOM属性 一个简单的例子

Jquery中.attr和.data的区别

fcac955ac5e0e79644be03c150c6d53f.png

本文实例讲述了mysql中left join设置条件在on与where时的用法区别.分享给大家供大家参考,具体如下: 一.首先我们准备两张表来进行测试. CREATE TABLE `a` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(32) DEFAULT '' COMMENT '名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET

本文实例分析了asp.net中virtual和abstract的区别,分享给大家供大家参考.具体分析如下: 一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法.那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法. 情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法.那么在对派生类实例的调用中,该虚方法使用的是派生重写的方

本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. public void save() { try { FileOutputStream outStream=this.openFileO

本文实例分析了PHP中addslashes与mysql_escape_string的区别.分享给大家供大家参考,具体如下: 1.在插入数据时两者的意义基本一样.区别只在于addslashes 在magic_quotes_sybase=on时将" '"转换成" ' '" 在magic_quotes_sybase=off时将" '"转换成"\ '" 而mysql_escape_string总是将" '"转换成&

本文实例讲述了python中引用与复制用法.分享给大家供大家参考.具体分析如下: 在python中,任何不可变对象是传值的,而可变对象是传引用的. 不管是向函数传递参数或者是任何形式的对象复制来说,不可变对象(比如整数,字符串)被真正复制,而可变对象只是复制了一个对他们的引用,即在内存中只有一份对象,而引用两份.   a=b 这样的赋值,就会创建对b的引用,对于象数字和字符串这样的不可变的对象,这种赋值实际是创建了b的一个副本 >>> a='hello' >>> b=a

本文实例讲述了python中sys.argv参数用法.分享给大家供大家参考.具体分析如下: 在学python的过程中,一直弄不明白sys.argv[]的意思,虽知道是表示命令行参数,但还是有些稀里糊涂的感觉. 今天又好好学习了一把,总算是大彻大悟了. Sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始,以下两个例子说明: 1.使用sys.argv[]的一简单实例 import sys,os os.system(sys.argv[1]) 这个例

本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 复制代码 代码如下: public class Person {     String name;     String Sex;     int age;     double Height;         public static void main(String arges[])     {         Person p=ne

1e9a1eac6a511608d16705689faf65d9.png

本文实例展示了C#程序设计中String与string的区别,对于C#初学者来说有很好的参考借鉴价值.具体如下: 一.区别分析: String:类,System.String string:类型,变量 两者本质上没有任何区别,都是System.String,string只是System.String的别名而已 唯一的区别在于如何按照代码约定的来写,如声明变量时使用小写string,使用System.String下方法时使用大写的String 二.示例代码如下: class Program { s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值