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