使用 PHP 以编程方式查找 wget 位置?

Find wget Location Programmatically using PHP?

是否可以使用 PHP 确定 wget 二进制文件的位置?我正在尝试为我的用户创建一个软编码的 wget cron 命令。我知道在大多数环境中,wget 位置已经包含在 PATH 中,但 cron 并不总是共享相同的环境。为了安全起见,我想使用像 /usr/bin/wget.

这样的绝对路径

有没有类似PHP_BINDIR的常数?我不能假设 wget 将与 PHP 位于同一位置,对吗?还有其他想法吗?

感谢您的帮助!

这就是为什么我们有 env,它保证在 /usr/bin 中,所以您只需:

/usr/bin/env wget [options] [url]

如果用户 运行 PHP 脚本具有执行 wget、将下载的文件写入指定路径等的正确权限,那么你就可以开始了。 .. 但那是另一回事

另一方面,因为您已使用 crontab 标记标记此问题,请确保脚本顶部的 hashbang 也使用 env :

#!/usr/bin/env php
<?php
//your script here

然后,wget 将是可调用的(同样:如果环境变量和权限检查出来)简单明了:

#!/usr/bin/env php
<?php
exec('wget --help', $output);
var_dump($output);

应该产生像这样的东西:

array(172) {
  [0]=>
  string(51) "GNU Wget 1.15, a non-interactive network retriever."
  [1]=>
  string(32) "Usage: wget [OPTION]... [URL]..."
  [2]=>
  string(0) ""
  [3]=>
  string(72) "Mandatory arguments to long options are mandatory for short options too."
  ...

在我的机器上试过了,没有任何问题

不是php命令,而是unix命令:which

示例:

~ $ which wget
/usr/bin/wget