172 похожих чатов

Всем привет. Запускаю пытаюсь запустить php скрипт из под другого

пользователя. Делаю вот так sudo -H -u myuser php myscript.php. Скрипт запускается и работает почти как надо. Но, при таком способе запуска не получается читать данные из fopen('php://stdin', 'r'), они до туда не доходят. Если запускаю просто php myscript.php, то чтение происходит нормально.
Я думаю, мне нужно как то перенаправить stdin в мой скрипт.
Как это сделать?

7 ответов

14 просмотров

sudo -S -H -u myuser php myscript.php

Dmitrii-Petiagov Автор вопроса
Alexey | Backend
sudo -S -H -u myuser php myscript.php

Не помогло. sudo если что сделан безпарольным для обоих юзеров участвующих в процессе. Вот таким образом myuser ALL=(ALL) NOPASSWD: ALL.

Dmitrii Petiagov
Не помогло. sudo если что сделан безпарольным для ...

Разрешите myuser доступ к каталогу файла, желательно назначить myuser владельцем каталога

sudo перенаправляет stdin дальше, так что проблема в чём-то другом. деталей не хватает. С чего ты решил что проблема именно в stdin?

слушай, это что-то странное. sudo передает stdin тому процессу, который ты запускаешь. $ seq 3 | sed s/2/4/ 1 4 3 $ seq 3 | sudo sed s/2/4/ 1 4 3 Может ли быть такое, что ты запускаешь из каталога, на который myuser не имеет прав? Попробуй запустить в strace и смотри внимательно, на что ему прав не хватило.

Dmitrii-Petiagov Автор вопроса

Полная картина такая. Есть астериск в нем диалплан. В диалплане вызывается EAGI скрипт exten => 1,n,EAGI(/srv/asterisk/CallHandler.sh, ${HANGUPCAUSE}). В CallHandler.sh вызывается php скрипт вот так php call_handler.php. В таком виде все работает, php шлет команды в астер и получает ответы от него. Но если я делаю в CallHandler.sh sudo -u myuser php call_handler.php то работать перестает. Если точнее отваливается дескриптор в котором аудио и поэтому скрипт падает. Что выяснил: При вызове php срипта через sudo -H -u myuser php call_handler.php в нем открывается дескриптор на чтение $stream = fopen('/dev/fd/3', 'r');, он открывается без ошибок. Потом происходит чтение из этого дескриптора fread($stream, 8180 * 8), при чтении возвращается false. Каких либо ошибок чтения дескриптора php скрип не генерирует. Скрипт просто завершает работу потому что не получает аудио. Как мне оживить этот дескриптор?

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта