PHP exec 函数使用指南与示例Demo

exec() 函数用来执行一个命令行或者外部脚本程序,在 PHP 中调用还是非常方便的,我们使用该函数基本是在 Linux。
新手在使用过程中,很容易出现执行不了,或者执行报错找不到错误原因的问题,本篇文章都有介绍

一、开启 exec() 函数

exec()函数是默认被禁用的,要使用这个函数必须先开启。

  1. 找到 php.ini配置文件
  2. 首先是要关掉安全模式
safe_mode = off
  1. 然后在看看 禁用函数列表
disable_functions = proc_open, popen, exec, system, shell_exec, passthru

这里要把exec去掉,重启 apache 就OK了。

二、exec() 函数基本用法

exec(string $command, array &$output, int &$return_var)
  • $command:表示要执行的命令。
  • $output:如果提供了 output参数, 那么会用命令执行的输出填充此数组, 每行输出填充数组中的一个元素。数组中的数据不包含行尾的空白字符,例如 \n字符。 请注意,如果数组中已经包含了部分元素,exec()函数会在数组末尾追加内容。如果你不想在数组末尾进行追加, 请在传入 exec()函数之前 对数组使用 unset()函数进行重置。
  • $return_var:如果同时提供 output 和 return_var 参数, 命令执行后的返回状态会被写入到此变量。

一般来说,我们只要写第一个参数,也就是 $command

三、exec() 函数使用示例

因为 exec()函数主要用在执行外部程序,我们这里就以 Linux 系统为例子,做几个demo教程:

1. 执行命令并查看结果

<?php
	$command = "ls /etc";   //ls是linux下的查目录,文件的命令
	exec($command, $array); //执行命令
	print_r($array);        //打印结果
?>

返回的结果如下:

[root@krlcgcms01 shell]# php ./exec.php
Array
(
[0] => 1001.log
[1] => 10.log
[2] => 10.tar.gz
[3] => aaa.tar.gz
[4] => mytest
[5] => test1101
[6] => test1102
[7] => weblog_2010_09
)

2. 查看已禁用函数

本命令用来查看 exec 函数禁用状态,运行不了的大部分原因都是函数被禁用导致的,如果采用命令行运行的话,要注意网页的运行环境和系统默认的 php 环境变量是否一致。

<?php
	echo "Disable Functions: " . ini_get('disable_functions') . "\n";
?>

3. 执行命令并记录日志

try{
	exec($command . ' >> ' . $logDir . date("Y-m-d") . '.log 2>&1 &');
} catch (Exception $e) {
	Log::record($e->getMessage());
}
发布了87 篇原创文章 · 获赞 93 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/zhichaosong/article/details/102552905