PHPPhantomJS не загружает модуль PhantomJS

Я пытаюсь использовать PHP PhantomJS для загрузки страницы, но я получаю сообщение об ошибке

Fatal error:  Uncaught JonnyW\PhantomJs\Exception\ProcedureFailedException: Error when executing PhantomJs procedure - File does not exist or is not executable: bin/phantomjs in /Volumes/WWW ROOT/namechase/www/vendor/jonnyw/php-phantomjs/src/JonnyW/PhantomJs/Procedure/Procedure.php:138
Stack trace:
#0 /Volumes/WWW ROOT/namechase/www/vendor/jonnyw/php-phantomjs/src/JonnyW/PhantomJs/Client.php(162): JonnyW\PhantomJs\Procedure\Procedure->run(Object(JonnyW\PhantomJs\Http\Request), Object(JonnyW\PhantomJs\Http\Response))
#1 /Volumes/WWW ROOT/namechase/www/crawling.php(30): JonnyW\PhantomJs\Client->send(Object(JonnyW\PhantomJs\Http\Request), Object(JonnyW\PhantomJs\Http\Response))
#2 {main}
thrown in /Volumes/WWW ROOT/namechase/www/vendor/jonnyw/php-phantomjs/src/JonnyW/PhantomJs/Procedure/Procedure.php on line 138

Это происходит только на одном из моих тестовых доменов, а не на другом.

Код, который я запускаю на обоих доменах, идентичен, но не работает на одном из двух тестовых стендов. Оба работают на одной машине, просто используя разные виртуальные хосты, но только один возвращает ошибку.

require $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';

echo '<pre>';
use JonnyW\PhantomJs\Client;

$client = Client::getInstance();
$delay = 5; // 5 seconds

$request = $client->getMessageFactory()->createRequest('https://google.com', 'GET');
$request->setDelay($delay);
/**
* @see JonnyW\PhantomJs\Http\Response
**/
$response = $client->getMessageFactory()->createResponse();

// Send the request
$client->send($request, $response);

if($response->getStatus() === 200) {

// Dump the requested page content
echo $response->getContent();
}

Я пытался установить путь к phantomjs в composer.json использование файла

"config": {
"bin-dir": "/usr/local/bin"}

но это, кажется, не имеет никакого значения

0

Решение

Когда вы запускаете Composer для установки ваших пакетов, скрипт PhantomJS-Installer загрузит PhantomJS и установит его в /bin папка проекта.

Он никогда не приземлится в /usr/local/bin, кроме случаев, когда вы вручную устанавливаете или перемещаете его туда.

Вы получите следующее сообщение об ошибке: File does not exist or is not executable:
bin/phantomjs
,

Во-первых, я бы проверил, правильно ли загружен файл и установлен в bin папка. (Если файл не установлен в папку bin вашего проекта, сценарий установщика должен выдать ошибку при запуске Composer.)

Во-вторых, я бы проверил права доступа к файлам. Обычно установщик позаботится об этом, но просто посмотрите, если флаг исполняемого файла +x установлено.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]