В консоли команда работает а в PHP нет

12
lutskboy
На сайте с 22.11.2013
Offline
170
359

Привет

запускаю с консоли скрипт

node /var/www/www-root/data/www/site.net/deepl.js hellow

все отлично работает. выводит на екран перевод

если с php 

$res = shell_exec('node /var/www/www-root/data/www/site.net/deepl.js hellow');

var_dump($res);

null вывод

из за чего такое произошло? раньше все работало. на впс ничего не меняли

temniy
На сайте с 15.03.2008
Offline
235
#1
Как вариант - нет функции 
shell_exec

Смотрите ошибки php

⭐ Лучший хостинг от 4 евро, VPS от 6 евро, VPN недорого - разные локации - любые карты - скидки до 20% - https://fornex.com/c/ffi2e3/ru/services/
lutskboy
На сайте с 22.11.2013
Offline
170
#2
ошибок нет
Aisamiery
На сайте с 12.04.2015
Offline
293
#3
lutskboy #:
ошибок нет

попробуйте указать полный путь до ноды, с консоли вы запускаете от юзера у которого есть переменная PATH, но это как предположение

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
Сергей
На сайте с 10.07.2022
Offline
41
#4
Нет доступа на запуск

Проверить очень легко

В консоли whoami 
В php whoami > file или вывести через параметры exec
Юрист по недвижимости в Москве и Московской области https://pravozem.ru/ сопровождение сделок, регистрация домов, оформление строительства
W1
На сайте с 22.01.2021
Offline
283
#5
which node
Мой форум - https://webinfo.guru –Там я всегда на связи
temniy
На сайте с 15.03.2008
Offline
235
#6
lutskboy #:
ошибок нет

try catch пробовали?

temniy
На сайте с 15.03.2008
Offline
235
#7

Про shell_exec в мануале же написано - 


Эта функция может вернуть null  в двух случаях: если произошла ошибка или если выполняемая команда ничего не выводит. Не пользуйтесь этой функцией, для определения, успешно ли выполнилась команда. Вместо этого используйте exec(), так как она предоставляет возможность проверить код возврата.
lutskboy
На сайте с 22.11.2013
Offline
170
#8
temniy #:
Вместо этого используйте exec(),

пробовал. пустой массив

код у меня примерно такой

module.paths.push('/var/node/node_modules');

const text = decodeURIComponent(process.argv[2])

const puppeteer = require('puppeteer');


async function startParser(url) {

    console.log('это выводит');

        const browser = await puppeteer.launch({
            headless: true,
            ignoreHTTPSErrors: true,
            args: ['--no-sandbox']
        });

    console.log(browser); -- ето уже не выводит

    try {

        const page = await browser.newPage();

        page.setExtraHTTPHeaders({
                'Accept-Language' : 'ru-RU'
        })


        await page.setViewport({ width: 1300, height: 700 });

        await page.setUserAgent('Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4347.135 Safari/537.36');

        await page.setDefaultTimeout(20000);

        await page.goto(url);

        код код ...

        await page.evaluate((t) => {
            $('.lmt__source_textarea').val(t)
        }, text);


        код код код ...


        const data = {
            ok: result
        }

        console.log(JSON.stringify(data));

        await browser.close();


    } catch (error) {
        console.log(JSON.stringify({error:error}));
        await browser.close();
    }


}

startParser('https://www.deepl.com/translator');
lutskboy
На сайте с 22.11.2013
Offline
170
#9
Сергей #:
В консоли whoami 
В php whoami > file или вывести через параметры exec

var_dump(shell_exec('whoami > '.__FILE__)); ? так?

www-root выводит

temniy
На сайте с 15.03.2008
Offline
235
#10
lutskboy #:
-- ето уже не выводит

Значит ошибка выше, а этот кусок в try не обернут.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий