Проверка, установлена ​​ли программа с использованием PHP - PullRequest
1 голос
/ 28 мая 2009

Для конкретного сценария PHP, над которым я работаю, я собираюсь использовать системный вызов веб-браузера Lynx для преобразования HTML в простой текст и получения выходных данных:

$text = `lynx -dump stackoverflow.com`;

/*
#[1]Stack Overflow [2]RSS

[3]login | [4]about | [5]faq
____________________________
[6]logo homepage
  * [7]Questions
  * [8]Tags
  * [9]Users
  * [10]Badges
*/

Что бы я хотел сделать, это переключиться на другой метод в случае, если Lynx недоступен на сервере. Как проверить, существует ли программа в вашем PATH? Да, и она должна работать как в Windows, так и в Linux ...: p

Я не пишу SO скребок экрана, не волнуйтесь ...

Ответы [ 3 ]

3 голосов
/ 28 мая 2009

В Linux я бы использовал который

which linx

Нет представления об окнах. Вы, вероятно, можете увидеть, какое сообщение об ошибке вы получаете при вызове несуществующего приложения, я ожидаю, что оно очень постоянное
(Надеюсь, что это не синий экран, тогда вам придется каким-то образом выбрать цвет экрана :-D)

0 голосов
/ 28 мая 2009

Почему бы не использовать функции curl_* или fopen или даже fsockopen?

На самом деле, для дампа страницы достаточно file_get_contents (allow_url_fopen должен быть включен в вашей конфигурации php).

Прочтите соответствующие руководства на php.net, чтобы получить больше информации.

0 голосов
/ 28 мая 2009

Одним из возможных решений было бы использование функции popen. Попытайтесь открыть входную трубу от lynx. Если он возвращает false, вы можете использовать ваш запасной метод. Посмотрите документацию по PHP-функциям для подробностей и примеров реализации.

Я только что заметил, что это для Windows, поэтому мне придется использовать мой запасной вариант и сказать, что ваш пробег будет отличаться. Если вы хотите убедиться, что утилита lynx доступна, я бы порекомендовал вам убедиться, что она есть и вы (и ваш скрипт) знаете, где она находится. Нет ничего плохого в файле конфигурации, указывающем на расположение предпосылок для выполнения скрипта.

...