使用 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 标签标记了此问题,因此请确保脚本顶部的哈希爆炸也使用 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