cron — найти местоположение wget программно с помощью PHP?

Можно ли определить, где wget бинарный находится с помощью PHP? Я пытаюсь создать мягкий код wget Команда cron для моих пользователей. Я знаю, что в большинстве сред wget местоположение уже будет включено в PATH но cron не всегда использует одну и ту же среду. Чтобы не рисковать, я хочу использовать абсолютный путь, как /usr/bin/wget,

Есть ли константа, похожая на PHP_BINDIR? Я не могу предположить wget будет в том же месте, что и PHP, верно? Есть другие идеи?

Спасибо за любую помощь!

0

Решение

Вот почему мы имеем env, который гарантированно будет в /usr/binтак что все, что вам нужно сделать, это:

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

И все готово, если пользователь, выполняющий скрипт PHP, имеет правильные разрешения для выполнения. wgetзапишите скачанные файлы по указанному пути и т.д … но это другое дело

С другой стороны, потому что вы пометили этот вопрос кронтаб тег, убедитесь, что 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."...

Пробовал на моей машине, никаких проблем вообще

3

Другие решения

Это не команда php, а команда unix: which,

Пример :

~ $ which wget
/usr/bin/wget
0

По вопросам рекламы [email protected]