Не работает nodejs скрипт, запущенный через exec в php

175
07 апреля 2018, 20:12

Почему-то не работает NodeJS скрипт, вызванный из php посредством exec. Вызываю скрипт таким образом:

exec('cd /var/www/developer/flaut/dev; node doSingleSnapshot.js ' . urlencode('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']));

Содержание скрипта doSingleSnapshot.js:

var path = require("path");
var util = require("util");
var htmlSnapshots = require("html-snapshots");
let uri = decodeURIComponent(process.argv[2]);
htmlSnapshots.run({
    input: "array",
    source: [uri],
    outputDir: '/var/www/production/flaut/snapshots/',
    pollInterval: 3000,
    timeout: 250000,
    phantomjsOptions: [
        "--ssl-protocol=any",
        "--ignore-ssl-errors=true"
    ]
});

Когда пытаюсь открыть php-скрипт, запускающий exec(), то он просто висит и через 25 секунд выдаёт ошибку 504 Gateway Timed-Out; Если запускать Node-скрипт руками из консоли - он работает, без ошибок. Думал, что проблема в правах и сделал chown -R www-data:www-data doSingleSnapshot.js, но это ничего не изменило. В чём может быть проблема?

Answer 1

В PHP можно выполнять shell команды с помощью system(). Попробуйте вызвать скрипт из system() как из обычного терминала. Подробнее прочитайте про функцию. http://php.net/manual/ru/function.system.php

Answer 2

Проблема решилась. Прописал команду chown -R www-data:www-data на папку, где лежал все файлы снапшотов.

READ ALSO
Emmet не работает в php файлах

Emmet не работает в php файлах

В Visual Studio Code отказывается работать emmet в php файлахКогда пытаюсь написать что нибудь с помощью сокращений, то всё просто отваливается

307
react + laravel ошибка в ренедере

react + laravel ошибка в ренедере

Доброе время суток пытаюсь сделать рендер блока в месте шаблонизатором blade laravel получаю большую ошибку пример кода

196
Обновление поля ACF

Обновление поля ACF

ЗдравствуйтеЕсть сайт на Wordpress, установлен плагин Advanced Custom Fields

162
Не работает php на LAMP

Не работает php на LAMP

Установил LAMP на ubuntu 1404

222