今天在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服务器在操作系统级别执行该命令。
原文:https://www.cnblogs.com/ZhYQ-Note/p/13435204.html