msgget: Отказано в доступе

Я пытаюсь запустить исполняемый файл Linux из php-скрипта (то есть sendMsg.php).
Исполняемый файл (т. Е. Msgr) использует очередь SYS V msg для связи с другим запущенным процессом.

sendMsg.php

<?php
exec('./msgr 0987654321 1234 2>&1', $output, $return_var);

var_dump($return_var);
var_dump($output);
?>

msgr.c

  int msqid;
key_t key;

if ((key = ftok("/usr/local/bin/app", 'k')) == -1) {
perror("ftok");
exit(1);
}

if ((msqid = msgget(key, 0644)) == -1) {
perror("msgget");
exit(1);
}

Когда я запускаю скрипт из терминала, он работает нормально, но когда я запускаю его из браузера (через вызов ajax или иным образом), я получаю сообщение об ошибке:

msgget: Permission denied

Похоже, некоторые проблемы с правами доступа к файлам. Как я могу решить это?

1

Решение

Возможно, вы захотите указать, кто является владельцем, выполняющим выполнение.
Ссылаться на PHP.net

Владелец должен быть www-data, но это может быть только для систем linux-debian / ubuntu.

Иначе судо чоун
и sudo chmod должен работать для вашей проблемы

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]