我可以使用 CMD 同时执行两个命令:
command1 | command2
在 PHP 中,我认为它应该可以工作,但它没有:
Shell_exec("command1 | command2 ");
我如何解决它?
shell_exec()
:注意:当 PHP 在安全模式下运行时,该功能被禁用。
system()
:注意:启用安全模式后,您只能执行
safe_mode_exec_dir
. 出于实际原因,目前不允许..
在可执行文件的路径中包含组件。警告:启用安全模式后,命令字符串使用
escapeshellcmd()
. 因此,echo y | echo x
变为echo y \| echo x
。
尝试禁用安全模式。
安全模式将在 PHP 6.0.0 中移除。
它已从 Php.ini 中删除
这个答案对我帮助很大。尝试添加括号:
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=##)");
您可以尝试;
而不是|
在您的命令中。在 php.net 上引用此评论。