所以我正在使用Flyway并使用PHP exec()函数运行特定命令:
exec('/path/absolute/flyway info');
只要我指定绝对路径,这些命令就会起作用,但这可能会因它将要处理的机器而异。这就是为什么我想通过命令exec('which flyway')
使用一个确定绝对路径的变量。
问题是这会返回一个空值,即使我在shell中直接写它时我得到了所需的结果。我也尝试使用php交互式shell php -a
,如果我运行命令echo exec('which flyway')
,它也会返回所需的路径,当我直接在我的代码中编写它时,我得到NULL结果。
请注意,如果我想验证php(which php
)的绝对路径,我可以在shell,php -a或我的代码中执行此操作,并在所有三种情况下返回所需的结果。因此which flyway
命令是唯一一个在我的代码中具有null结果的命令。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
which
使用相同的路径变量,这些变量在没有绝对路径的情况下运行命令时使用。所以,要么你可以直接使用它们(因为它们在路径上),毕竟不需要which
,或者which
毕竟无法找到可执行文件。
此外,请记住,并非所有托管服务商都允许从PHP进程中任意运行。你不应该在这样的基础上构建你的应用程序