Библиотека для загрузки страниц через браузер из 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.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.