Наилучшая практика использования fopen () или file_get_contents () для получения веб-страниц - PullRequest
4 голосов
/ 26 июня 2009

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

Учитывая, что на некоторых серверах, работающих под управлением PHP / Joomla, не включен cURL, я не хочу вызывать неожиданные ошибки.

Я смотрел на fopen() и file_get_contents(), и оба, похоже, имеют противоречивые взгляды друг на друга, с точки зрения которых будет работать с / без cURL.

Ответы [ 2 ]

4 голосов
/ 26 июня 2009

Они оба будут работать без скручивания, но вам нужно включить allow_url_fopen. Вы можете проверить это, выполнив phpinfo (). Однако это может повлиять на безопасность:

Должен ли я разрешить 'allow_url_fopen' в PHP?

Таким образом, чтобы захватить страницы, вы можете использовать fopen(), file_get_contents() или другой независимый HTTP-клиент, реализованный в PHP, такой как HttpClient которые могут функционировать без них.

1 голос
/ 09 января 2017
I read now and then on forums and chats that allow_url_fopen has to be enabled for Joomla to work properly. That's an "urban legend", leftover from old versions, but almost no one seems to actually test and confirm that fact. It seems the Docs are also wrong about it.

Joomla! CMS & Framework don't depend on "allow_url_fopen" being enabled. Period!

Quite the contrary, J! Framework has a very good and robust core subpackage HTTP, which supports "drivers" based on cURL, streams and sockets. Which means even with fopen() URL wrappers ("streams" driver) disabled altogether ("allow_url_fopen = 0"), any extensions implementing HTTP subpackage still has "cURL" and "sockets" driver available. For example, Joomla Update component will, in case "allow_url_fopen" is disabled, fall back on using cURL wrapper (given cURL PHP extension is enabled).
...