deles 发表于 2018-12-21 06:54:35

PHP中exec、system等函数调用linux命令问题

先小说两句:今天研究了下PHP调用LINUX命令的功能,一开始怎么做都调用不成功,试了好久才终于成功了,所以发出来分享一下。下面我将详细介绍:
       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服务器配置文件中查看,或者运行


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

首先加上www用户www ALL=(ALL)   NOPASSWD:ALLhttp://blog.运维网.com/attachment/201006/201006031275562671937.jpg
这表示www用户运行的时候不用输入密码。接着看图片注释掉前面两个,删除圈着的环境变量LS_COLORS,其中Ubuntu中是没有这几个的,这一步可省略,其他Redhat、Fedora、Centos这几个都是需要这么做的。
http://blog.运维网.com/attachment/201006/201006031275562905843.jpg

   2、查看php.ini中配置是否打开安全模式,主要是以下三个地方
safe_mode =(这个如果为off下面两个就不用管了)
disable_functions =
safe_mode_exec_dir=


OVER,下面你就可以用exec调用linux命令执行了。




页: [1]
查看完整版本: PHP中exec、system等函数调用linux命令问题