为什么你更喜欢exec()在php中不使用bash命令?
我不考虑可移植性问题(我肯定不会将其移植到Windows上运行).这只是编写脚本的好方法.
一方面:
cat file | grep string > new_file.这需要花费更多的时间和精力在php中完成.另一方面:
exec()在大多数情况下,调用unix命令可能效率低下.产生一个单独的过程是非常昂贵的.不是在谈论在apache下运行的脚本,这甚至比从命令行脚本产生的效率低得多.exec()是一种潜在的安全威胁.在大多数情况下,用户数据可以使用escapeshellarg(),但仍然是一个需要考虑的问题.Omr*_*dan 14
避免这种情况的另一个原因是,创建这样的安全漏洞要容易得多.例如,如果用户设法潜行
`rm -rf /`
Run Code Online (Sandbox Code Playgroud)
(使用反引号)进入输入,你的bash代码可能实际上是服务器的核心(或者至少是核武器).
这大多是宗教事物,大多数开发人员都试图编写始终有效的代码.依赖外部命令是在某些系统上(甚至在相同的操作系统上)使代码失败的可靠方法.
And*_*lam 10
你想要实现什么目标?PHP具有基于正则表达式的函数,可以从文件中找到所需内容.是的,您可能需要大约5行代码来完成它,但它可能不会更高或更低效.
反对在PHP中使用exec()的主要原因是为了安全.如果您信任您的用户在bash中向您发出exec()命令,他们可以轻松地运行恶意命令,例如安装和启动后门特洛伊木马程序,删除文件等.
只要你小心(使用shell转义命令来清理用户输入,限制Apache用户权限等),它应该不是问题.我现在只是在一个完整的平台上工作,它依赖于前端执行shell进程,因为C++比PHP快得多,所以我编写了很多后端逻辑作为shell应用程序并保留PHP对于前端逻辑.