无法在 PHP 代码中 运行 shell (which) 命令

Cannot run shell (which) command in PHP code

所以我正在使用 Flyway,我 运行 使用 PHP exec() 函数的特定命令:

exec('/path/absolute/flyway info');

只要我指定了绝对路径,这些命令就可以工作,但这可能会有所不同,具体取决于它将在其上工作的机器。这就是为什么我想通过命令 exec('which flyway').

使用一个变量来确定绝对路径

问题是这个 returns 是一个空值,即使当我直接将它写入 shell 时我得到了想要的结果。我还尝试使用 php 交互式 shell php -a,如果我 运行 命令 echo exec('which flyway') 它也会 returns 所需的路径,尽管当我直接写在我的代码里,结果是NULL。

请注意,如果我想验证 php (which php) 的绝对路径,我可以在 shell、php -a 或我的代码,它 returns 在所有三种情况下都达到了预期的结果。所以 which flyway 命令是我的代码中唯一具有空结果的命令。

谁能帮我解决这个问题?

which 使用与 运行 没有绝对路径的命令时使用的相同路径变量。因此,要么您可以直接使用它们(因为它们在路径上)并且根本不需要 which,要么 which 毕竟无法找到可执行文件。

此外,请记住,并非所有托管商都允许 运行 从 PHP 进程中进行任意操作。你不应该在这样的基础上构建你的应用程序