今天在执行一个 svn update 命令时,用 exec 方法一直没有返回结果,但是直接在 Linux 中执行命令是可以正常操作的。一顿操作之后,在命令后面加上 2>&1。 看到了返回的错误信息,是目录权限问题。这时候又是直接把 svn 目录直接从 root 改成了 nobody 用户和用户组,然后发现还是不行,后来发现 nobody 用户没有启用,在 /etc/passwd 目录下启用 nobody 用户之后,也还是不行。然后开始思考查看下 PHP 执行的时候到底是用哪个用户去执行的,然后就用 echo shell_exec(“id -a”); 来查看了一下。然后发现是用 Apache 用户执行的。最后吧 svn 目录改成了 Apache 用户和用户组,最后命令正常执行了。
说明遇到问题不能想当然直接乱改,要思考问题的原因,找到逻辑之后再去改,不然改来改去,最后自己都懵逼了。