您更喜欢使用PHP执行系统命令的哪个函数?

时间:2009-09-01 04:21:31

标签: php operating-system

喜欢func("rm -rf /usr/local/)

你会用哪个'func'做到这一点?

3 个答案:

答案 0 :(得分:4)

这取决于你想要获得的东西。

如果要显示已执行的命令的输出,passthru可以解决问题:

  

应该使用此功能   当输出时的exec()或system()   从Unix命令是二进制数据   需要直接传回   到浏览器。这是一个常见的用途   是执行类似的东西   可以输出的pbmplus实用程序   图像流直接。

如果要将变量的输出作为整个字符串获取,可以使用shell_exec(与使用backtick operator相同):

  

通过shell执行命令并返回   完整输出为字符串

而且,如果你想逐行获取它,你将使用exec

  

如果输出参数存在,   然后指定的数组将是   充满了每一行输出   命令。尾随空白,如此   as \ n,不包含在此数组中。

最后,如果您需要更多控制权,您将使用proc_open - 请参阅有关该文档的文档;我觉得它有点棘手。


不过,在使用时:

  • 不要忘记您正在调用必须在主机上可用的程序
    • 这意味着如果您使用的是Linux命令,那么您的应用程序很可能无法在Windows上运行
  • 根据PHP的配置,可能只有几个命令可用;见safe_mode_exec_dir,关于那个
  • 使用这意味着启动另一个进程 - 可能对性能没有好处

所以,我只有在真的必要时才使用它们。

答案 1 :(得分:2)

你会使用PHP的exec function。其他选项包括systempassthrubacktick operator

答案 2 :(得分:0)

我个人认为proc_open是最好的方法。

http://php.net/proc_open

这使您可以更好地控制输入,输出,让您检查它的退出状态和STDOUT,这比系统调用的大多数其他命令更多。当命令退出时,它也不会占用系统。