Почему-то не работает 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
, но это ничего не изменило. В чём может быть проблема?
В PHP можно выполнять shell команды с помощью system()
. Попробуйте вызвать скрипт из system()
как из обычного терминала. Подробнее прочитайте про функцию. http://php.net/manual/ru/function.system.php
Проблема решилась. Прописал команду chown -R www-data:www-data
на папку, где лежал все файлы снапшотов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В Visual Studio Code отказывается работать emmet в php файлахКогда пытаюсь написать что нибудь с помощью сокращений, то всё просто отваливается
Доброе время суток пытаюсь сделать рендер блока в месте шаблонизатором blade laravel получаю большую ошибку пример кода
ЗдравствуйтеЕсть сайт на Wordpress, установлен плагин Advanced Custom Fields