web: php 执行第三方命令或者shell脚本

今天在web-php后端脚本中执行外部shell脚本,使用了相对路径 ./../xx.sh 但是执行不成功,后来换成了绝对路径执行成功了,

考虑到因为php脚本包含导致的,路径不对了,但是使用绝对路径又不太好

可以使用

$cmd = __DIR__ . "/../xx.sh";

参考:

https://kb.kutu66.com/php/post_11452405

从PHP执行外部命令的一些常见故障来自 shell:

  • 命令使用相对路径,但PHP是从任意位置启动的:

  • PHP和 shell 使用不同的用户凭据运行。 当PHP通过web服务器运行时,这种情况常常发生。

  • PHP和 shell 运行不同的命令。 很多人都会像 exec("foo $bar") 一样调用内容,甚至不检查 "foo $bar" 包含什么内容。

  • 未完成错误检查。 最简单的方法是捕获和打印标准输出。标准错误。状态代码,当然还有所有PHP错误消息,包括警告和通知。

  • 不允许web服务器在操作系统级别执行该命令。

    • 查看 se linux或者类似工具。

posted on 2020-08-04 19:00  ZhYQ_note  阅读(312)  评论(0编辑  收藏  举报

导航