PHP shell_exec无法使用grep和管道

时间:2015-04-04 12:08:33

标签: php grep shell-exec

我一直在努力让这个shell_exec()命令在我的PHP脚本中运行,但它不会一直返回。我已经从命令行成功运行它并获得预期的结果。

有人可以帮助调试吗?

$cmd ="/bin/grep \"John Smith\" -oPr --include=\"*.txt\" --exclude=\"title.txt\"|/usr/bin/sort|/usr/bin/uniq -c";
$rs = exec($cmd);
echo "Command: $cmd<br/>";
echo "[$rs]<br/>";

非常感谢!

2 个答案:

答案 0 :(得分:1)

exec()因服务器安全原因而被停用 当PHP以安全模式运行时,此功能被禁用。

在php中启用exec()

如果你在wamp服务器上工作

停止wamp服务器 打开php.ini文件检查disable_functions 通过在disable_functions

之前添加半冒号(;)来注释disable_functions

见下图所示

; disable_functions = glob, filter_list, chown, chmod, get_current_user, php_uname, putenv, getmyuid, getmypid, dl, ini_alter, ini_restore, exec, passthru, system, popen, pclose, leak, mysql_list_dbs, listen, chgrp, disk_total_space, disk_free_space, rmdir, tmpfile, link, shell_exec, proc_open, chroot, openlog, closelog, syslog, flock, socket_create_listen, socket_accept, socket_listen, sleep, umask, set_include_path, restore_include_path, symlink, imagerotate

保存文件和 现在再次启动wamp服务器 然后再试一次。

答案 1 :(得分:0)

替换

--exclude=\"title.txt\"|

通过

--exclude=\"title.txt\" <DIRECTORY_TO_SEARCH> |