• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

教你玩转PHP的exec()函数用法

php 搞代码 4年前 (2022-01-20) 23次浏览 已收录 0个评论

本篇文章给大家介绍一下如何玩转PHP的exec()函数用法有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP中提供了几个调用linux命令的函数,exec、system、passthru,函数使用请参考手册,这里不具体介绍。下面我以exec函数为例具体介绍:

比如LINUX中修改服务器时间命令是 /bin/date -s '2010-05-28 13:10',我们通过php函数exec调用这个命令执行修改时间exec("sudo /bin/date -s '2010-05-28 13:10'",$out,$status);其中$out是输出值,$status是返回值0或1,如果返回0则执行成功,返回1则执行失败。要通过PHP成功执行这个命令(PHP运行用户非root)需要检查以下几点:

1、首先查看php运行用户,可以在web服务器配置文件中查看,或者运行

<?php echo shell_exec("id -a");?>

直接查看。比如我的运行用户是www,编辑/etc/sudoers文件

vi /etc/sudoers

这表示www用户运行的时候不用输入密码。接着看图片注释掉前面两个,删除圈着的环境变量LS_COLORS,其中Ubuntu中是没有这几个的,这一步可省略,其他Redhat、Fedora、Centos这几个都是需要这么做的。

2、查看php.ini中配置是否打开安全模式,主要是以下三个地方

safe_mode =  (这个如果为off下面两个就不用管了)  
 disable_functions =   
 safe_mode_exec_dir=

PHP 执行系统外部命令 system() exec() passthru()

本文来源gaodai#ma#com搞@@代~&码*网/搞gaodaima代码PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功倍。
区别:

system() 输出并返回最后一行shell结果。

exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。

passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:

都可以获得命令执行的状态码

//system('dir');
// exec ('dir');
// passthru ('dir');
// echo `dir`;

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:教你玩转PHP的exec()函数用法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址