我可以使用CMD同时执行两个命令:
command1 | command2
在PHP中,我假设它应该工作,但它没有:
Shell_exec("command1 | command2 ");
我该怎么解决?
bhmjp9jg1#
尝试添加大括号:
shell_exec("(command1 | command2)");
PHP文档中有一个注解,它使用popen执行一些I/O重定向。
popen
j1dl9f462#
shell_exec()
注意:PHP在 * 安全模式 * 下运行**时,关闭此功能。
system()
注意:开启 * 安全模式 * 时,只能执行safe_mode_exec_dir内的文件。出于实际原因,目前不允许在可执行文件的路径中包含..组件。警告:启用 * 安全模式 * 后,命令字符串将使用escapeshellcmd()进行转义。因此,echo y | echo x变为echo y \| echo x。
safe_mode_exec_dir
..
escapeshellcmd()
echo y | echo x
echo y \| echo x
pu82cl6c3#
尝试禁用安全模式。安全模式将在PHP 6.0.0中删除。已从Php.ini中删除
ippsafx74#
这个答案对我帮助很大。尝试添加括号:
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=##)");
o8x7eapl5#
只需将其 Package 在另一个命令中:
shell_exec( 'cmd /c "command1 | command2"' );
vwoqyblh6#
您可以在命令中尝试使用;而不是|。引用php.net上的这条评论。
;
|
6条答案
按热度按时间bhmjp9jg1#
尝试添加大括号:
PHP文档中有一个注解,它使用
popen
执行一些I/O重定向。j1dl9f462#
尝试disabling safe mode。
shell_exec()
:注意:PHP在 * 安全模式 * 下运行**时,关闭此功能。
system()
:注意:开启 * 安全模式 * 时,只能执行
safe_mode_exec_dir
内的文件。出于实际原因,目前不允许在可执行文件的路径中包含..
组件。警告:启用 * 安全模式 * 后,命令字符串将使用
escapeshellcmd()
进行转义。因此,echo y | echo x
变为echo y \| echo x
。pu82cl6c3#
尝试禁用安全模式。
安全模式将在PHP 6.0.0中删除。
已从Php.ini中删除
ippsafx74#
这个答案对我帮助很大。尝试添加括号:
PHP文档中有一条注解,它使用popen执行一些I/O重定向:
o8x7eapl5#
只需将其 Package 在另一个命令中:
vwoqyblh6#
您可以在命令中尝试使用
;
而不是|
。引用php.net上的这条评论。