我尝试将exec()
与'whoami'
一起使用来检查它是否有效并且我得到了
nt authority\system
现在我需要使用.exe
通过php
函数运行参数exec()
。
我在命令提示符中尝试了这个,它实际上运行了带有给定参数的程序。这是示例命令。
注意 exe文件获得3个输入(文件夹,file_name,report_file_nmae)
> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
但是当我从php
文件中运行此命令时:
exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml');
什么都没发生。这是我第一次使用exec()函数,所以我不熟悉它的细节。 出了什么问题?
我尝试使用:
\\
代替\
escapeshellarg()
""
没有运气
附录:
echo exec($command) // echos < .... why?
或
exec($command, $output);
print_r($output); // Array()
我甚至将文件的权限更改为对所有用户的完全控制权。
如果我从command prompt
调用该程序,我可以看到时钟旁边出现的图标。
但是来自php
的同一个电话甚至都不会调用该程序。
修改
即使exec('notepad.exe');
无效。可能需要使用php
配置完成某些事情吗?
答案 0 :(得分:77)
我已经说过我是exec()
函数的新手了。在做了一些挖掘之后,我遇到了2>&1
,需要在exec()
的命令末尾添加。{/ p>
感谢@mattosmat
在评论中指出它。我没有立刻尝试这个,因为你说它是Linux命令,我在Windows上。
所以,我发现,该命令实际上是在后端执行的。这就是我无法看到它实际运行的原因,我期待这种情况发生。
对于所有有类似问题的人,我的建议是使用该命令。 它会指出所有错误,并告诉您有关执行的信息/详细信息。
exec('some_command 2>&1', $output);
print_r($output); // to see the response to your command
感谢所有帮助人员,我很感激;)
答案 1 :(得分:0)
您也可以尝试提供您尝试运行的二进制文件的完整路径。这在尝试使用ImageMagick
时解决了我的问题。