是否可以使用PHP确定wget
二进制文件的位置?我试图为我的用户创建一个软编码的wget
cron命令。我知道在大多数环境中,wget
位置已经包含在PATH
中,但是cron并不总是共享相同的环境。为了安全起见,我想使用像/usr/bin/wget
这样的绝对路径。
是否有类似于PHP_BINDIR
的常量?我不能假设wget
与PHP在同一个位置,对吧?还有其他想法吗?
感谢您的帮助!
答案 0 :(得分:3)
这就是为什么我们env
/usr/bin
,保证在/usr/bin/env wget [options] [url]
,所以你所要做的就是:
wget
如果运行PHP脚本的用户具有执行env
的正确权限,将下载的文件写入指定的路径等等,那么你很高兴,但是那个' sa不同的事情
另一方面,因为您已使用 crontab 标记标记了此问题,请确保脚本顶部的hashbang也使用#!/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."
...
应该产生类似的东西:
{{1}}
在我的机器上试过,没有任何问题
答案 1 :(得分:0)
不是php命令,而是unix命令:which
。
示例:
~ $ which wget
/usr/bin/wget