PHP PhantomJS

Библиотека для загрузки страниц через браузер из PHP кода. На данный момент уже не поддерживается (закрытие автором, интервью одного из авторов) и редко используется в новых проектах, но в «возрастных» попадается.

Так как эта библиотека больше не поддерживается, то начну этот пост с рекомендацией перейти на Selenium (selenium.dev).

Установка

Устанавливается через composer, пример конфигурации:

{
    "require": {
        "jonnyw/php-phantomjs": "4.*"
    },
    "config": {
        "bin-dir": "bin"
    },
    "scripts": {
        "post-install-cmd": [
            "PhantomInstaller\\Installer::installPhantomJS"
        ],
        "post-update-cmd": [
            "PhantomInstaller\\Installer::installPhantomJS"
        ]
    }
}

Сама установка:

composer install

Возможные проблемы

В composer.json в секции «scripts» располагается команда скачивания исполняемого файла PhantomJS:

"post-install-cmd": [
    "PhantomInstaller\\Installer::installPhantomJS"
],
"post-update-cmd": [
    "PhantomInstaller\\Installer::installPhantomJS"
]

В некоторых случаях, удобнее скачать требуемую версию вручную с официального сайта — phantomjs.org/download.html и положить её в требуемую директорию, а расположение исполняемого файла указать в PHP-коде вот так:

Для v3.*:
...
$client->setBinDir('absolute_path/bin');
$client->setPhantomJs('phantomjs.exe');
...
Для v4.*:
...
$client->getEngine()->setPath('absolute_path/bin/phantomjs.exe');
...

Таким образом можно избавиться от необходимости указания «bin-dir» в composer.json — эта настройка часто мешает при работе с некоторыми фреймворками.

Если вы используете фреймворк и не получается записать создаваемые PhantomJS данные на диск (отчеты, скриншеты и т.д.), то попробуйте сделать это в runtime директорию, куда сам фреймворк складываем временные данные.

У PhantomJS, иногда, появляются проблемы при использовании различных версий, если не заработала одна (например, из-за конфликта с другими библиотеками — так было в моём проекте с Symfony 3), то стоит попробовать другие, их список находится на GitHub.

Полезные ссылки

Добавить комментарий