Библиотека для загрузки страниц через браузер из 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'); ...
... $client->getEngine()->setPath('absolute_path/bin/phantomjs.exe'); ...
Таким образом можно избавиться от необходимости указания «bin-dir» в composer.json — эта настройка часто мешает при работе с некоторыми фреймворками.
Если вы используете фреймворк и не получается записать создаваемые PhantomJS данные на диск (отчеты, скриншеты и т.д.), то попробуйте сделать это в runtime директорию, куда сам фреймворк складываем временные данные.
У PhantomJS, иногда, появляются проблемы при использовании различных версий, если не заработала одна (например, из-за конфликта с другими библиотеками — так было в моём проекте с Symfony 3), то стоит попробовать другие, их список находится на GitHub.
Полезные ссылки
- github.com/jonnnnyw/php-phantomjs;
- jonnnnyw.github.io/php-phantomjs;
- stackoverflow.com/questions/39798937/php-phantomjs-unable-to-make-screenshot-directory-writable;
- github.com/jonnnnyw/php-phantomjs/issues/25;
- stackoverflow.com/questions/32015599/php-phantomjs-with-laravel-file-does-not-exist-or-is-not-executable-bin-phanto;
- kaplunenko.name/webbrowser-automation-selenium-facebook-webdriver-php-how-to-make-screenshot.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.