是否可以使用 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