加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

为什么我不应该使用php的unix命令?

发布时间:2020-12-13 17:50:37 所属栏目:PHP教程 来源:网络整理
导读:你为什么不想在php中通过exec()继续使用bash命令? 我不考虑可移植性问题(我肯定不会将其移植到Windows上运行).这只是编写脚本的好方法. 一方面: 我需要在php中编写更多行,然后在bash中完成相同的任务. 例如,当我需要过滤文件中的某些行时,我无法使用某些内
你为什么不想在php中通过exec()继续使用bash命令?

我不考虑可移植性问题(我肯定不会将其移植到Windows上运行).这只是编写脚本的好方法.

一方面:

>我需要在php中编写更多行,然后在bash中完成相同的任务.
例如,当我需要过滤文件中的某些行时,我无法使用某些内容而不是cat文件进行成像grep string>新文件.这需要花费更多的时间和精力在php中完成.
>我不想在出现问题时分析所有情况.我将向用户显示bash命令输出,因此他会知道究竟发生了什么.
>我不需要在文件系统函数周围编写另一个包装器并使用它.利用操作系统进行文件搜索,操作等更有效.

另一方面:

>在大多数情况下,使用exec()调用unix命令可能效率低下.产生一个单独的过程是非常昂贵的.不是在谈论在apache下运行的脚本,这甚至比从命令行脚本产生的效率低得多.
>有时它会变成’像黑魔法一样’和类似perl的脚本.虽然可以通过详细的评论来避免.
>也许我只是想在他们不应该的时候一起使用两种不同的工具.每个工具都有自己的应用程序,不应混合在一起.
>即使我确定用户不会尝试运行脚本也会出于恶意目的,使用exec()是一种潜在的安全威胁.在大多数情况下,用户数据可以使用escapeshellarg()进行转义,但这仍然是一个需要考虑的问题.

你想要实现什么目标? PHP具有基于正则表达式的函数,可以从文件中找到所需内容.是的,您可能需要大约5行代码来完成它,但它可能不会更高或更低效.

反对在PHP中使用exec()的主要原因是为了安全.如果您信任您的用户在bash中向您发出exec()命令,他们可以轻松地运行恶意命令,例如安装和启动后门特洛伊木马程序,删除文件等.

只要你小心(使用shell转义命令来清理用户输入,限制Apache用户权限等),它应该不是问题.我现在只是在一个完整的平台上工作,它依赖于前端执行shell进程,因为C比PHP快得多,所以我编写了很多后端逻辑作为shell应用程序并保留PHP对于前端逻辑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读