8

我可以使用 CMD 同时执行两个命令:

command1 | command2

在 PHP 中,我认为它应该可以工作,但它没有:

Shell_exec("command1 | command2 ");

我如何解决它?

4

5 回答 5

7

尝试添加大括号:

shell_exec("(command1 | command2)");

PHP 文档中有一条注释popen,它使用.

于 2013-05-24T11:34:33.887 回答
2

尝试禁用安全模式


对于shell_exec()

注意:当 PHP 在安全模式下运行时,该功能被禁用


对于system()

注意:启用安全模式后,您只能执行safe_mode_exec_dir. 出于实际原因,目前不允许..在可执行文件的路径中包含组件。

警告:启用安全模式后,命令字符串使用escapeshellcmd(). 因此,echo y | echo x变为echo y \| echo x

于 2017-08-12T08:50:21.397 回答
0

尝试禁用安全模式。

安全模式将在 PHP 6.0.0 中移除。

它已从 Php.ini 中删除

于 2021-10-19T05:09:03.037 回答
0

这个答案对我帮助很大。尝试添加括号:

shell_exec("(command1 | command2)");

PHP 文档中有一条注释使用 popen 进行一些 I/O 重定向:

shell_exec("(openssl s_client -servername {$domain_name} -connect {$domain_name}:443 2>/dev/null | openssl x509 -noout -enddate | grep notAfter | sed -e s#notAfter=##)");
于 2021-10-19T05:40:21.973 回答
-6

您可以尝试;而不是|在您的命令中。在 php.net 上引用此评论。

于 2013-05-24T11:30:43.753 回答