1

Тема: Виконати зовнішню програму | Ubuntu

Ні в якій варіації не хоче працювати (з терміналу все ок)

exec('/usr/local/lib/node_modules/cordova/bin/cordova -v', $out); 

var_dump($out);

Натомість це працює

exec('php -v', $out); 

var_dump($out);

Ніби і з правами доступу чаклував.
У кого які підозри/пропозиції?

exec('node -v', $out); теж працює

2

Re: Виконати зовнішню програму | Ubuntu

VTrim написав:

Ніби і з правами доступу чаклував.

А ви спробуйте не чаклувати, а написати, які саме права на цю кордову виставлені.

3

Re: Виконати зовнішню програму | Ubuntu

koala написав:
VTrim написав:

Ніби і з правами доступу чаклував.

А ви спробуйте не чаклувати, а написати, які саме права на цю кордову виставлені.

Ну зараз 777 поставив -rwxrwxrwx

4

Re: Виконати зовнішню програму | Ubuntu

Не впевнений що це воно. Невпевнений що правильно зрозумів питання. Але може це  допоможе https://www.php.net/manual/en/function.system.php

5

Re: Виконати зовнішню програму | Ubuntu

pluszz написав:

Не впевнений що це воно. Невпевнений що правильно зрозумів питання. Але може це  допоможе https://www.php.net/manual/en/function.system.php

Я вже усі функції цього сімейства перепробував, одне й те ж.

6 Востаннє редагувалося leofun01 (28.06.2020 19:47:38)

Re: Виконати зовнішню програму | Ubuntu

Для ОС node_modules/cordova/bin/cordova не є програмою. Запускайте через npm

exec('npm /usr/local/lib/node_modules/cordova/bin/cordova -v', $out);

var_dump($out);
Подякували: koala, VTrim, plusxx, ostap34PHP4

7

Re: Виконати зовнішню програму | Ubuntu

leofun01 написав:

Для ОС node_modules/cordova/bin/cordova не є програмою. Запускайте через npm

exec('npm /usr/local/lib/node_modules/cordova/bin/cordova -v', $out);

var_dump($out);

Тоді воно просто видає версію NPM, а не cordova, тобто самого файлу воно взагалі не стосується

8

Re: Виконати зовнішню програму | Ubuntu

Дійсно, перепутав. Запускайте через node

exec('node /usr/local/lib/node_modules/cordova/bin/cordova -v', $out);

var_dump($out);

+ Перевірив, працює.

Подякували: koala, ostap34PHP2

9

Re: Виконати зовнішню програму | Ubuntu

leofun01 написав:

Дійсно, перепутав. Запускайте через node

exec('node /usr/local/lib/node_modules/cordova/bin/cordova -v', $out);

var_dump($out);

+ Перевірив, працює.

Та це я теж перевіряв, у тому то й справа, що з терміналу працює, а з php - ні.

Подякували: leofun011

10

Re: Виконати зовнішню програму | Ubuntu

Абсолютний шлях пробували ?

11

Re: Виконати зовнішню програму | Ubuntu

leofun01 написав:

Абсолютний шлях пробували ?

Так, це він і є.

Подякували: leofun011

12 Востаннє редагувалося koala (28.06.2020 20:06:27)

Re: Виконати зовнішню програму | Ubuntu

Як саме ви запускаєте скрипт?
Якщо з вебсервера - то якого, під яким користувачем?
Який у того користувача шел?
А якщо ви викличете скрипт вручну, зі свого шелу - працює?

І дуже вас прошу, не пишіть "не працює". Пишіть, що конкретно відбувається. "Нічого не виводиться, сценарій одразу припиняє виконання" - це не "не працює".

Подякували: leofun01, VTrim, ostap34PHP3

13

Re: Виконати зовнішню програму | Ubuntu

В мене виводить

.../index.php:4:
array (size=3)
  0 => string '' (length=0)
  1 => string 'You have been opted out of telemetry. To change this, run: cordova telemetry on.' (length=80)
  2 => string '9.0.0 (cordova-lib@9.0.1)' (length=25)

Перевірте з якими правами виконується кожна програма в ланцюжку, повинно працювати.

Подякували: koala, VTrim2

14

Re: Виконати зовнішню програму | Ubuntu

Чортівня якась, думав можливо справа у користувачі Apache (був www-data), змінив його на власного поточного користувача, перезапустив і перевірив через

echo exec('whoami');

все нормально.
А проблема лишається,пустий var_dump результату.
koala, зі свого все працює.

15

Re: Виконати зовнішню програму | Ubuntu

VTrim написав:

Чортівня якась, думав можливо справа у користувачі Apache (був www-data), змінив його на власного поточного користувача, перезапустив і перевірив через

echo exec('whoami');

все нормально.
А проблема лишається,пустий var_dump результату.
koala, зі свого все працює.

Ну то запускайте під своїм користувачем, раз там все працює.

16

Re: Виконати зовнішню програму | Ubuntu

koala написав:
VTrim написав:

Чортівня якась, думав можливо справа у користувачі Apache (був www-data), змінив його на власного поточного користувача, перезапустив і перевірив через

echo exec('whoami');

все нормально.
А проблема лишається,пустий var_dump результату.
koala, зі свого все працює.

Ну то запускайте під своїм користувачем, раз там все працює.

Ні, нормально тільки те, що я змінив користувача.
Але все одно не працює.

17

Re: Виконати зовнішню програму | Ubuntu

Здогадувався, що запуск скрипта з консолі таки запрацює. У браузері - ні.

php /var/www/html/service.php

Але у чому тоді різниця? Я хіба що помічаю затримку у відповіді, можливо запускається якийсь процес, який виконується тільки  в режимі PHP CLI.

18

Re: Виконати зовнішню програму | Ubuntu

VTrim написав:

можливо запускається якийсь процес, який виконується тільки  в режимі PHP CLI.

А в цих ваших лiнуксах нема якогось аналога procmon ?
Я просто не шарю , як там створюеться новий процесс , тому що у вiндi , наприклад, може бути багато нюансiв, i запуск CLI може вiдрiзнятись вiд модуля Апача. А тут хз.