作为命令语言,它交互式地解释和执行用户输入命令或自动解释和执行预定义的命令;作为编程语言,它定义了各种变量和参数,并提供了许多高级语言控制结构,包括循环和分支。
PHP经过长时间的发展,很多用户都很了解PHP,我在这里发表个人的理解,探讨和讨论的人。在大多数情况下,我使用exec()命令和数据来处理一切的阵列,或使用shell_exec()简单的命令,尤其是当你不在乎结果,如果你只需要返回一个PHP脚本,我会使用passthru()。通常,我使用不同的功能在不同的场合,有时是可互换的。

It all depends on my mood and what I want to achieve.Another question that you may ask is what their strengths are.If you don't have a clue, or a project is very suitable for using the shell command, but you don't know how to use it, then I'm here to provide some insights.If you are writing an application that provides various backup or file transfer functions, you can choose to run Rsync supported PHP shell script using one of shell_exec () or other commands provided here.You can write the PHP shell script to include the necessary Rsync commands, and then use passthru () to execute it according to the user's command or the cron job.

例如,用户在应用程序中有适当的权限(如管理员的权限)。他想从一个服务器发送50个PDF文件到另一个。然后,用户需要点击传输应用,到正确位置导航,选择PDF文件,您需要发送,并点击提交。在这个过程中,形式应该有一个PHP脚本,它使用返回选项变运行rsync脚本通过passthru(),所以,你知道是否有问题,如下图所示。

清单1。例如PHP脚本运行rsync脚本通过passthru()
复制代码代码如下所示:
< PHP
Passthru('xfer_rsync。SH,则美元);
如果($中!= 0){
/我们有问题!
在这里添加错误代码
其他{ }
/我们没事
将/重定向到其他页面
}
>


如果你的应用需要的进程列表或文件,或关于这些过程的数据或文件,你可以使用一个命令总结来实现这一目标。例如,一个简单的grep命令可以帮助你找到一个文件符合特定搜索条件。如果你用它连同exec()命令,可以将结果保存在一个数组,它允许你建立一个HTML表格或表格,并允许您运行其他命令。

到目前为止,我已经讨论了由用户PHP生成的事件运行相应的脚本,用户只要按下按钮或点击链接,你也可以使用独立的PHP脚本使用cron或其他安排实现了一些有趣的结果。例如,如果你有一个备份脚本,您可以运行它通过cron或包装的PHP脚本。

为什么这是多余的这是多余的,不是吗不是这样的。你需要考虑一下。你可以运行备份脚本通过exec()或passthru(),并执行一些动作,根据返回的代码。如果出现错误,你可以记录在错误日志或数据库,或发送警告电子邮件。如果剧本是成功的,你可以把原来的输出到数据库。例如,rsync有一个详尽的(罗嗦)模式,为后续的诊断是非常有用的。

安全

这里是一个简短的讨论安全:如果你接受用户的输入,信息传递到外壳,最好过滤用户输入。删除你认为是有害的,不允许的,比如sudo(运行作为一个超级用户)或rm(删除)。事实上,你可能不希望用户发送打开请求,而是让他们从列表中选择。

例如,你运行一个转移程序接收文件列表作为参数,你应该列出所有的文件,通过一系列的复选框,用户可以选择和取消选择文件并点击提交激活rsync脚本,用户可以不输入文件本身或使用正则表达式。

本文从两个方面介绍了PHP shell脚本的使用,希望能对您有所帮助。