是否使用PHP/CGI的shell命令不好的做法?

Yar*_*rin 4 php linux bash shell shell-exec

shell命令是否被视为合法的编程接口?具体来说,从PHP页面或CGI文件在Linux应用程序服务器上执行bash shell命令有什么问题吗?这是否会引入效率或安全问题?

谢谢

Dig*_*oss 6

有时可以,但......


有时它是解决问题的最佳方式.

但可能的问题是:

安全

如果您没有进行污点检查,请注意代码注入.

性能

运行shell命令将涉及分支 PHP解释器并执行复杂且相对较慢的系统调用.对于负载较轻的服务器,这是可以的,但不适用于繁忙的站点.

同步

确保以正确的顺序发生事情可以避免众所周知的问题,例如丢失更新,脏读错误摘要.虽然shell命令本身并不是导致这些问题的原因,但是异步运行它们会增加系统的复杂性,这会使分析变得更加困难.

  • 从内存使用的角度来看,使用外部ImageMagick也可能更优越,因为内部处理图像可能会破坏Web服务器的内存占用,事实上,我已经看到了这种情况.我确实说过"有时它是解决问题的最佳方法". (2认同)
  • 另一个例子是ffmpeg,不确定如何在没有shell的情况下生存 (2认同)