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

12
lutskboy
На сайте с 22.11.2013
Offline
173
371

Привет

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

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
236
#1
Как вариант - нет функции 
shell_exec

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

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

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

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

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

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

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

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

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


Эта функция может вернуть null  в двух случаях: если произошла ошибка или если выполняемая команда ничего не выводит. Не пользуйтесь этой функцией, для определения, успешно ли выполнилась команда. Вместо этого используйте exec(), так как она предоставляет возможность проверить код возврата.
lutskboy
На сайте с 22.11.2013
Offline
173
#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
173
#9
Сергей #:
В консоли whoami 
В php whoami > file или вывести через параметры exec

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

www-root выводит

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

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

12

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