2015-01-13 2 views
0

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

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

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

+0

Обычно вы можете использовать команду типа ', которые wget', чтобы получить все доступные исполняемые файлы для Wget. – ariefbayu

ответ

3

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

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

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

с другой стороны, так как вы добавили этот вопрос с кронтабом тега, убедитесь, что hashbang в верхней части вашего скрипта использует env, тоже:

#!/usr/bin/env php 
<?php 
//your script here 

Затем wget будет отозвано (опять: если переменные окружения, и разрешение проверить) ясно и просто:

#!/usr/bin/env php 
<?php 
exec('wget --help', $output); 
var_dump($output); 

Если выход zomething как:

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." 
    ... 

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

+0

Большое спасибо за подробный ответ, это очень помогло! :) – dcmalk

0

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

Пример:

~ $ which wget 
/usr/bin/wget 
Смежные вопросы