如何使用管道(“|“)在PHP exec?

bfrts1fy  于 2023-05-27  发布在  PHP
关注(0)|答案(6)|浏览(123)

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

command1 | command2

在PHP中,我假设它应该工作,但它没有:

Shell_exec("command1 | command2 ");

我该怎么解决?

bhmjp9jg

bhmjp9jg1#

尝试添加大括号:

shell_exec("(command1 | command2)");

PHP文档中有一个注解,它使用popen执行一些I/O重定向。

j1dl9f46

j1dl9f462#

尝试disabling safe mode

shell_exec()

注意:PHP在 * 安全模式 * 下运行**时,关闭此功能。

system()

注意:开启 * 安全模式 * 时,只能执行safe_mode_exec_dir内的文件。出于实际原因,目前不允许在可执行文件的路径中包含..组件。
警告:启用 * 安全模式 * 后,命令字符串将使用escapeshellcmd()进行转义。因此,echo y | echo x变为echo y \| echo x

pu82cl6c

pu82cl6c3#

尝试禁用安全模式。
安全模式将在PHP 6.0.0中删除。
已从Php.ini中删除

ippsafx7

ippsafx74#

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

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=##)");
o8x7eapl

o8x7eapl5#

只需将其 Package 在另一个命令中:

shell_exec( 'cmd /c "command1 | command2"' );
vwoqyblh

vwoqyblh6#

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

相关问题