Php exec 命令在 Windows 上不起作用,在命令行上起作用
我试图通过 PHP 的 exec 函数执行以下命令:
D:\\pstill -F a4 -2 -c -c -c -c -g -i -t -K -d 700 -a 4 -m XimgAsCMYK -m Xspot -m Xoverprint -o D:\\outputfile.pdf D:\\new.jpg
它不会生成任何输出。但是,如果我直接将命令粘贴到命令行上,那么它就可以工作...
注意:直接在命令行上运行时需要一些时间才能完成。
I am trying to execute the following command via PHP's exec
function:
D:\\pstill -F a4 -2 -c -c -c -c -g -i -t -K -d 700 -a 4 -m XimgAsCMYK -m Xspot -m Xoverprint -o D:\\outputfile.pdf D:\\new.jpg
It doesn't generate any output. But if I directly paste the command on the command line then it works...
Note: it takes a bit of time to complete when run directly on command line.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我建议在这里使用 shell_exec 而不是 exec 函数。 shell_exec 通过适当的 shell(WIndows / Unix 等)执行命令,并将完整的输出作为字符串返回给您。
I would suggest using shell_exec instead of exec function here. shell_exec executes command via appropriate shell (WIndows / Unix etc) and returns the complete output as a string to you.
如果您的命令是这样的:
PHP 转义反斜杠,那么到达 shell 的命令是
... D:\outputfile.pdf D:\input.jpg
。您必须对反斜杠进行两次转义:一次用于 PHP,一次用于 shell。If your command is this:
PHP escapes the backslashes, so the command that reaches the shell is
... D:\outputfile.pdf D:\input.jpg
. You have to double-escape the backslashes: once for PHP and once for the shell.对我来说,解决方案是
在终端窗口而不是服务中运行 apache。
请参阅此线程:
apache 服务 php exec 不工作
for me the solution was to
run apache in a terminal window instead of a service.
see this thread:
apache service php exec not working