2015-04-04 128 views
1

我一直在試圖讓這個shell_exec()命令在我的PHP腳本中工作,但它不會不會返回任何內容。我已經從命令行成功運行它並獲得預期的結果。PHP shell_exec不能使用grep和管道

有人可以幫忙調試嗎?

$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/>"; 

很多謝謝!

+0

使用'getcwd()'檢查當前工作目錄。我運行你的代碼,它運行良好。 – 2015-04-04 12:22:56

+0

感謝Bart,現在可以工作。 :) – 2015-04-04 12:36:02

回答

0

通過

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

感謝賽勒斯,完美的作品。 – 2015-04-04 12:48:51

1

exec()更換

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

已被禁用出於安全原因,您的服務器上時,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服務器 並重試。